实时音高检测使用FFT

9

我正在尝试使用C++进行实时音高检测。我正在测试来自performous的一些代码(http://performous.org/),因为其他所有方法都没有奏效。我确定这个方法是可行的,但我就是无法让它工作。我已经尝试了几周,但我还没有成功地运行任何音高检测代码。


6
"can't get to work" 的意思是?(无法编译?无法运行?会使你的计算机变成一团火焰?) - Jason S
它已经编译成功,但输出的频率从0到大约1024。 - Niall
看一下FMOD库。他们的一个示例可以进行实时音高检测,如果我没记错的话。该库对于开源项目是免费的,对于商业应用来说价格适中。即使您不想使用该库,也许它会提供一些见解。 - Ryan Emerle
那有什么问题呢?中央C是440赫兹,所以如果采样您的麦克风,那个范围似乎是合理的。您期望哪些频率? - AShelly
3个回答

11

不要使用麦克风的输入,你应该创建已知单个频率的数据并通过程序运行,看看是否得到正确的结果。然后可以添加谐波并查看其是否有效。真实世界的数据对于初始测试来说太过变化。


1

你能告诉我你是怎么解决它的吗? - ichherzcplusplus

1
Performous音频代码具有一些优化、频率限制和启发式,使其仅适用于唱歌(和其他类似的音调)。最佳范围在80-600 Hz左右。

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