在OS X上使用veclib进行频率分析

3
2个回答

2

每个FFT频段的中心频率已由Paul R.回答。但是请注意,您想要分析的音频中的精确频率可能不在任何FFT频段的中心。因此,您可能正在寻找使用FFT的频率估计算法,或者针对包含音乐或语音的音频的音高检测/估计方法,这与频率估计不同。


2

在进行FFT后,您需要获取每个复杂输出频段的幅度

magnitude = sqrt(re[i]*re[i] + im[i]*im[i]);

频率与bin索引i相关:

freq = i * Fs / N;

其中 Fs 表示采样率(赫兹),N 表示 FFT 大小。

如果你只是想寻找单一频率,那么找到具有最大幅度的频率点的索引,然后使用上述公式将该索引转换为频率。请注意,您只需要检查从 1 到 N/2-1 的频率点。


好的,那很有道理。至于大小,这是在0到1的范围内吗?还是像分贝一样表示功率或压力的表达式? - kernelK
1
在这种情况下,数量级并不太重要,因为你所寻找的只是一个峰值。一般来说,对于幅度为1的输入信号,FFT频率分量的幅度将具有N的值,其中N是FFT的大小。当你关心实际值时,通常会通过1/N进行缩放以进行补偿。还要注意,在进行FFT之前应该考虑应用窗口函数。 - Paul R

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接