高 悅,陳硯圃,閔 剛,杜 佳
(西安通信學(xué)院 基礎(chǔ)部,陜西 西安 710106)
一種高效的基音估計(jì)算法
高 悅,陳硯圃,閔 剛,杜 佳
(西安通信學(xué)院 基礎(chǔ)部,陜西 西安 710106)
分析已有的一些基音估計(jì)算法,對(duì)比其優(yōu)缺點(diǎn),提出一種可大大提高計(jì)算速度的高效基音估計(jì)算法。該算法是利用平均幅度差(MAMDF)法提取若干個(gè)可能峰值點(diǎn),再利用計(jì)算精度較高的循環(huán)平均幅度差(CAMDF)法對(duì)這幾個(gè)點(diǎn)進(jìn)行驗(yàn)證,選取數(shù)值最小的點(diǎn)作為基音周期。由于只對(duì)幾個(gè)點(diǎn)求CAMDF函數(shù),因此運(yùn)算量大大減小。
基音周期;基音估計(jì);平均幅度差(AMDF);改進(jìn)的平均幅度差(MAMDF);循環(huán)平均幅度差(CAMDF)
基音周期是語音壓縮、合成以及識(shí)別中的重要參數(shù),是語音信號(hào)處理中重要的一項(xiàng),基音周期估計(jì)也因此成為大多數(shù)語音信號(hào)處理系統(tǒng)的重要組成部分?;艄烙?jì)(Pitch Estimation)又稱基音檢測(cè)(Pitch Detection),它在有調(diào)語音辨意、低速率語音編碼、說話人識(shí)別等方面具有關(guān)鍵作用,基音檢測(cè)的最終目標(biāo)是找出和聲帶振動(dòng)頻率完全一致的基音周期變化軌跡曲線,若不可能,則找出盡量相吻合的軌跡曲線[1]?;糁芷诠烙?jì)一直是語音信號(hào)研究的重要課題,然而對(duì)此所提出的很多方法[2]都有其局限性。
由于語音信號(hào)是非平穩(wěn)的時(shí)變信號(hào),只有其中的濁音部分能夠看作是準(zhǔn)周期的,所以語音信號(hào)處理中通常采取短時(shí)處理技術(shù)。本文首先分析一些傳統(tǒng)基音檢測(cè)函數(shù)的特性,并比較其優(yōu)缺點(diǎn),在此基礎(chǔ)上,提出一種新的基音估計(jì)算法,該算法不僅可減小倍頻和半頻的誤判,而且能大大提高計(jì)算速度。
語音信號(hào)經(jīng)加窗后的信號(hào)為Sn(n),Sn(n)的短時(shí)自相關(guān)函數(shù)為:
由于濁音是準(zhǔn)周期信號(hào),其最大值會(huì)周期性地出現(xiàn),因此自相關(guān)函數(shù)實(shí)際上放大了其峰值。對(duì)于大多數(shù)濁音,語音信號(hào)的自相關(guān)函數(shù)都會(huì)有一些周期出現(xiàn)的局部最大值,第1個(gè)局部最大值與起點(diǎn)之間的距離即為基音周期[4]。清音的自相關(guān)函數(shù)則沒有明顯的峰值出現(xiàn)。因此通過檢測(cè)是否有峰值就可判斷是清音還是濁音。
自相關(guān)法是檢測(cè)基音周期的有效方法,但因?yàn)榍笕∽韵嚓P(guān)函數(shù)需要進(jìn)行大量乘法運(yùn)算,因此計(jì)算時(shí)間長,不適合實(shí)時(shí)應(yīng)用。
平均幅度差函數(shù)AMDF(Average Magnitude Difference Function)的原理與ACF法相似,都是將周期性出現(xiàn)的點(diǎn)放大,所不同的是AMDF法求取的基音周期是第1個(gè)局部最小值與起點(diǎn)之間的距離。其定義為:
從D(k)的計(jì)算式看出,計(jì)算D(k)的差值項(xiàng)是不同的。隨著k增加,求和的差值項(xiàng)數(shù)逐漸減少,結(jié)果導(dǎo)致D(k)的谷值幅度隨著滯后時(shí)間k的增加而逐漸下降。因此,很難提取代表基音周期大小的谷值。有些方法設(shè)置多個(gè)閾值,以此篩選AMDF的谷值并進(jìn)行有效性檢驗(yàn)。然而,閾值的設(shè)置很難適用于所有語音,估計(jì)結(jié)果中選擇倍頻、半頻,以及將清音誤判為濁音的概率很高。
為了克服基本AMDF算法中谷值幅度隨滯后時(shí)間增加而逐漸下降造成誤判,在其基礎(chǔ)上人們又提出許多新的算法,如變長的 AMDF(LVAMDF)、循環(huán) AMDF(CAMDF)和改進(jìn)的AMDF(MAMDF)等方法[5]。
AMDF是一種用于估計(jì)基音周期的好方法,但由于其本身固有的缺陷,難以估計(jì)代表基音周期大小的谷值。由此,人們提出一種改進(jìn)的AMDF方法,即以AMDF函數(shù)的最大峰值點(diǎn)(nmax,Rmax)與另一點(diǎn)(N,0)連接為一條直線,以這條直線與AMDF函數(shù)對(duì)應(yīng)點(diǎn)之差作為線性變換的結(jié)果,由此得到修正的平均幅度差函數(shù)。這一變換的目的是對(duì)AMDF函數(shù)的各個(gè)周期谷值點(diǎn)的深度作線性縮減,同時(shí)將原函數(shù)的峰值和谷值點(diǎn)反轉(zhuǎn)。在基音周期不是很大的情況下,以此方法進(jìn)行變換后,將第1峰值與起點(diǎn)之間的距離作為基音周期,基本不會(huì)改變非平穩(wěn)濁音語音的AMDF函數(shù)谷值特性和清音語音的AMDF函數(shù)特性,因此是比較準(zhǔn)確的。但當(dāng)基音周期較大時(shí),由于這種線性縮減不能很好地修正AMDF函數(shù),利用MAMDF方法仍會(huì)出現(xiàn)誤判。
基于以上算法的一些缺陷,一種新的CAMDF(Circular AMDF)函數(shù)[6]被提出,即采取類似于循環(huán)卷積的方法將AMDF函數(shù)重新定義為
由CAMDF的定義可以看出,其原理與AMDF類似,在基音周期的整數(shù)倍點(diǎn)處會(huì)呈現(xiàn)顯著的谷值點(diǎn)特征。但CAMDF函數(shù)與AMDF函數(shù)的不同之處在于,在計(jì)算幅度差函數(shù)D(k)時(shí),當(dāng)前加窗語音幀內(nèi)的每個(gè)樣本點(diǎn)都被使用且僅被使用一次,求和的差值項(xiàng)數(shù)也相同。因此,CAMDF函數(shù)值不會(huì)像AMDF函數(shù)那樣因求和的差值項(xiàng)越來越少而呈下降趨勢(shì),其谷值點(diǎn)函數(shù)值會(huì)隨著滯后時(shí)間k的增加而依次遞增。這樣,利用谷值點(diǎn)檢測(cè)基音周期就更容易和有效。
由于CAMDF函數(shù)具有以上優(yōu)點(diǎn),它成為基音周期檢測(cè)的有效方法。但由于每求取CAMDF函數(shù)的一個(gè)樣點(diǎn)值,都要進(jìn)行2N次運(yùn)算,因此計(jì)算一幀的CAMDF函數(shù)運(yùn)算量非常大,這樣使其無法實(shí)時(shí)應(yīng)用。這里在綜合以上基音周期計(jì)算方法優(yōu)缺點(diǎn)的基礎(chǔ)上,提出一種綜合多種方法優(yōu)點(diǎn)的高效計(jì)算方法,既保留CAMDF函數(shù)計(jì)算精度高的優(yōu)點(diǎn),又避免CAMDF函數(shù)運(yùn)算時(shí)間過長的缺點(diǎn)。
考慮到AMDF方法運(yùn)算量較小,運(yùn)算速度快,首先采用MAMDF法計(jì)算基音周期。理論上,求得MAMDF函數(shù)后,只要找到最大的峰值點(diǎn)即可得到所要求的周期。但由于語音信號(hào)的準(zhǔn)周期性,有時(shí)最大峰值點(diǎn)所對(duì)應(yīng)的點(diǎn)并不是基音周期,而真正的基音周期對(duì)應(yīng)的點(diǎn)也可能并不是最大峰值點(diǎn)。因此,為了消除這種誤判情況,在求出MAMDF函數(shù)的峰值點(diǎn)后,對(duì)峰值點(diǎn)所對(duì)應(yīng)的MAMDF函數(shù)的函數(shù)值進(jìn)行排序,取出最大的5個(gè)函數(shù)值,這5個(gè)函數(shù)值對(duì)應(yīng)的點(diǎn)即為可能的周期點(diǎn)。
回顧已有的基音周期求取方法可發(fā)現(xiàn),CAMDF方法是一種比較準(zhǔn)確的方法,其誤判率較低,基音周期的計(jì)算較準(zhǔn)確。因此可采用準(zhǔn)確率較高的CAMDF方法,僅對(duì)這5個(gè)點(diǎn)進(jìn)行計(jì)算,然后對(duì)這5個(gè)點(diǎn)的CAMDF函數(shù)值進(jìn)行排序,函數(shù)值最小的那個(gè)點(diǎn)與零點(diǎn)的距離即所要求的基音周期。采用這種方法,不但利用CAMDF函數(shù)可準(zhǔn)確求取基音周期的優(yōu)點(diǎn),同時(shí)避免了該方法運(yùn)算量大的缺點(diǎn)。
圖1所示是對(duì)一幀語音求取MAMDF函數(shù)和CAMDF函數(shù),MAMDF函數(shù)上的圓圈是對(duì)MAMDF函數(shù)取最大的5個(gè)峰值點(diǎn):16,37,53,90,106。 CAMDF 函數(shù)上的圓圈是這 5 個(gè)點(diǎn)在CAMDF函數(shù)上的對(duì)應(yīng)位置??煽闯觯?個(gè)點(diǎn)的值最小,因此這幀語音的周期就是53個(gè)點(diǎn)。
圖1 對(duì)一幀語音求取MAMDF函數(shù)和CAMDF函數(shù)
傳統(tǒng)基于AMDF函數(shù)的基音檢測(cè)算法中很容易出現(xiàn)基音估計(jì)加倍或減半的現(xiàn)象,CAMDF基音檢測(cè)算法精度較高,但運(yùn)算量太大。本文針對(duì)該現(xiàn)象,綜合傳統(tǒng)基音檢測(cè)算法的優(yōu)點(diǎn),提出一種新的基音檢測(cè)算法。由于該基音檢測(cè)算法只需計(jì)算5個(gè)點(diǎn)的CAMDF函數(shù),而傳統(tǒng)CAMDF算法需對(duì)一幀中的所有點(diǎn)進(jìn)行計(jì)算,因此大大減少運(yùn)算量,簡(jiǎn)化基音檢測(cè)過程。
[1]楊行俊,遲惠生.語音信號(hào)數(shù)字處理[M].北京:電子工業(yè)出版社,1995.
[2]馮 康,時(shí)慧琨.語音信號(hào)基音檢測(cè)的現(xiàn)狀及展望[J].微機(jī)發(fā)展,2004,14(3):95-98.
[3]Rabiner L R.On the use of autocorrelation analysis for pitch detection[J].IEEE Trans.1977,ASSP-25(1):24-33.
[4]鮑長春.低比特率語音編碼基礎(chǔ)[M].北京:北京工業(yè)大學(xué)出版社,2001.
[5]成新民,曾毓敏,趙 力.一種改進(jìn)的AMDF求取語音基音的方法[J].微電子學(xué)與計(jì)算機(jī),2005,22(11):162-167.
[6]張文耀,許 剛,王裕國.循環(huán)AMDF及其語音基音周期估計(jì)算法[J].電子學(xué)報(bào),2003, 31(6):886-890.
An effective pitch estimation algorithm
GAO Yue, CHEN Yan-pu, MIN Gang, DU Jia
(Base Department,Xi’an Communication College,Xi’an710106,China)
This paper analyses and compares some existing pitch detection algorithms,then puts forward an effective pitch detection algorithm which improves calculation speed.This algorithm uses MAMDF method picking up some possible peak values.Then verifies their values with high-precision CAMDF,the point which has the minimum value is the pitch.The computation reduces greatly because only several points’CAMDF function are are computed.
pitch; pitch estimation; average magnitude difference function(AMDF); MAMDF; CAMDF
TN912.3
A
1674-6236(2010)01-0024-02
2009-09-29 稿件編號(hào):200909103
高 悅(1973—),女,陜西西安人,博士,講師。研究方向:語音信號(hào)處理。