【问题标题】:Web Audio MediaRecorder - How to resample Ogg to 16kHz?Web Audio MediaRecorder - 如何将 Ogg 重新采样到 16kHz?
【发布时间】:2018-01-16 09:17:46
【问题描述】:

我正在尝试使用 Web Audio 获得无故障的麦克风音频。根据这个答案:https://stackoverflow.com/a/40812061

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

我正在尝试近乎实时地流式传输音频,因此我迫不及待地捕获所有音频并在任何类型的批处理作业中离线处理它。

【问题讨论】:

    标签: javascript web-audio-api ogg


    【解决方案1】:

    这是一种可能的方法。我还没有真正尝试过,但它可能会起作用。

    • 创建长度为 1 和所需采样率的离线音频上下文 c
    • MediaRecorder 获取一个块(或一组块)
    • 将块转换为Blob
    • Blob 转换为ArrayBuffer
    • 使用您拥有的ArrayBuffer 致电c.decodeAudioData。输出将以所需采样率解码音频数据。

    【讨论】:

    • 感谢您的建议 - 我终于开始尝试这个,我发现来自 MediaRecorder 的第一个 Ogg 数据包将重新采样到 16kHz,但后续数据包不会。原因似乎是 decodeAudioData 需要完整的音频文件,这意味着它不适用于我的流式用例。
    猜你喜欢
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多