【问题标题】:Converting 8kHz mulaw to PCM 16kHz将 8kHz mulaw 转换为 PCM 16kHz
【发布时间】:2020-04-20 13:23:11
【问题描述】:

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

【问题讨论】:

  • 我会先从命令行得到这个工作,然后在你的代码中实现......要么使用 ffmpeg 或 sox 或名为 Audacity 的音频工作站......使用这些工具之一直接转换文件在 8kHz mulaw 到您的 16kHz PCM ...这样做将确认您的输入文件是正常的,并为您提供一个有效的输出文件,以便稍后反弹您的代码的输出文件
  • 我不能使用 audacity 或 ffmpeg,因为我需要实时处理,我可以使用 ffmpeg 转换文件但不适合我的需要,所以我正在寻找一种实时执行此操作的方法(接收数据时)
  • 我上面的建议不是为了解决你的问题而是让它更容易
  • 您好,我已经尝试过这个解决方案,谢谢!

标签: node.js audio twilio twilio-twiml twilio-programmable-voice


【解决方案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;

希望有帮助!

【讨论】:

  • @SalahEddineBachirCherif 这个解决方案对你有用吗?甚至我也想将 ULAW 格式转换为 WAV
  • @u_pendra,没试过这个,我们用了另一种解决方案,我们找到了一个兼容的文件头,我们做了我们的转换器
  • @SalahEddineBachirCherif 你能分享一下解决方案吗?
  • @u_pendra 我们从这个解决方案开始,stackoverflow.com/a/58959534/10794312
  • 谢谢,我会调查的@SalahEddineBachirCherif
猜你喜欢
  • 2020-05-03
  • 1970-01-01
  • 1970-01-01
  • 2015-11-08
  • 2014-08-18
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多