如何以特定位深度渲染?

max*_*pre 2 audio-processing audiocontext web-audio-api

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

我对音频处理的理解非常有限,所以也许它并不像我想象的那么容易。

编辑#1:

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

编辑#2:

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

Ray*_*Toy 6

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

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

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