我一直在尝试使用p5声音进行简单的FFT,然后直观地绘制光谱带。
我注意到的一件事是几乎所有音轨中的低频率都显得非常高,而高频似乎是静音。
因此,例如,当仅使用16个频段进行FFT时,大多数声音仅发生在前4个频段上,并且似乎其他频率(较高频率)被报告为“静音”或过于安静。
你可以在这个例子中看到这样的例子:http://p5js.org/reference/#/p5.FFT即使频率相对较高,频谱的右侧也会完全停止,据报道,较低的频率是最高的甚至很难你在这里更多中/高音的声音。
似乎必须对FFT结果应用某种变换才能获得与我们听到的匹配更好的视觉表示?
我错过了什么吗?我的意思是,我肯定错过了一些关于FFT如何工作以及如何报告频率的基本信息,但我的意思是,这是一个有共同解决方案的常见问题吗?
答案 0 :(得分:1)
人类听觉系统本质上基本上是对数基数-2 - 每个后续octave的带宽是下一个的两倍。因此,人类可感知声音的绝大部分频率内容都低于1kHz
,信号功率在较高频率的FFT频段之间传播得更薄 - 这正是图表所示。
Spectrograms - 这是我怀疑你期望在这里看到的 - 在x轴上用log(F)
绘制,在Y轴上以dB为单位绘制信号功率。您的代码绘制两个轴线性的图形。
此外,由于您没有专门将window function应用于用于计算FFT的样本,因此默认情况下您得到的是rectangular window - 这是此应用程序中的一个不错的选择。