Skip to content

Commit fac3cff

Browse files
committed
feat(audio): add waveform visualization for PTT voice messages
- Add audio-decode library for audio buffer analysis - Implement getAudioDuration() to extract duration from audio - Implement getAudioWaveform() to generate 64-value waveform array - Normalize waveform values to 0-100 range for WhatsApp compatibility - Change audio bitrate from 128k to 48k per WhatsApp PTT requirements - Add Baileys patch to prevent waveform overwrite - Increase Node.js heap size for build to prevent OOM Fixes #1086
1 parent 3454bec commit fac3cff

File tree

5 files changed

+369
-4
lines changed

5 files changed

+369
-4
lines changed

Dockerfile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ WORKDIR /evolution
1212
COPY ./package*.json ./
1313
COPY ./tsconfig.json ./
1414
COPY ./tsup.config.ts ./
15+
COPY ./patches ./patches
1516

1617
RUN npm ci --silent
1718

19+
RUN npx patch-package
20+
1821
COPY ./src ./src
1922
COPY ./public ./public
2023
COPY ./prisma ./prisma
@@ -28,7 +31,7 @@ RUN chmod +x ./Docker/scripts/* && dos2unix ./Docker/scripts/*
2831

2932
RUN ./Docker/scripts/generate_database.sh
3033

31-
RUN npm run build
34+
RUN NODE_OPTIONS="--max-old-space-size=2048" npm run build
3235

3336
FROM node:24-alpine AS final
3437

package-lock.json

Lines changed: 261 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
"db:studio": "node runWithProvider.js \"npx prisma studio --schema ./prisma/DATABASE_PROVIDER-schema.prisma\"",
2121
"db:migrate:dev": "node runWithProvider.js \"rm -rf ./prisma/migrations && cp -r ./prisma/DATABASE_PROVIDER-migrations ./prisma/migrations && npx prisma migrate dev --schema ./prisma/DATABASE_PROVIDER-schema.prisma && cp -r ./prisma/migrations/* ./prisma/DATABASE_PROVIDER-migrations\"",
2222
"db:migrate:dev:win": "node runWithProvider.js \"xcopy /E /I prisma\\DATABASE_PROVIDER-migrations prisma\\migrations && npx prisma migrate dev --schema prisma\\DATABASE_PROVIDER-schema.prisma\"",
23+
"postinstall": "patch-package",
2324
"prepare": "husky"
2425
},
2526
"repository": {
@@ -147,6 +148,7 @@
147148
"eslint-plugin-simple-import-sort": "^12.1.1",
148149
"husky": "^9.1.7",
149150
"lint-staged": "^16.1.6",
151+
"patch-package": "^8.0.1",
150152
"prettier": "^3.4.2",
151153
"tsconfig-paths": "^4.2.0",
152154
"tsx": "^4.20.5",

patches/baileys+7.0.0-rc.6.patch

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
diff --git a/node_modules/baileys/lib/Utils/messages.js b/node_modules/baileys/lib/Utils/messages.js
2+
index 17b05b8..782efb4 100644
3+
--- a/node_modules/baileys/lib/Utils/messages.js
4+
+++ b/node_modules/baileys/lib/Utils/messages.js
5+
@@ -132,7 +132,7 @@ export const prepareWAMessageMedia = async (message, options) => {
6+
}
7+
const requiresDurationComputation = mediaType === 'audio' && typeof uploadData.seconds === 'undefined';
8+
const requiresThumbnailComputation = (mediaType === 'image' || mediaType === 'video') && typeof uploadData['jpegThumbnail'] === 'undefined';
9+
- const requiresWaveformProcessing = mediaType === 'audio' && uploadData.ptt === true;
10+
+ const requiresWaveformProcessing = mediaType === 'audio' && uploadData.ptt === true && typeof uploadData.waveform === 'undefined';
11+
const requiresAudioBackground = options.backgroundColor && mediaType === 'audio' && uploadData.ptt === true;
12+
const requiresOriginalForSomeProcessing = requiresDurationComputation || requiresThumbnailComputation;
13+
const { mediaKey, encFilePath, originalFilePath, fileEncSha256, fileSha256, fileLength } = await encryptedStream(uploadData.media, options.mediaTypeOverride || mediaType, {

0 commit comments

Comments
 (0)