Web Audio MediaRecorder - 如何重新采样Ogg到16kHz?
问题描述:
我试图让使用Web音频的小故障免费麦克风音频。根据这个答案:https://*.com/a/40812061Web Audio MediaRecorder - 如何重新采样Ogg到16kHz?
唯一的方法就是使用MediaRecorder API。在Chrome中,MediaRecorder API支持的唯一音频格式是Ogg。当试图捕捉麦克风输入时,我得到了48kHz的ogg音频。有什么方法可以使用网络音频API将其重新采样到16kHz,而不会引入任何音频故障?
我试图近乎实时地流式传输音频,所以我无法等待捕获它并在任何批处理作业中脱机处理它。
答
以下是一种可能的方法。我没有真的尝试过,但它可能工作。
- 创建长度为1且所需采样率的离线音频上下文
c
。 - 从
MediaRecorder
中获取块(或一组块) - 将块转换为
Blob
。 - 将
Blob
转换为ArrayBuffer
。 - 请致电
c.decodeAudioData
与您的ArrayBuffer
。输出将是所需采样率下的解码音频数据。
感谢这个建议 - 我终于尝试了这个,我发现从MediaRecorder的Ogg数据的第一个数据包将重新采样到16kHz,但后来的数据包不会。原因似乎是decodeAudioData需要完整的音频文件,这意味着它不适用于我的流媒体用例。 – Baron