You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的范围对应音频信号的最大正负振幅,数值的绝对值越大,代表该时间点的音频音量(响度)越高。
  • 对应时间长度的计算:
    这段波形数据对应的时间跨度由两个参数决定:
    1. Waveform实例的size参数(默认值为1024,即你当前拿到的数组长度)
    2. 浏览器音频上下文的采样率(通常默认是44100Hz或48000Hz)
      计算公式为:时间长度 = 数组长度 / 采样率
      举个例子:用默认的1024长度和44100Hz采样率计算,得到的时间长度约为1024/44100≈0.023秒(23毫秒),也就是每次调用getValue()拿到的是最近23毫秒内的音频采样快照。

内容的提问来源于stack exchange,提问作者Hoff

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 17:01:09