2017-08-08 80 views
0

我试图让使用Web音频的小故障免费麦克风音频。根据这个答案:https://stackoverflow.com/a/40812061Web Audio MediaRecorder - 如何重新采样Ogg到16kHz?

唯一的方法就是使用MediaRecorder API。在Chrome中,MediaRecorder API支持的唯一音频格式是Ogg。当试图捕捉麦克风输入时,我得到了48kHz的ogg音频。有什么方法可以使用网络音频API将其重新采样到16kHz,而不会引入任何音频故障?

我试图近乎实时地流式传输音频,所以我无法等待捕获它并在任何批处理作业中脱机处理它。

回答

1

以下是一种可能的方法。我没有真的尝试过,但它可能工作。

  • 创建长度为1且所需采样率的离线音频上下文c
  • MediaRecorder中获取块(或一组块)
  • 将块转换为Blob
  • Blob转换为ArrayBuffer
  • 请致电c.decodeAudioData与您的ArrayBuffer。输出将是所需采样率下的解码音频数据。
+0

感谢这个建议 - 我终于尝试了这个,我发现从MediaRecorder的Ogg数据的第一个数据包将重新采样到16kHz,但后来的数据包不会。原因似乎是decodeAudioData需要完整的音频文件,这意味着它不适用于我的流媒体用例。 – Baron