diff --git a/package.json b/package.json index 535372be..a6eb2470 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,7 @@ "@prisma/client": "^6.1.0", "@sentry/node": "^8.47.0", "amqplib": "^0.10.5", + "audio-decode": "^2.2.3", "axios": "^1.7.9", "baileys": "github:EvolutionAPI/Baileys", "class-validator": "^0.14.1", diff --git a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts index dbdd01d0..0acdd749 100644 --- a/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts +++ b/src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts @@ -3024,6 +3024,8 @@ export class BaileysStartupService extends ChannelStartupService { inputAudioStream.end(audioBuffer); } + const isLpcm = isURL(audio) && /\.lpcm($|\?)/i.test(audio); + return new Promise((resolve, reject) => { const outputAudioStream = new PassThrough(); const chunks: Buffer[] = []; @@ -3041,7 +3043,14 @@ export class BaileysStartupService extends ChannelStartupService { ffmpeg.setFfmpegPath(ffmpegPath.path); - ffmpeg(inputAudioStream) + let command = ffmpeg(inputAudioStream); + + if (isLpcm) { + this.logger.verbose('Detected LPCM input – applying raw PCM settings'); + command = command.inputFormat('s16le').inputOptions(['-ar', '24000', '-ac', '1']); + } + + command .outputFormat('ogg') .noVideo() .audioCodec('libopus')