Преобразование 8 кГц мулав в PCM 16 кГц - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь получить потоковый разговор от Twilio в 8kHz mulaw, и я хочу преобразовать его в 16kHz PCM для некоторой обработки (которая не поддерживает формат 8kHz mulaw), я попробовал этот метод, но безуспешно:
- преобразовать полезная нагрузка строки в буфер base64.
- преобразовать буфер в Uint8Array с этим пакетом: buffer-to-uint8array .
- преобразовать Uint8Array в Int16Array с этим пакетом: alawmulaw .
- затем используйте библиотеку wav для записи результатов.
Я все еще не могу получить действительный аудиофайл после этого процесса. Может кто-нибудь сказать мне, что я делаю неправильно? или направлять меня к этому?

1 Ответ

2 голосов
/ 23 апреля 2020

Мне повезло, используя библиотеку 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;

Надеюсь, это поможет!

...