來自《Pitch Extraction and Fundamental Frequency》 David Gerhard
* 找聲音基頻確實是難的,人類已經研究50多年了,還沒有真正準確和強壯的通用方法。
* 學術上通常稱聲音的pitch detection(音高檢測),但實際上說的是基頻檢測。
* 越接近正餘弦振動的信號,高點越不明顯
* 在某個測試環境下作的基頻檢測往往換到另一個環境就不能用了
* 諧振越強,譜峯越明顯
* 時域算法
[基於事件發生率]
- Zero-crossing rate,過零線率。缺陷:零線附近的毛刺。
- Peak rate,峯值率。缺陷:需要指定高點的範圍
- Slope event rate,利用坡度變向等事件,比上面兩個好點
小結:時域算法簡單易懂。峯值率因其電路簡單,多年來一直在硬件實現中很普遍。
[基於自相關]
自相關計算的是信號延遲後於原信號的相似程度。自相關計算的結果自己就是週期性的。缺陷在於,當兩組峯很近時分組會出問題。
- YIN Estimator
- 相位空間
[基於頻域]
- Componnet Frequency Ratios,把頻域分塊了計算。
- 基於濾波器的方法
。梳式濾波器:當梳式濾波器的頻率和基頻吻合時,輸出的能量最大。缺陷:對計算資源耗費相當大。
。可調IIR濾波器:
- 倒譜分析,對幅度譜進行log後再反FFT出來的就是倒譜。適合在譜峯較多且相間較疏的信號,如講話。http://en.wikipedia.org/wiki/Cepstrum中對各項參數的意義和用法做了說明。
- 多分辨率。在不同的分辨率下對信號進行分析,如果出來的基頻都是差不多的結果那就可以確認了。
[頻域統計的方法]
- 神經網絡,缺陷在於結果是黑盒出來的,不知道計算過程的具體信息。
- Maximum Likelihood Estimators
* 改善處理結果的方法
- 可以通過處理輸入信號來改善,比如增強輸入信號分辨率
- 在處理聽覺系統信號的時候,可以用節省計算資源的constant-Q頻譜變換來替代傅里葉變換。
- Frequency Estimator Tracking,傾向於認爲上個時間片計算出來的基頻爲這次的基頻,這樣可以節省計算資源。可以用到馬科夫鏈(HMM)。
* 常見的基頻評估器的問題:當基頻頻率低的時候,較高頻的諧振經常會被當成基頻。YIN算法在這方面比較成功。
* 文中後面對幾種現成的分析器進行了測試比較。