2

如何OfflineAudioContext.startRendering()输出AudioBuffer包含我选择的位深度(16 位或 24 位)的?我知道我可以使用 轻松设置输出的采样率AudioContext.sampleRate,但是如何设置位深度?

我对音频处理的理解非常有限,所以可能没有我想的那么容易。

编辑#1:

实际上,AudioContext.sampleRate它是只读的,所以如果您知道如何设置输出的采样率,那也很棒。

编辑#2:

我猜采样率是在编码的 WAV 中的通道数之后插入的(在DataView

4

1 回答 1

5

您不能直接执行此操作,因为 WebAudio 仅适用于浮点值。你必须自己做这件事。基本上从离线上下文中获取输出并将每个样本乘以 32768(16 位)或 8388608(24 位)并四舍五入为整数。这假设上下文的输出位于 -1 到 1 的范围内。如果不是,则必须进行额外的缩放。最后,您可能希望将最终结果除以 32768 (8388608) 以获得浮点数。这取决于最终的应用程序是什么。

对于编辑#1,答案是当您构造 时OfflineAudioContext,您必须指定采样率。将其设置为您想要的速率。不确定AudioContext.sampleRate与此有什么关系。

对于编辑#2,没有足够的信息来回答,因为你没有说是什么DataView

于 2017-02-03T15:54:10.433 回答