我想制作一个程序,以检测在麦克风前播放的音符。我正在测试Naudio的FFT功能,但是通过我在Audacity进行的测试,FFT似乎无法正确检测到音高。我打了C5,但最高的选秀权是E7。

我将“频率分析”窗口中的第一个下拉框更改为“嵌套自相关”,之后最高的选择是C5。

我用谷歌搜索了“封闭的自相关”,没有运气。

有帮助吗?

解决方案

音频频谱中的最高峰不一定是人类会认为它的音乐音调,尤其是在具有强烈色彩的声音中。那是因为音调是人类的心理知觉现象,大脑通常会推断出波形中甚至不存在的频率。

自动相关方法的频率或音高估计方法(大致发现,即使是一个有趣的和/或非sinsoidal波形重复的相距距离,也通常是人类所谓的音调的更好匹配。对自相关算法进行各种增强功能的原因是,简单的自相关将发现几乎无限数量的重复波长(例如,如果每2秒重复一次,则每2秒也重复两次,等等),因此诀窍是将相关性加重到将相关性加重到相关性从统计学上讲,以某种方式更好地匹配了人类对同一波形的猜测。

其他提示

您可能会被谐波抛弃。您是否尝试过用正弦波进行测试,以查看您的Naudio的FFT是否在球场上?

查看以下参考:http://cnx.org/content/m11714/latest/

http://www.gamedev.net/community/forums/topic.asp?topic_id=506592&whichpage=1

第48英寸 Spectrum.cpp 在Audacity中,源代码似乎与您想要的内容接近。他们也引用了 IEEE纸,托洛宁和卡尔贾兰宁.

好吧,如果您可以使用GPLV2生活,为什么不窥视Audacity源代码呢?

http://audacity.sourceforge.net/download/beta_source

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top