Я пытаюсь получить поток разговора из Twilio в Mulaw 8 кГц, и я хочу преобразовать его в PCM 16 кГц для некоторой обработки (который не поддерживает формат Mulaw 8 кГц), я попробовал этот метод, но безуспешно:
- преобразовать полезную нагрузку строки в base64 buffer.
- преобразуйте буфер в Uint8Array с помощью этого пакета: buffer-to-uint8array.
- преобразовать Uint8Array в Int16Array с помощью этого пакета: alawmulaw.
- затем используйте библиотеку wav для записи результатов.
Я все еще не могу получить действительный аудиофайл после этого процесса. Может ли кто-нибудь сказать мне, что я делаю не так? или помочь мне добиться этого?
Преобразование Mulaw 8 кГц в PCM 16 кГц
comment
Я бы сначала заставил это работать из командной строки, а затем реализовать в вашем коде ... либо использовать ffmpeg или sox, либо звуковую рабочую станцию под названием Audacity ... использовать один из этих инструментов для прямого преобразования файла с 8 кГц mulaw в ваш PCM 16 кГц. .. это подтвердит, что ваш входной файл в порядке, и предоставит вам действительный выходной файл, чтобы впоследствии отразить выходной файл вашего кода против
- person Scott Stensland   schedule 21.04.2020
comment
Я не могу использовать Audacity или ffmpeg, потому что мне это нужно в реальном времени, я мог бы преобразовать файл с помощью ffmpeg, но это не соответствует моим потребностям, поэтому я ищу способ сделать это в реальном времени (при получении данных)
- person Salah Eddine Bachir Cherif   schedule 21.04.2020
comment
Мое предложение, приведенное выше, не для решения вашей проблемы, чтобы облегчить
- person Scott Stensland   schedule 21.04.2020
comment
Здравствуйте, я уже пробовал это решение, спасибо!
- person Salah Eddine Bachir Cherif   schedule 21.04.2020
Ответы (1)
Мне повезло с использованием библиотеки WaveFile (https://www.npmjs.com/package/wavefile)
const wav = new WaveFile();
wav.fromScratch(1, 8000, '8m', Buffer.from(payload, "base64"));
wav.fromMuLaw();
// You can resample.
wav.toSampleRate(16000);
// You can write this straight to a file (will have the headers)
const results = wav.toBuffer();
// Or you can access the samples without the WAV header
const samples = wav.data.samples;
Надеюсь, это поможет!
person
Craig Dennis
schedule
23.04.2020
Спасибо!! Я попробую
- person Salah Eddine Bachir Cherif; 23.04.2020
@SalahEddineBachirCherif это решение сработало для вас ?, даже я также хочу преобразовать формат ULAW в WAV
- person u_pendra; 08.06.2021