将 8kHz mulaw 转换为 PCM 16kHz

Sal*_*rif 0 audio node.js twilio twilio-twiml twilio-programmable-voice

我尝试以 8kHz mulaw 格式接收来自 Twilio 的对话流,并且想将其转换为 16kHz PCM 进行某些处理(不支持 8kHz mulaw 格式),我尝试了此方法,但没有成功:
- 将字符串有效负载转换为 base64 缓冲区。
- 使用此包将缓冲区转换为 Uint8Array:buffer-to-uint8array
- 使用以下包将 Uint8Array 转换为 Int16Array:alawmulaw
- 然后使用wav库写入结果。
按照此过程,我仍然无法获取有效的音频文件,有人可以告诉我我做错了什么吗?或指导我实现这一目标?

Cra*_*nis 7

我使用 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;
Run Code Online (Sandbox Code Playgroud)

希望有帮助!