【问题标题】:What does the FFT data in the Web Audio API correspond to?Web Audio API 中的 FFT 数据对应什么?
【发布时间】:2013-01-25 04:55:51
【问题描述】:

我已经使用来自 Analyzer 节点的 FFT 数据,使用 Web Audio API 中的 getByteFrequencyData 方法来创建频谱可视化工具,如下所示:

在这种情况下,我有 256 个数据箱。这里面的数字到底对应什么?是不是每个频率分量的分贝级别。如果是这样,我怎么知道每个 bin 的频率值对应什么?

我想知道这样我就可以尝试构建图形 eq 并且想知道在哪些点上指示过滤器频带。理想情况下,我想表示从 20Hz 到 20kHz 的频率,并相应地绘制它们之间的间隔。

感谢您的帮助。

【问题讨论】:

    标签: audio fft html5-audio web-audio-api


    【解决方案1】:

    yes,getByteFrequencyData 产生一个介于 0 和 255 之间的标准化数组。 (它将数据复制到传入的数组中)。

    频带被平均分割,因此数组的每个元素 N 对应于:

    N * samplerate/fftSize
    

    所以,第一个 bin 是 0。
    并且,假设采样率为 44100,<analyzerNode>.fftSize 为 512,则第二个将是:86.13 Hz,依此类推...

    dspSO 上,您会发现这两个问题和答案很有用:

    请注意,您的采样数据长度是<analyzerNode>.fftSize 的一半,有效地将频率范围限制为采样率的一半。

    【讨论】:

    • getByteFrequencyData 不返回任何内容;相反,它将频率数据值 (0-255) 复制到 您作为参数传递给方法的无符号数组(JavaScript 中的 Uint8Array())。 W3C Draft – Web Audio API – getByteFrequencyData。以防万一有人被抓到试图使用此方法调用的某种形式的返回值...
    • 摇滚吧!不要试图挑剔:]
    • BTW 默认采样率可能不同。例如。对我来说是 48000。应该检查 audioContext.sampleRate 的某个值。
    • 对于任何想了解更多信息的人来说,采样率的一半称为奈奎斯特频率。
    • 0Hz 确实是直流偏移 - 因此,如果您从原始信号中减去它,该数字将使该信号为零均值。它不是通常意义上的音频幅度。
    【解决方案2】:

    对于 256 个 bin,每个 bin 的间隔约为 86 Hz(44100 kHz 采样率 / fftSize,其中 fftSize 是 bin 数量的两倍)。所以你从零开始,然后以 86 Hz 的增量递增。

    bin 中的实际值只是表示每个频率在信号中存在的程度(即频率有多“响亮”)。

    【讨论】:

    • 网络音频 api 返回的 bin 数量是 fftSize 的一半。所以,恕我直言,你应该除以bins.length * 2 或直接使用fftSize 更好,另见我的回答。
    【解决方案3】:

    TL;DR 我想它会产生 dBu


    如果有人,就像我不是音频工程师一样,正在努力为getByteFrequencyData/getFloatFrequencyData 的结果找出合适的比例(它的实际含义),这是我的发现:

    • 首先查看此web audio spec 在那里我们可以找到从frequency datadB value 本身的方程式

    Y[k]=20log10X^[k]

    并且看到dBu计算看起来非常相似

    • 之前我看过this video to understand the basics

    • 所以建立一个标度以将 dB 显示为 dBu,零位于 -4dBu(我希望这是有道理的)

    • 现在尝试使用适当的流来验证此比例。所以我可以产生-24 dBFS(-18dBFS = +4dBu,这应该是一个标准?)信号应该是-18 + -24 + 4 - -4 = -34 在上面的比例。这就是我最终得到的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      • 2015-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-26
      • 1970-01-01
      相关资源
      最近更新 更多