簡體   English   中英

如何在.Net中進行實時音高檢測?

[英]How can I do real-time pitch detection in .Net?

我想編寫一個程序來檢測正在麥克風前播放的音符。 我正在測試Naudio的FFT功能,但是通過大膽地進行測試,似乎FFT無法正確檢測到音高。 我打了C5,但是最高的選擇是E7。

我將頻率分析窗口中的第一個下拉框更改為“增強自相關”,然后最高的選擇是C5。

我用谷歌搜索了“增強自相關”,但沒有運氣。

您可能會被諧波甩掉。 您是否嘗試過用正弦波測試以查看NAudio的FFT是否在球場上?

請參閱以下參考: http : //cnx.org/content/m11714/latest/

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

Audacity源代碼中Spectrum.cpp中的第48行似乎與您想要的接近。 他們還引用了Tolonen和KarjalainenIEEE論文

好吧,如果可以使用GPLv2,為什么不看一下Audacity源代碼呢?

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

音頻頻譜中的最高峰不一定是人會感覺到的音高,尤其是在具有強烈泛音的聲音中。 這是因為音調是一種人類的心理感知現象,大腦通常會推斷出甚至不存在於波形中的頻率。

頻率或音調估計的自相關方法(大致來說,即使是看起來很滑稽和/或非正弦的波形也會在時間上重復多遠)通常可以更好地匹配人類所稱的音調。 對自相關算法進行各種增強的原因是,簡單的自相關將發現幾乎無限數量的重復波長(例如,如果每1秒鍾重復一次,則每2秒也重復兩次,等等),所以訣竅是將相關性加權為從某種意義上說,統計學上更好地匹配了人類對相同波形的猜測。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM