4

如何使用 FFT 获得频率?正确的程序和代码是什么?

4

5 回答 5

4

音高检测通常涉及测量功率谱中谐波之间的间隔。通过取前 N/2 个 bin (sqrt(re^2 + im^2)) 的大小,从 FFT 获得功率谱。然而,有更复杂的音调检测技术,例如倒谱分析,我们采用功率谱对数的 FFT,以识别谱峰的周期性。

于 2010-02-11T14:29:37.787 回答
3

乐器的持续音符是一个周期信号,我们的朋友傅立叶(“FFT”中的第二个“F”)告诉我们,任何周期信号都可以通过添加一组正弦波(通常具有不同的幅度、频率和阶段)。基波是最低频率分量,它对应于音高;其余分量是泛音,是基频的倍数。决定音色或乐器特性的是基音和泛音的相对混合。单簧管和小号齐声演奏听起来“合拍”,因为它们共享相同的基本频率,但是,由于它们的音色不同(泛音混合),它们可以单独识别。

对于您的问题,您可以在一个时间窗口内对小号进行采样,计算 FFT(将样本序列分解为其组成的数字频率),然后断言音高是具有最大幅度的 bin 的频率。如果您愿意,可以将其轻松量化到最接近的音乐半音,例如降 E。(如果您不了解采样频率和结果频率区间之间的关系,或者如果您不了解采样频率过低的危害,请在 Wikipedia 上查找 FFT。)这可能会满足您的需求,因为基本组件通常比任何其他组件具有更大的能量。窗口越长,音调精度越高,因为 bin 中心在频率上将变得更紧密。然而,

于 2010-02-18T19:04:44.120 回答
0

DansTuner是我解决这个问题的开源项目。我其实是个小号手。它具有从Audacity提升的音高检测代码。

于 2010-06-11T16:31:19.153 回答
0

ia 将此org.apache.commons.math.transform.FastFourierTransforme包添加到项目中,并且它可以完美运行

于 2011-06-02T21:24:35.977 回答
0

是一篇关于估计 PSD(功率谱密度)的非参数技术的简短博客文章以及一些更详细的链接。这可能会让您开始估计 PSD - 然后找到音高。

于 2010-02-11T17:38:59.557 回答