陳敏敏,張云剛,王智
通過對語音信號發(fā)聲過程的研究以及觀察記錄的各種語音波形,便可知道語音信號的頻率分量的分布范圍。如果用一個防混疊的帶通濾波器將此范圍內的語音信號頻率分量取出,然后按某采樣率對語音信號進行采樣,就可以得到離散時域的語音信號。近代語音系統(tǒng)中,為了實現更高質量的語音編譯碼器或者使語音識別系統(tǒng)得到更好的識別率,將此頻率范圍擴展到 7-9kHz,采樣率從 8kHz提高到了15-20kHz。
由于語音信號的準平穩(wěn)特性,任何語音信號數字處理算法和技術,都建立在“短時”的基礎上,在某些短時段中,它呈現出隨機噪聲的特性,另一些短時段則呈現出周期信號的特征,其它一些是二者的混合。即語音信號的特征是隨時間而變化的。只有在一短時間間隔中,語音信號才保持相對穩(wěn)定一致的特性,這段短時間一般可取為5—50ms。
早在1951年,Licklider提出了一種自相關算法[1]去分析周期特性,但這種方法的復雜度是隨信號的采樣率的提高成平方增加的,為了提高精度增大采樣率,因此,算法的實現需要較好的硬件支持,同時,當基頻超過幀長一半時,自相關法的精度會下降;為了避免短時自相關函數的乘法運算,1983年Hess[1]采用了一個簡單方法,用加減法和絕對值的運算,替換了自相關的乘法運算,設計了AMDF算法公式(1)
雖然AMDF運算量遠遠小于自相關法,但AMDF算法中k值變化一大,判斷結果就不準確。研究人員對上述進行改進,產生了k變長的LV—AMDF算法,但對于周期性和平穩(wěn)性都較好的濁音語音段來說,該方法常會出現的第一周期谷點,并不是全局最低谷點,最低谷值點也不一定是基音周期所在點,在這種情況下,若以全局最低谷點作為基音周期計算點,就會產生嚴重的檢測錯誤[2]。
語音的音頻提取有廣泛的應用。它促進了韻律學研究的發(fā)展;在語音識別中被用來識別原始的詞匯;一些音樂的應用也需要基頻提取,比如多媒體內容元數據的抽取,被用在自動評分和實時交互系統(tǒng)等等應用上。但是大部分算法在可靠性上存在一定的缺陷和錯誤率,下面我們著重比較最近幾年主要的幾種基頻提取算法,具有篇幅有限,我們選用測試集51mike.com中許志安的《為什么你背著我愛別人》做原始的篩選。
1.1 Paul Boersma[3]提出了一種改進了的自相關算法(kpitch),主要從兩個公式上進行了改進自相關算法。用原始的窗體信號的自相關變量 ra(t)除以窗體的自相關變量rw(t),得到新的rx(t)的預估值公式(2)
在公式‘sin x / x’中補充延遲的部分,得公式(3)
分別取窗大小τmax400和1000時,抽取《為什么你背著我愛別人》得到如下波形,如圖1、圖2所示:
圖1 τmax=400時的kpitch音高提取結果
圖2 τmax=1000時的kpitch音高提取結果
從結果看出,歌曲具有較多的倍頻誤差,效果不是很理想。
1.2 近年來,又有不少研究者改進了原始的AMDF算法[4],并且和Viterbi算法[5]結合起來,來提取語音基音周期[4], 抽取我們的示例歌曲得到如下結果,如圖3所示:
圖3 歸一化SMDSF、及分別加中值平滑、SViterbi后的效果
歸一化 SMDSF 函數確定基音周期候選值, 定義狀態(tài)損失函數和轉移損失函數, 進而運用 Viterbi算法進行基音周期提取, 比基準系統(tǒng)基音周期提取的總錯誤率降低了 9.31%。其中, 使用 Viterbi 算法后處理的錯誤率,比使用 5點中值平滑方法后處理的總錯誤率降低了27.0%[6]。可是提取效果仍然比較差。
1.3 Anssi P.Klapuri[7]提出了一種基于諧波和頻譜平滑法來抽取多音信號的基頻的方法,稱做fxrapt算法,它分解出各個聲音的諧波,設計了一個頻譜平滑的算法,迭代的從混合的聲音中去掉每個探測到的聲音,直至剩下干凈的聲音為止。有明顯的倍頻、半頻誤差,效果也不是很理想。測試示例歌曲,效果如圖4所示:
圖4 klapuri的基音提取算法
1.4 Alain de Cheveigne[8]進一步改進了自相關算法,提出了一種Yin算法,主要從5個方面改進了原始的自相關算法,先用一個新的函數替換了自相關函數;然后通過把短延時值平均后,重新規(guī)范化每一個原始值;設置一個絕對的閥門,防止取到錯誤的點;用拋物中值法,解決非整數周期的情況;最后在附近區(qū)域選擇最好的估計值。該方法具有低延遲并且擁有極低的錯誤率,測試示例歌曲,效果如圖5所示:
圖5 yin acf算法提取效果
同樣《把根留住》也具有較低的錯誤率。我們用51mike.com歌庫做測試集,定義凡是抽取的音高估計值超過實際值20%的為嚴重錯誤,最終嚴重錯誤率在1%左右,具有較好的效果,Yin算法比上其他幾個算法錯誤率,都至少降低了60%以上。
經過詳細的比較,Yin算法在各類音高提取中具有最低的錯誤率,其他的幾個算法都比Yin算法錯誤率高出不少,我們同樣用51mile.com的曲庫做樣本集,經過不少高水平歌手的反復運用,均取到了良好的反饋和效果。唯一不足的是,Yin算法雖然多從方面修正了原始的自相關算法,極大的了提高了提取音高的準確性,但是經過數次修正,該算法計算效率相比其他算法有點低,一些早期的機器運算起來稍微有點卡,但是當前目前主流的PC,都不影響用戶體驗。
[1]Li hui, Dai Beiqian, Lu Wei.A pitch detectionalg or ithm based on AMDF and ACF[ C ].Proceedings of ICASSP.Beijing:Dig ital Object Identifier,14-19, 2006
[2]成新民等.一種改進的 AMDF求取語音基音的方法[J].微電子學與計算機,2005,(22).
[3]Boersma P.Accurate short-term analysis of the fundamental frequency and the harmonics-to-noise ratio of a sample sound.[j]Institute of Phonetic Sciences, University of Amsterdam, Proceedings.1993;(17): 97-110.
[4]Shahidur M.Rahman, Hirobumi Tanaka, Tetsuya Shimamura ."Pitch Determination Using Aligned AMDF".ICSLP Ninth International Conference on Spoken Language Processing Pittsburgh, [M]PA, USA September 17-21, 2006
[5]Gambino P.M.B.and Burnett.I.S.Low Delay Pitch Detection Using Dynamic-programming/viterbi Techniques.ISSPA, [M]Gold Coast, Australia, 25-30 August,1996.
[6]劉建,鄭方,吳文虎.基于幅度差平方和函數的基音周期提取算法[J].清華大學學報.2006, Vo l.46, No.1:74-77
[7]Klapuri, A.P.“Multiple fundamental frequency estimation based on harmonicity and spectralsmoothness,” IEEE[j]Trans.Speech and Audio Proc., 2003, 11(6), 804-816.
[8]Alain de Cheveigne, Hideki Kawahara.YIN, a fundamental frequency estimator for speech and music[J].J.Acoust.Soc.Am.111 (4) 1917-1930, April 2002