2009-09-29 79 views
1

作爲我以前的question的後續工作,如果我希望我的智能手機應用程序檢測某個音符,並且我只需要知道傳入的聲音是否是該音符,具有一定的模糊性,以允許該票據以×美分爲單位。智能手機上音符的音調識別,pt。 2

鑑於這種情況,在速度和準確性方面是否比其他方法優越?也就是說,通過知道你正在尋找的音符是#C3,如何最好地判斷該音符是否存在?我假設尋找單個音符比分離出所有波形更容易,然後查看基頻的結果。

在回答我原來的問題時,有一位受訪者提出,如果您知道筆記在一定範圍內,自相關可能會奏效。我想知道,如果您只需檢查是否存在某個鈔票(+/- x美分),那麼自相關效果是否會更好。

這些方法之中:

  • 吻FFT
  • FFTW
  • 離散小波變換
  • 自相關
  • 過零分析
  • 倍頻程間隔濾波器
  • DWT

任何想法,將不勝感激。

+0

你能更詳細地描述問題嗎?當聽到特定的聲音時,你將會用麥克風聽,並激活一些東西?還是你想寫一個吉他調音器?還是你想寫一個音樂轉錄器?語調是由人類的聲音,樂器,還是你控制的發射器產生的?它是否需要是特定的波形(正弦波,方波)還是具有正確頻率的波形?等等 – endolith 2009-10-14 21:26:58

+0

我想用一種(任何我希望的)樂器演奏的音符來控制我的軟件,或者甚至可能嗡嗡作響。 – mahboudz 2009-10-14 22:31:25

+0

啊。確定一個特定的音調(而不是它的諧波或分諧波之一)並不是微不足道的。例如,小號的諧波比基波要強。 http://cnx.org/content/m15456/latest/sub_concept-trumpet-spectrum.png但是很多工作已經完成了。我猜,只是搜索「音高估計」。 – endolith 2009-10-15 16:10:01

回答

1

正如你所描述的那樣,你只需要確定是否存在特定的音調。一個非常簡單的(快速)檢測器只會記錄波形的一個週期的等效值,然後記錄另一個週期並將它們關聯起來,就像過度簡化的(單滯後)自相關一樣。如果匹配程度很高,則您知道正在記錄的波形在大約相同的時間段內重複出現,或者是諧波。例如,要檢測1 kHz,記錄1 ms的音頻(48 kHz採樣48個採樣點),然後記錄另一個1 ms,並比較它們(相關=相乘所有采樣和總和)。如果他們排隊(相關性高於某個閾值),那麼您正在聆聽1 kHz,2 kHz,3 kHz或其他一些倍數。做幾個時期會讓你對比賽更有信心。

一個真正的自相關會告訴你哪個諧波,具體來說,如果這對你很重要。

+0

這聽起來像是一個快速的方法,但我想測試50個或3個或4個八度以上的音符。實際上,我想要用戶設定一些「模糊性」的等級,這樣筆記就可以被分出一定數量的分。這是否意味着只做一個FFT並查看結果頻率可能會更好,而不是使用自相關。 – mahboudz 2009-10-14 22:38:04

+0

我認爲自相關會更好,因爲它匹配整個波形。使用FFT,您需要確定哪些最大值與波的基頻對應。對於大的自相關(匹配低頻),實際上可以通過FFT來加速自相關。 :)但我認爲對於少量的樣品,「天真」的實施可以很快。 – endolith 2009-10-15 16:05:21

+0

而「模糊性」是內置的。如果你正在尋找100赫茲和波形是98赫茲,它仍然會匹配,但不是那麼好。 – endolith 2009-10-15 16:44:59