專利名稱:用于語音識別的高精度高分辨率基頻提取方法
技術領域:
本發(fā)明提取了一種將頻域、時域分析以及動態(tài)規(guī)劃(DP)相結合的基頻提取方法,屬信號處理及語音識別領域,其基本特征是結合時域與頻域的基頻分析,抽取可能的幾個基頻候選,并采用一種自相關系數、頻譜分析結果以及基頻變化量相結合的目標函數用不定長回溯動態(tài)規(guī)劃算法進行正確基頻的搜索。
目前,在連續(xù)語音條件下,抽取可靠的基頻變化曲線是漢語聲調識別與建模的基礎。但基頻提取的困難主要在于,受聲道共振峰和噪音等因素的影響,有時在正確基頻的倍頻和半頻值有比基頻更明顯的特征(如相應峰值較大)。傳統(tǒng)的方法一般單獨利用時域或頻域進行基頻特征提取,而且在所有時間點只提取單一的一個基頻值作為后續(xù)處理如中值平滑的基礎。這樣僅用頻域或時域的一種方法,和僅僅從一個極端的標準(如僅取某一最大的峰值)來提取基頻常常出現一些錯誤,造成得到的基頻輪廓線有明顯不連續(xù)的變化,這顯然是與事實不符的。如J.Sundberg 1979年發(fā)表在J.of Phonetics上的試驗結果表明基頻的變化率在大約1%/ms的范圍內。對于基頻的明顯不連續(xù)的變化,可以用傳統(tǒng)的DP方法加以一定的彌補,但傳統(tǒng)的DP算法必須處理完一整段語音才能輸出基頻輪廓線,這種延遲在實時的語音識別系統(tǒng)中是很難被接受的,所有在其它一些DP算法的應用中,都采用定長回溯的方法解決這個問題。
基頻提取的主要問題在于1.在頻域上,語音信號經過FFT(快速傅利葉變換)得到的頻譜,在F0/2,F0,2F0,3F0…處經常有較大的峰出現,如圖2所示,一濁音幀經FFT運算后得到的譜,其在F0,2F0,3F0處有明顯的峰,但基頻F0處的峰值卻顯然沒有2F0處高。如有的算法就是基于這一現象,把最大峰對應的頻率作為基頻;或者以某種方法提取出多個峰,并計算這些峰值之間的距離平均以估算基頻。但有時某些峰值并不十分明顯,甚至會出現“基音缺失”(missing fundamental)的現象,這給傳統(tǒng)的用頻譜分析做基頻檢測的方法造成了很大的困難。
2.在時域上,一種有代表性的基頻提取方法是短時自相關函數法。短時自相關函數的計算公式為R[m]=1N-mΣi=0N-m-1xixi+m]]>其中Xi表示一幀里第i個采樣點值,N表示每幀總采樣點個數,R[m]表示周期為m個采樣點時的自相關值。根據自相關函數的性質,周期性信號的自相關函數也是周期性的,而且與語音信號的周期相同,一般來說,如果T0代表音調周期(T0=1/F0),除了R
以外,T0處的峰值最大。圖4給出了一濁音幀的自相關曲線,可以看到,在T0,2T0,3T0處有較大的峰值,但T0處的峰值高度和2T0,3T0很接近。所以,檢測自相關函數的最大峰可以作為估計基頻的一種方法,但和上面的情況類似,在T0/2,2T0、3T0……附近常常有較大的峰值,而且有時在這些峰中出現最大峰。這給該算法帶來一定的局限性。
另外,分辨率和計算量也給基頻的實時提取造成了一定的困難。
例如在采用FFT頻譜分析的方法中,基頻提取的分辨率與FFT計算的點數成正比,而其計算量是隨之呈指數增長的,這就導致不可能用太多點數的FFT計算;在全部有效頻域范圍內(指人類語音的基頻范圍)計算自相關以搜索較大值需要大量的乘法運算,是十分耗時的,不太適合用于需要實時處理的語音識別系統(tǒng)中;DP算法的候選值個數也影響DP的決策速度,如果將有效頻域范圍內的所有基頻均作為候選,也勢必大大加重決策的負擔。
本發(fā)明的目的在于提出一種新的基頻提取方法。該方法的基本思想應是先對語音信號在頻域上進行FFT變換,再對其進行諧波分析,然后通過峰值檢測,選若干個基頻的候選,在時域上對這些候選基頻用自相關系數評測,再用動態(tài)規(guī)劃算法確定一條最優(yōu)的基頻輪廓線。
本發(fā)明的技術要點在于一種語音識別用高精度高分辨率基頻提取方法結合時域與頻域的基頻分析,抽取可能的幾個基頻候選,并采用一種自相關系數、頻譜分析結果以及基頻變化量相結合的目標函數用動態(tài)規(guī)劃算法進行搜索,在進行自相關計算前,根據語音識別用的頻譜分析結果,利用FFT諧波分析法,對語音的基頻范圍進行初步的估計,降低自相關計算的范圍,并且對基頻提取精度不產生影響;諧波分析法的特征包括降采樣率、預加重和加窗、FFT計算及為了提高分辨率進行二次Spline插值等步驟。1.FFT求得的頻譜采用諧波分析的方法,首先對于有效的基頻范圍的每一個基頻計算若干個諧波的累加和。如果用X(i)表示一幀的語音信號,用X(f)表示其FFT變換,S(f)表示得到的功率譜,即S(f)=|X(f)|2(2)那么諧波累加的結果為H(f)=Σn=1HNhnS(nf)---(3)]]>HN表示諧波的個數,hn是第n個諧波的權。本方法中沒有對功率譜進行對數Log運算,也沒有將線性頻域轉化到對數頻域,即求Log(F0),這在一定程度上減少了計算量。然后再從諧波分析的結果H(f)中通過線性搜索選出前幾名最大的峰,(設P1,P2,…PPN表示這幾個峰值),以相應的頻率作為基頻的候選值。同時計算每一峰值的相對最大峰Pmax的大小作為后面DP算法的評分參數Hper,即Hper(i)=Pi/Pmax,i=1..PN---(4)]]>諧波分析基頻峰值檢測的實例如圖3,圖3給出了一濁音幀的諧波累加圖,經過諧波計算,在F0處有明顯的最大峰,連同另外還有其它的幾個峰(用圓圈表示),都作為基頻的候選。2.在時域上,對頻域得到的基頻候選計算自相關值{R[i]},其結果用R
進行了歸一化,即自相關系數Rper(i)=R[i]/R
。如上所述,濁音(voiced)幀的自相關系數的峰值比較大,與1比較接近,如圖4所示,而沒有基頻的非濁音(unvoiced)幀自相關的峰值都很低如圖5所示,所以自相關系數可以作為清濁音判別的依據,能過濾掉一些明顯的非濁音幀。利用自相關系數,對頻域得到的有限的基頻候選進行打分和篩選,既降低了自相關的計算量和后續(xù)DP算法的計算量,同時也使得用DP算法選擇基頻時可以綜合頻域和時域的分析結果,更加合理。3.動態(tài)規(guī)劃算法是一種廣泛使用的最優(yōu)化算法。它把多階段決策過程化為多個單階段決策的子過程,使計算簡化。每次決策對所有的可能路徑依據得分函數分別打分,根據得分的大小對路徑進行裁減,最后輸出得分最優(yōu)(最大或最小)的路徑。本DP算法每次處理一幀的基頻候選,對原有的的基頻路徑進行延拓,然后對每一條路徑打分,保留若干得分最高的。得分公式是Score(i)=max{Score(i-1)-D(i,j)}+aRper(i)+bHper(i)(5)其中Score(i)表示該基頻路徑在第i幀的得分,a,b為系數,D(i,j)表示第i幀的基頻pi與第i-1幀的第j個基頻候選pj的距離D(i,j)=2*|pi-pj|/(pi+pj)(6)本方法采用的∑Rper(i)得分函數考慮了三∑Hper(i)方面的因素基頻變化的連續(xù)性、自相關系數累加值最大、諧波累加峰值最大。這三個方面都是基頻判別的重要依據。后兩個因素在前面已經提到過。其中基頻變化的連續(xù)性是考慮到人類發(fā)音的基頻軌跡不可能產生突變的原理,對可能的基頻路徑打分。本算法根據非濁音沒有明顯基頻的特點,采用了不定長回溯方法。
具體方法如下該DP算法的以連續(xù)的濁音幀的第一幀開始,以連續(xù)濁音幀的最后一幀做結束,進行動態(tài)不定長的局部回溯。因為在非濁音幀提出的基頻是沒有意義的,基頻的連續(xù)性在進入濁音幀后也無法體現。如果在全局內進行動態(tài)規(guī)劃,則勢必加入過多的干擾分數,使基頻輪廓線發(fā)生隨機偏移,有時會嚴重影響DP算法的效果。本方法中連續(xù)濁音幀的判斷依據過零率檢測和自相關系數,根據統(tǒng)計結果選取了一個有較好區(qū)分度的過零率闕值和自相關系數闕值,參數小于該闕值的幀被判斷為非濁音,不參與DP算法求基頻輪廓線。這樣裁減掉了大部分沒有基頻的非濁音幀,大大降低了它們對用DP算法提取基頻的影響,減少了錯誤;同時既保證了基頻輪廓線的連續(xù)性,也大大減少了DP算法的延遲。被包括進來的少數非濁音幀不會對DP算法有大的影響;少數沒有被包括進來的濁音幀可以在連線中得到很好的補償。4.其它的措施。過零率檢測。如上所述,為了提高濁音和非濁音的區(qū)分率以及提高基頻提取的速度,對語音信號首先進行了過零率檢測。預先設定一個較大的闕值,過零率超過該值的被判定為非濁音,不進行基頻提取。否則用下面提到的的FFT/DP算法提取基頻。闕值設的較大的原因是可以保證濁音不被過濾掉。為了減少波形偏移的影響,過零率的參考值不是零,而是一幀數據的均值。降采樣率和插值。為提高降低基頻提取精度,對進行FFT變換之前的語音信號進行了降采樣率處理,對由FFT得到的頻率譜進行了插值。設原始采樣率為SR,把采樣率降低為原來的1/RDC后,進行FFTLen點的FFT變換,得到的功率譜再用Inpl N點插值(即每相鄰量個FFT點間插Inpl_N-1個點),那么得到的基頻提取分辨率就是SRRDC*FFTLen*Inpl_N---(7)]]>在本實施例子中,原始信號采樣率SR=16000Hz,降低為1/4,即RDC=4,FFT變換點數為FFTLen=512,插值Inpl_N=20點。這樣提取分辨率就是0.39Hz。而對于每幀384個采樣點的自相關函數提取法,提取分辨率為16000/N2(N為信號周期對應的采樣點),即大約從15Hz到0.4Hz,顯然其在基頻范圍內具有足夠高的分辨率。
采用上述發(fā)明的優(yōu)點在于結合時域和頻域基頻提取這兩種方法,能進行有效的互補通過頻域處理按照諧波和的大小確定基頻候選,中間沒有門限等人為設置,可以減少計算的不確定性量;在動態(tài)規(guī)劃函數上,同時考慮了時域自相關和頻域諧波和這兩個與基頻密切相關的重要指標,使之最大,保證了基頻的連續(xù)性和可靠性;而不定長回溯則能減少語音識別系統(tǒng)的理論延時,這對實時性要求比較強的如電話語音識別等非常重要。
為了比較本發(fā)明的有效性,從聲道干擾較強、基頻提取比較難的兩句語音中抽取了725幀濁音,經人工判斷,以明顯的不連續(xù)基頻作為識別錯誤。在沒有采用本發(fā)明中的基頻候選加DP算法之前,識別錯誤率為11.7%,采用之后為0.4%。識別的準確率大大提高。
結合上述描述,完整的基頻提取的流程如圖6所示(1)信號分割,輸入的語音信號首先被分割為若干幀,相鄰兩幀有一定的重疊;然后分別對每幀進行如下處理;(2)過零率檢測,計算平均過零次數,進行清濁音的粗略估計;過零次數高于給定的闕值被判定為非濁音幀,不進行基頻提?。?3)降采樣率,既提高了基頻提取分辨率,又可以保證不損失1250Hz以上對基頻提取有意義的頻率成分;(4)預加重和加窗,該部處理的目的是減少了頻率混疊。采用的是hamming窗。公式為 (5)FFT計算及求功率譜,采用的是512點的FFT(快速傅利葉變換)。用公式S(f)|X(f)|2計算功率譜;(6)插值,為了提高基頻提取的精度,在頻譜的每兩個FFT點值之間插Inpl_N=20個值,使用的是二次Spline插值方法;(7)計算諧波累加和,諧波累加的公式為(8)確定基頻候選,從諧波累加譜中選若干個峰,求峰值點對應的基頻,以及該峰值與最大峰的相對高度,即Hper;H(f)=Σn=1HNhnS(nf)]]>(9)對多個基頻的候選在時域上求相應的自相關系數,即Rper;對于具有過低的Hper值或Rper值的基頻候選被過濾掉,以減少DP的運算量;(10)用DP算法求基頻路徑,用DP算法計算每條路徑的得分,得分公式為Score(i)=max{Score(i-1)-D(i,j)}+aRper(i)+bHper(i)也可以記為Score(Dis,Hper,Rper);其中Dis表示基頻的變化,Rper表示自相關系數,Hper表示峰的相對高度;根據得分,取前幾名的幾條路徑記錄下來;(11)處理完一段連續(xù)的濁音幀,則根據DP算法的得分以最優(yōu)的基頻路徑作為提取的結果輸出;否則返回過零率檢測;處理完全部的輸入信號,進入歸一化和連接,對一段處理完的語音,用平均基頻進行歸一化,這樣可以消除說話人的差別;連接是把沒有基頻的輔音部分和具有基頻的元音部分進行平滑的連接。
實施例漢語語音的一個顯著特點就是漢語的聲調。漢語普通話聲調一般分為一聲、二聲、三聲、四聲,亦即陰平、陽平、上聲、去聲。另外還有輕聲(零聲調)。相同的聲韻母組成的音節(jié),很可能有完全不同的意義,對應不同的字或詞。(例如興起、星期、刑期、行期、腥氣。)因此,聲調在漢語語言的識別中有很重要的意義。
聲調體現在基頻F0軌跡的變化。
圖1左邊表示的是孤立語音的聲調與基頻對照,右邊是連續(xù)語音聲調與基頻的對照圖。而本發(fā)明提出的基頻提取方法可以為語音識別提供較為準確的基頻輪廓線,用于聲調識別;特別是可以將提取的基頻作為語音識別系統(tǒng)的參數,或建立聲調模型,以更全面反映語音特征,指導語言的處理,提高識別的準確度。
基頻輪廓線的準確提取還可作為連續(xù)語音中句法結構、詞語重讀、說話者意向等信息識別的重要依據;漢語的聲調是漢語教學中的一難點,通過基頻曲線的顯示可以交互式地指導學生的發(fā)音,因而可用于漢語普通話的教學中。雖然聲調會受到上下文的影響,但聲調信息比較不受聲學環(huán)境和通道的影響,因而從某一個角度,聲調對于提高語音信息處理的可靠性具有重要意義。
權利要求
1.一種用于語音識別的高精度高分辨率基頻提取方法,其特征在于基頻提取的步驟為(1)信號分割,輸入的語音信號首先被分割為若干幀,相鄰兩幀有一定的重疊;然后分別產生下一幀的處理;(2)過零率檢測,計算平均過零次數,進行清濁音的粗略估計;過零次數高于給定的闕值被判定為非濁音幀,不進行基頻提?。?3)降采樣率,既提高基頻提取分辨率,又可以保證不損失1250Hz以上對基頻提取有意義的頻率成分;(4)預加重和加窗,此部分處理的目的是減少頻率混疊。采用的是hamming窗,公式為 (5)FFT計算及求功率譜,采用的是多點的FFT(快速傅利葉變換),用公式計算功率譜S(f)=|X(f)|2(6)插值,為了提高基頻提取的精度,在頻譜的每兩個FFT點值之間插Inpl_N個值,使用的是二次Spline插值方法;(7)計算諧波累加和,諧波累加的公式為H(f)=Σn=1HNhnS(nf)]]>(8)峰值檢測,確定基頻候選,從諧波累加譜中選若干個峰,求峰值點對應的基頻,以及該峰值與最大峰的相對高度,即Hper(9)對多個基頻的候選在時域上求相應的自相關系數,即Rper;對于具有過低的Hper值或Rper值的基頻候選被過濾掉,以減少DP的運算量;(10)用DP算法求基頻路徑,用DP算法計算每條路徑的得分,得分公式為Score(i)=max{Score(i-1)-D(i,j)}+aRper(i)+bHper(i)也可以記為Score(Dis,Hper,Rper);其中Dis表示基頻的變化,Rper表示自相關系數,Hper表示峰的相對高度;根據得分,取前幾名的幾條路徑記錄下來;(11)處理完一段連續(xù)的濁音幀,則根據DP算法的得分以最優(yōu)的基頻路徑作為提取的結果輸出;否則返回過零率檢測;處理完全部的輸入信號,進入歸一化和連線,對一段處理完的語音,用平均基頻進行歸一化,這樣可以消除說話人的差別;連接是把沒有基頻的輔音部分和具有基頻的元音部分進行平滑的連接。
2.根據權利要求1所述的用于語音識別的高精度高分辨率基頻提取方法,其特征在于結合時域與頻域的基頻分析,抽取可能的幾個基頻候選,并采用一種自相關系數、頻譜分析結果以及基頻變化量相結合的目標函數用動態(tài)規(guī)劃算法進行搜索,在進行自相關計算前,根據語音識別用的頻譜分析結果,利用FFT諧波分析法,對語音的基頻范圍進行初步的估計,降低自相關計算的范圍,并且對基頻提取精度不產生影響;諧波分析法的特征包括降采樣率、預加重和加窗、FFT計算及為了提高分辨率進行二次Spline插值等步驟。
3.根據權利要求1所述的用于語音識別的高精度高分辨率基頻提取方法,其特征在于完成諧波分析后,從諧波累加譜中選若干個峰,求峰值點對應的基頻,以及該峰值與最大峰的相對高度,即Hper,然后對多個基頻的候選在時域上求相應的自相關系數,即Rper,對于具有過低的Hper值或Rper值的基頻候選需過濾掉。
4.根據權利要求2、3所述的語音識別用高精度高分辨率基頻提取方法,其特征在于取頻譜分析結果前幾名作為基頻的候選,然后根據人類發(fā)音其基本基頻軌跡不可能產生突變這個原理,采用動態(tài)規(guī)劃的方法從這些候選中確定正確的基頻序列。
5.根據權利要求1所述的用于語音識別的高精度高分辨率基頻提取方法,其特征在于由于搜索目標函數時,基頻不可能產生突變,且盡量使整個路徑的自相關累加值最大以及諧波峰值累加值最大,而提出相應的目標函數Score(i)=max{Score(i-1)-D(i,j)}+aRper(i)+bHper(i)其中Score(i)表示該基頻路徑在第i幀的得分,a,b為系數,D(i,j)表示第i幀的基頻pi與第i-1幀的第j個基頻候選pi的距離D(i,j)=2*|pi-pj|/(pi+pj)
6.根據權利要求1所述的用于語音識別的高精度高分辨率基頻提取方法,其特征在于在使用基于連續(xù)密度的HMM中,需要對基頻進行平滑,使用直接連接法把沒有基頻的輔音部分和具有基頻的元音部分進行連接,并用平均基頻進行歸一化,以消除說話人的影響。
7.根據權利要求4和6所述的用于語音識別的高精度高分辨率基頻提取方法,其特征在于根據非濁音沒有明顯基頻的特點,采用了不定長回溯方法,減少了非濁音隨機基頻提取結果對DP帶來的干擾;還采用結合過零率檢測和自相關系數作為判斷依據,再根據統(tǒng)計結果選取一個有較好區(qū)分度的過零率闕值和自相關系數闕值,參數小于該闕值的幀被判斷為非濁音,不參與DP算法求基頻輪廓線,在裁減掉大部分沒有基頻的非濁音幀時,降低了這些非濁音噪聲類對用DP算法提取基頻的影響,減少了錯誤。
全文摘要
用于語音識別的高精度高分辨率基頻提取方法是一種將頻域、時域分析以及動態(tài)規(guī)劃(DP)相結合的基頻提取方法。主要特點是:首先對語音信號在頻域上進行FFT變換,再對其進行諧波分析,然后通過峰值檢測,選若干個基頻的候選,在時域上對這些候選基頻用自相關系數評測,再用動態(tài)規(guī)劃算法不定長回溯綜合頻域、時域的分析結果以及基頻變化量確定一條最優(yōu)的基頻輪廓線。為保證基頻提取的分辨率,采用了降采樣率、插值等方法。
文檔編號G10L15/00GK1342968SQ0012471
公開日2002年4月3日 申請日期2000年9月13日 優(yōu)先權日2000年9月13日
發(fā)明者徐波, 張健 申請人:中國科學院自動化研究所