我使用了来自 Analyzer 节点的 FFT 数据,使用getByteFrequencyDataWeb Audio API 中的方法来创建频谱可视化器,如下所示:

在这种情况下,我有 256 个数据箱。这里面的数字到底对应什么?是不是每个频率分量的分贝级。如果是这样,我怎么知道每个 bin 的频率值对应于什么?
我想知道,所以我可以尝试构建图形 eq,因此想知道在哪些点指示滤波器频带。理想情况下,我想表示从 20Hz 到 20kHz 的频率,并相应地绘制它们之间的间隔。
谢谢你的帮助。
我使用了来自 Analyzer 节点的 FFT 数据,使用getByteFrequencyDataWeb Audio API 中的方法来创建频谱可视化器,如下所示:

在这种情况下,我有 256 个数据箱。这里面的数字到底对应什么?是不是每个频率分量的分贝级。如果是这样,我怎么知道每个 bin 的频率值对应于什么?
我想知道,所以我可以尝试构建图形 eq,因此想知道在哪些点指示滤波器频带。理想情况下,我想表示从 20Hz 到 20kHz 的频率,并相应地绘制它们之间的间隔。
谢谢你的帮助。
是的,getByteFrequencyData会产生一个介于 0 到 255 之间的标准化值数组。(它将数据复制到传入的数组中)。
频带被平均分割,因此数组的每个元素 N 对应于:
N * samplerate/fftSize
因此,第一个 bin 为 0。
假设采样率为 44100,a<analyzerNode>.fftSize为 512,则第二个 bin 为:86.13 Hz,依此类推...
请注意,您的 sampledata 的长度是 的一半<analyzerNode>.fftSize,有效地将频率范围限制为采样率的一半。
对于 256 个 bin,每个 bin 的间隔约为 86 Hz(44100 kHz 采样率 / fftSize,其中 fftSize 是 bin 数量的两倍)。所以你从零开始,然后以 86 Hz 的增量上升。
箱中的实际值只是表示每个频率在信号中存在多少(即频率有多“响亮”)。
TL;DR 我想它会产生 dBu
如果有人,就像我不是一名音频工程师一样,努力试图找出一个合适的尺度(它的实际含义)来自getByteFrequencyData/getFloatFrequencyData这里的结果是我的发现:
frequency data到dB value自身的方程Y[k]=20log10X^[k]
以前我看过这个视频以了解基础知识
现在尝试用适当的流来验证这个比例。所以我可以产生-24 dBFS(-18dBFS = +4dBu,这应该是一个标准?)信号应该是 -18 + -24 + 4 - -4 = -34 在上面的比例。这就是我最终得到的
