Tone.Waveform.getValues()返回值含义及时间范围技术咨询
使用Tone.js获取音频波形的疑问
我正在尝试用Tone.js绘制音频波形,代码实现如下:
// setup const wave = new Tone.Waveform() Tone.Master.connect(wave) // later wave.getValue() // 返回一个长度为1024的数组,数值范围在-1到1之间
代码运行正常,但我没法准确理解这些返回值的含义。我猜测它们是音频随时间变化的振幅,但如果是这样,这些数据对应的是过去多长时间的内容?
或许我的理解完全错误,希望能得到解答!
相关文档翻译
获取音频源的波形数据。返回长度为
size的Float32Array类型波形数据,数值范围在-1到1之间。
问题解答
- 返回值的含义:你的猜测完全正确,
wave.getValue()返回的就是音频信号在连续时间点上的振幅采样值,-1到1的范围对应音频信号的最大正负振幅,数值的绝对值越大,代表该时间点的音频音量(响度)越高。 - 对应时间长度的计算:
这段波形数据对应的时间跨度由两个参数决定:Waveform实例的size参数(默认值为1024,即你当前拿到的数组长度)- 浏览器音频上下文的采样率(通常默认是44100Hz或48000Hz)
计算公式为:时间长度 = 数组长度 / 采样率
举个例子:用默认的1024长度和44100Hz采样率计算,得到的时间长度约为1024/44100≈0.023秒(23毫秒),也就是每次调用getValue()拿到的是最近23毫秒内的音频采样快照。
内容的提问来源于stack exchange,提问作者Hoff
相关产品推荐
相关产品推荐

