2011-10-18 76 views
1

用C語言編寫了一個頻域基音檢測算法,現在我試圖估計基頻。我有傅里葉變換的最大幅度分檔,但也可以是不需要的諧波F0。我在某處讀到可以使用cepstral analysis來估計F0。所以,這裏是我遵循的步驟:使用倒譜分析估計基本頻率

  1. 花時間域緩衝區x,使窗口複製瓦特。
  2. FTTw = FFT(w)的
  3. 平方量值FTTw的
  4. FTTA = FFT(一)
  5. B =平方FTTA
  6. 估計基本採用B
的大小爲a =日誌

我在最後一步(6)遇到問題。 b中的幅度非常高,我不確定我完全理解它們代表的是什麼(quefrencies?),最重要的是我怎麼能根據它們來估計它的基礎。

歡迎任何建議!謝謝!

+0

由於這是更多的DSP相關的編程相關,你可能想嘗試http://dsp.stackexchange.com而不是http://stackoverflow.com –

+0

做到這一點,有幾個小時,沒有答案/評論。我猜這個社區還很小,所以我在這裏嘗試了我的運氣:) –

+0

你可能需要耐心 - 給它24小時左右 - 不同的時區等等。如果你在這裏得到答案,它可能是來自某人無論如何在http://dsp.stackexchange.com活動... –

回答

1

倒譜峯頂(位於交叉軸上)的位置告訴你原始信號的音高週期。 的幅度的高峯並不是特別重要。

+0

謝謝保羅,我還有一個小問題:我可以做一個二次插值,以提高倒譜峯之間的準確度,或者我應該回到原始具有已知頻率的FFT數據並在那裏進行。 (對不起,在原文中增加了另一個問題:D,但是我看到你在DSP方面幫助了其他人,並且我認爲你可能知道) –

+0

可能更好的方法是將原始FFT輸入填零 - 這會給你具有更高*分辨率*的內插頻譜。或者,如果您確實需要更高的*精確度*,則只需使用更大的時間窗口即可。 –