專利名稱:漢語連續語音識別系統的制作方法
技術領域:
本發明涉及一種漢語連續語音識別系統,尤其是一種采用基于段長分布的隱含馬爾可夫模型的漢語連續語音識別系統。
背景技術:
語音識別就是從人的語音波形中提取信息并確定其語言含義的過程。語音識別作為一門交叉學科,涉及到了信號處理、統計模式識別、人工智能、計算機科學、語言學和認知科學等眾多學科。語音識別技術大致可以分為以下幾類語音信號檢測和特征提取技術,語音信號發生機理和數學模型建立,語音識別單元選擇,訓練和識別搜索算法,語言模型處理技術,語法和語義分析技術等等。
隱含馬爾可夫模型(Hidden Markov Model-HMM)是目前非特定人語音識別的最重要的方法,HMM模型是語音產生機理的一種符合自然的描述,早在1913年A.A.Markov就提出了將Markov模型用于字符串的匹配,HMM數學理論方面的工作主要由Baum等人所完善,70年代中期Baker和Jelinik等人首次把HMM用于語音識別,當時他們研究的是連續語音的識別問題。隨著語音識別的研究由連續語音轉向孤立詞和70年代末80年代初矢量量化(Vector quantification-VQ)技術的出現,Rabiner和Levinson等人把HMM用于與人無關的孤立詞識別獲得了成功,隨著語音識別研究工作的深入開展,HMM語音識別方法愈來愈受到人們的重視,但與此同時,人們也愈來愈認識到經典HMM語音識別模型在一些重要方面存在嚴重缺陷,這就是第一、經典HMM是一個齊次的Markov模型,狀態轉移概率與狀態駐留長度無關,與語音的實際過程不符;第二、經典HMM模型用于大詞匯表的識別系統時,其模型的訓練量是災難性的;第三、無法自適應,從而對于進一步提高系統的識別率將是困難的;第四、模型的存儲量太大。
由于上述方面的缺陷,導致采用經典HMM模型的語音識別系統的識別率低下,同時因為系統運算量和存儲量巨大使得系統工作效率不高,自我學習能力降低,系統開發成本偏高,難以普及到廣泛的應用當中去。
發明內容
本發明的目的在于提出了一種采用基于段長分布的隱含馬爾可夫模型的漢語連續語音識別系統,該語音識別系統比現有語音識別系統的識別率有顯著提高,更重要的是該語音識別系統的訓練算法比經典HMM的Baum-Welch訓練算法要快近二個數量級,存儲量也小得多,解決了所謂的訓練災難,同時提高了系統學習能力,從而可以在使用過程當中不斷地提高語音識別率。
為達到上述目的,本發明是這樣實現的本發明包括語音采集裝置、前端處理模塊、特征提取模塊、基音特征提取模塊、聲調識別模塊、訓練模塊、聲學層識別模塊、拼音文法理解模塊、語言理解模塊九個部分,該聲學層識別模塊采用以狀態的段長概率來表示的隱含馬爾可夫模型,即基于段長分布的隱含馬爾可夫模型,簡稱DDBHMM模型,該模型的段長服從具有凸性的分布,其中,該模型中的狀態與語音中的音素或音節等語音單元相對應,而這些語音單元讀音的語音信號特征作為對應語音單元的觀測量;該訓練模塊的訓練方法步驟如下對訓練模塊輸入一個或多個包含有若干特定詞的讀音樣本文件,該文件中的每句話的一系列幀的特征向量以幀為單位,通過訓練模塊中的訓練搜索算法,對每幀語音信號中的每個詞的每個狀態進行搜索比較,得到語音信號特征矢量的矢量量化碼本(VQ碼本)和該特定詞的DDBHMM模型參數,輸入給聲學層識別模塊;所述的漢語連續語音識別系統的語音識別方法步驟如下通過語音采集裝置接收人們的語音信號,對于輸入的語音信號進行前端處理,并進行MFCC語音特征(基于Mel倒譜系數的語音特征,Mel-Frequency CepstralCoefficients)序列的提取,得到的該MFCC語音特征序列被送入聲學層識別模塊,通過聲學層識別模塊的搜索算法,產生拼音格形式的識別結果,同時,語音信號的基音特征矢量也被提取出來,送入聲調識別模塊,聲調識別模塊利用基音特征信息和拼音的分割點信息,得到拼音的聲調信息并加入到拼音格中,接著,通過拼音文法理解模塊對拼音格進行修剪,精簡后的音節格被送入語言理解模塊,轉化為拼音圖和詞圖,并在詞圖中進行搜索,得到最后的理解結果。
對語音信號的前端處理包括先進行語音信號檢測,濾去確認為靜音或雜聲的信號,然后進行包括高頻預加重、加窗、分幀的預處理操作。
該基于段長分布的隱含馬爾可夫模型是一個六狀態的模型。
該基于段長分布的隱含馬爾可夫模型是一個段間不相關的模型。
所述的具有凸性的分布是均勻分布或者高斯分布。
所說的VQ碼本數量為857,音節總數為1254。
訓練模塊中的訓練搜索算法步驟如下首先獲得該狀態對應的初始碼本,計算出該特征向量對狀態的概率,接著計算上一時刻該狀態的路徑在原地駐留的似然距離,然后對于新加入的此幀信號的特征向量進行最佳路徑的匹配,即找到它到原駐地的最佳狀態路徑,此后進入下一幀的搜索,直到一句話的訓練結束,然后統計和修改初始碼本的DDBHMM模型參數,完成本句話的訓練和碼本參數統計后,接著再進行輸入文件的下一句話的訓練和碼本參數統計,累加各句話訓練后得到的概率,以得到當前文件經訓練得到的概率,并將本次訓練過的每個文件得到的概率累加到本次訓練得到的總概率中,判斷本次訓練與上一次訓練后得到的總概率是否相等,不相等則進入下一次的循環訓練,相等則訓練結束。
計算上一時刻該狀態的路徑在原地駐留的似然距離的方法是,對該狀態上一時刻到原駐地的最佳路徑隊列中的每個單元,計算相對于本碼本的狀態駐留概率和狀態轉移概率,然后累加即可。
訓練時對于新加入的此幀信號的特征向量進行最佳路徑的匹配的方法分為兩種情況一是該特征向量所對應的幀所處的狀態與上一個特征向量所對應的幀所處的狀態屬于同一個字,處理的方法為復制前一時刻本狀態到原駐地的最佳路徑,并計算這條路徑到原駐留地的總的概率,然后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中,具體加入的操作過程為首先看此幸存狀態路徑隊列是否為空,若是,則令幸存路徑雙向列表的指針都指向此路徑;否則,則將此新加的路徑加到幸存路徑隊列的隊尾,接著對似然距離進行排序,比較各條在不同的時刻進入此狀態的路徑,若先進入本狀態的路徑在概率上若不比后進入本狀態的路徑占優,則該先進入本狀態的路徑被刪除,按此方法沿著幸存路徑隊列向前推進,直到隊頭;二是該特征向量所對應的幀處在某一個字的第一個狀態,這又分為兩種情況此狀態對應的字不是第一個字,則也應該復制以前的最佳路徑,分配新的路徑,鏈接最佳路徑并計算出該狀態累加似然距離,然后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中;此狀態對應的是第一個字,則直接分配路徑,記錄進入當前路徑的時刻,計算該路徑在原駐地的似然距離,然后將此路徑加入到當前狀態的幸存路徑的雙向列表中。
所說的初始碼本的參數的統計,其步驟為在統計的時候是每個狀態對應一個碼本,對于給定的本句話的一系列特征向量,從這句話對應的幸存路徑的最后一個字開始,對每個字的每個狀態分別進行統計,包括獲取每個狀態的段長、計算每個狀態的持續時間,然后統計出該字對應碼本的段長的均值和方差,用與當前的狀態相對應的特征向量的值統計出該狀態的碼本各參數的均值,對于方差的統計,根據事先定義的標志來確定,這個標志表明系統對速度和精度的偏好,當它的值為1時,表明偏好速度,只統計碼本的方差;否則,表明偏好精度,則要計算各個特征之間的協方差矩陣,做完上述統計以后,則進入下一個字的各狀態的碼本的特征的統計,直到本句話統計完成。
聲學層識別模塊工作方式如下首先調入經過訓練得到的碼本及其DDBHMM模型參數,對于輸入的MFCC語音特征向量,獲得其幀數,計算出該特征向量對所有碼本的概率,對每一幀輸入連續語音識別器進行幀同步識別,在使用幀同步識別方法得到一系列的路徑以后,獲取當前幀的最佳字串路徑;累加每句話的路徑概率,得到整句話的累加概率;直到整句話結束,通過回溯得到最優路徑以及路徑上各個音節的候選,并保存為識別結果。
所述的幀同步識別方法為,在此語音識別器中,對每一幀到來的特征向量采用搜索算法進行識別,對于到來的這幀信號,根據位置的不同分為兩種情況一、此特征向量是某一句話中的第一幀信號,則它對應的狀態對任何字而言都是第一個狀態,因此計算出該特征向量對所有的候選字的第一個狀態對應的碼本的概率,為此特征向量分配一條新的狀態路徑,然后設置進入當前路徑的時刻為當前幀的標號、設置當前路徑的概率為該特征向量對所有的候選字的第一個狀態對應的碼本的概率、記錄當前路徑的字的標號,將段長值設為1,計算出當前路徑的狀態駐留概率,將兩個概率,即該特征向量對所有的候選字的第一個狀態對應的碼本的概率和當前路徑的狀態駐留概率求和,即得到該路徑的完全概率,最后將此路徑加到當前狀態的幸存路徑的雙向列表中,返回;二、此特征向量對應的不是一句話的第一幀信號,處理的方法為將最優狀態路徑的指針設為空,若此次識別是連續語音的識別,則需要考慮當前幀產生的最優字輸出結果,搜索出最佳的狀態路徑,搜索方法為從每個字對應的最后一個狀態開始搜索,找到該字的最佳幸存狀態路徑隊列的頭指針,若頭指針為空,則表示沒有與該字對應的最佳狀態路徑序列,直接返回;若不為空,則比較各個字的識別器的輸出概率,得到最大的那一個,然后記錄字間跳轉的位置,即當前幀的標號,返回最佳字的狀態路徑隊列的頭指針,這就是搜索到的最佳路徑,在得到最佳的字的狀態路徑以后,若不為空,則復制該最優路徑,若該路徑對應的字不是第一個字,則要增加對前導字的引用,并使最優路徑指針指向該新分配的狀態路徑;處理完每一幀的特征向量,則對當前所有可能的路徑進行剪枝。
當對情況二,即此特征向量對應的不是一句話的第一幀信號,對于狀態間的跳轉,分為兩種情況,即字內狀態跳轉和字間狀態跳轉,處理的方法分別為對字內狀態跳轉的情況,則為當前狀態分配一個新的路經,具體方法是取得前一狀態路徑,為本幀特征向量創建新的路徑并復制前一狀態路徑、設置進入當前路徑的時刻,計算新的狀態路徑的完全概率,最后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中;字間跳轉的情況字間的跳轉只有在連續語音識別時才存在,對孤立字的識別時,此時不用執行任何操作;對連續語音識別的情況,不用獲取前一狀態的最佳路徑而直接創建新的路徑并鏈接該路徑、增加前一字的最佳路徑的引用,計算出新的狀態路徑到原駐留地的完全概率,即狀態駐留概率和路徑概率之和,最后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中。
獲取當前幀的最佳字串路徑的方法為對每一句話產生的各條幸存的路徑,對所有的字逐一比較找出其中似然距離最大的那一個,就得到最佳字串狀態路徑。
對當前所有可能的路徑進行剪枝的步驟為從當前狀態的狀態幸存路徑隊列的隊尾開始,對似然距離進行排序,若先進入本狀態的路徑在概率上若不比后進入本狀態的路徑占優,則該先進入本狀態的路徑被刪除,采用此種方法向前推進,刪除其中所有不可能成為最佳的路徑,直到幸存狀態路徑隊列的隊頭。
在本發明中,搜索最優路徑的過程是一個幀同步算法,在對每一幀進行搜索時,進行剪枝和排序,最后獲得最優路徑。在連續語音識別中采用此方法進行最優路徑搜索的計算量可以比全搜索的方法下降2個數量級以上,存儲量也大大減少。對本發明的非特定人連續語音實驗結果表明,本發明的DDBHMM語音識別模型比經典的HMM模型的誤識率降低了12.9%,展示了DDBHMM的良好的性能;另外,本發明提出的訓練模塊很容易自適應,方法是由系統使用人讀預先設計好的文本,以其特征修改HMM模型參數后再進行識別。這種自適應能力還體現在其實時性,在使用時并不一定需要專門念自適應文本,而是在使用過程中自動進行的,這就使得系統在使用中能自我學習、自我完善。因此,本發明與現有漢語連續語音識別技術相比,速度快,存儲量小是本發明的極大優點,因此不但識別率有顯著提高,而且還降低了本發明的開發成本,完全可以在一般的微機(如PC機)上應用。
圖1為基于段長分布的隱含馬爾可夫模型示意圖;圖2為基于段長分布的隱含馬爾可夫模型狀態序列示意圖;圖3為本發明實施例的總體流程框圖;圖4為圖1所示實施例的訓練模塊流程框圖;圖5為圖4所示“訓練模塊中對每個文件進行訓練”模塊的進一步描述流程框圖;圖6為圖5所示“依次對文件中的每句話進行訓練”模塊的進一步描述流程框圖;圖7為圖6所示“統計碼本的參數”模塊的進一步描述流程框圖;圖8為圖6所示“對相應的語音段進行訓練”模塊的進一步描述流程框圖;圖9為圖1所示實施例的聲學層模塊流程框圖;圖10為圖9所示的聲學層模塊中“幀同步語音識別”模塊的進一步描述流程框圖;圖11為圖10所示的流程框圖中“對每個字進行幀同步識別”模塊的進一步描述流程框圖。
具體實施例方式
以下結合附圖和具體實施例對本發明做進一步的闡述如圖1、2所示,本發明提出了一種用段長概率來表示的HMM模型(隱含馬爾可夫模型),顯然這是一個非齊次馬爾可夫模型。將這個非齊次馬爾可夫模型用于語音識別,并且把模型中的狀態與語音中的音素或音節等語音單元對應起來,而把這些語音單元讀音的語音信號特征作為對應語音單元的觀測量,我們就得到了一個基于段長分布的HMM模型(Duration DistributionBased Hidden Markov Models),簡稱為DDBHMM。在DDBHMM中只需要兩個參數λ=(B,D)。這里矩陣B是特征觀測概率矩陣B=[b1(o),b2(o),…bN(o)],矩陣D是狀態的段長概率矩陣D=[d1(τ),d2(τ),…dN(τ)],這里τ表示段長,服從概率分布di(τ)(0≤τ≤Dmax,i=1,2…N),N是模型狀態的個數。
為了計算DDBHMM模型產生觀測矢量O=[o1,o2,…,oT]的概率,我們設S=[s1,s2,…,sT]為觀測矢量O所對應的系統的狀態序列,Ti為系統在狀態i的段長,用ti=Σk=liTk(1≤i≤N)]]>表示狀態序列s1…sT的分割點(t0=0,tN=T)。于是對于給定的DDBHMM模型λ有p(O,S/λ)=p(s1···sT)·b(o1···oT/s1···sT)]]>=a1,1(1)Πi=lNΠk=2Tiai,i(k)·ai,i+1(Ti+1)·Πi=lNb(oTi-1+1···oTi/o1···oTi-1)]]>=Πk=lNPk(Tk/T1···Tk-1)b(oTk-1+1···oTk/o1···oTk-l)---(1)]]>這是一個相當一般化的描述它既包容了狀態段長之間的相關,也包含了幀間特征之間的相關,而且段長分布函數Pk(τ)(k=1,2,…,N)可以取任何形式。因此DDBHMM模型具備了很強的對語音的描述能力。
假設觀測矢量是段(狀態)間不相關的,則觀測矢量概率就可以寫成P(O,S/λ)=Πk=lNPk(Tk)bk(otk-1+1···otk)---(2)]]>DDBHMM模型是非齊次的HMM模型,由于非齊次馬爾可夫鏈是有后效過程,不能使用諸如Viterbi、Baum-Welch等基于Bellman動態規劃理論的解碼算法和參數重估算法,需要有完全新的、高效的模型訓練和解碼算法。DDBHMM模型應用的關鍵是構造高效的最優分割算法,即在某一模型λ下快速地找到一種分割(t1,t2,…,tN)使函數式(2)取值最大。函數式(3)所示的算法是一種基于最優狀態路徑的識別算法。在模型訓練時,則是對指定的訓練模型λ求出最佳的狀態路徑,然后再對模型參數進行分段訓練。
λ^=argmax(λ;S)P(O,S/λ)]]>=atgmax(λ;t1,t2,···,tN)Πk=lNPk(Tk)bk(otk-1+1···otk)]]>=argmaxλmax(t1,t2,···,tN)Πk=lNPk(Tk)bk(otk-1+1···otk)---(3)]]>為了獲得函數式(3)中的最佳分割點t1,t2,…,tN,可以構造如下的模型訓練和識別算法。
定義Lk(t,n)為k時刻由狀態(n-1)進入狀態n的路徑在t時刻(t≥k)的累積似然比值。
Lk(t,n)=Σi=0n-1{lnPi(Ti)+Σm=ti-l+1tilnbi(Oti)}+Σm=ktlnbn(Om),]]>I(t,n)=Lk(t,n)+lnPn(t-tn-1)=Lk(t,n)+lnPn(t-k+1)]]>n=1,···N;t=1,···T---(4)]]>則λ^=arg{maxλmax(t1,···,tN)I(T,N)}---(5)]]>為了求解(3)式的最優路徑問題,需求出每一時刻進入每個狀態的最佳路徑。可以證明引理1設lgPn(τ)是定義域D(即τ∈D)中的上凸函數,若j≤k≤t,Lj(t,n)+lnPn(t+1-j)≤Lk(t,n)+lnPn(t+1-k)(6)則t’>t有Lj(t’,n)+lnPn(t’+1-j)≤Lk(t’,n)+lnPn(t’+1-k)(7)引理1成立的唯一條件是關于段長概率分布的凸性假設,它包含了一大類有用的分布(例如均勻分布、三角分布、指數分布、正態分布、Reilygh分布、余弦分布等均滿足引理假設),從而這一條件在實際應用中總是成立的,所以引理1的假設不會成為算法應用的限制。
引理1表明,如果進入狀態n的某條路徑在(t+1)時刻向(n+1)狀態轉移時不比其它更晚進入的路徑占優,則在以后任何時刻(t’+1)(t’>t)從n狀態向(n+1)狀態轉移時都不可能成為占優者,從而在t時刻就可以把它刪除而不會影響算法的最優性。在搜索算法中,我們通過只保留幸存路徑,來保證最優的路徑不被錯誤地剪枝掉。幸存路徑的定義如下對于任意的k,當j<k≤t,在j時刻進入狀態n的路徑在t(t>j)時刻均有Lj(t,n)+lgPn(t+1-j)>Lk(t,n)+lgPn(t+1-k) (8)則稱該路徑是幸存路徑。
根據引理1,如果我們在每一幀時刻,對狀態路徑都進行上式的比較并且只保留每個狀態下的幸存路徑,則可以大大減少最優搜索的路徑數目。據此容易推出引理2引理2設t時刻狀態n有m條幸存路徑,對應的進入n狀態的時間為tn(0)<tn(1)<…<tn(m-1),累積似然比為Ltn(0)(t,n),Ltn(1)(t,n),···,Ltn(m-1)(t,n),]]>則有Ltn(j)(t,n)+lgPn(t+1-tn(j))>Ltn(j+1)(t,n)++lgPn(t+1-tn(j+1)),]]>j=0,1,…,m-2 (9)這就是說,越早進入的幸存路徑在下一個時刻的轉移中具有越大的優先權,從而在(t+1)時刻由狀態n向狀態(n+1)轉移的最佳路徑總是第0條,對應的累加似然比值為Ltn(0)(t,n)。引理2保證了最佳路徑總是最早進入當前狀態的幸存路徑。因此可以推出如下定理定理1在T時刻滿足式(3)的最佳路徑是T時刻狀態N所對應的所有幸存路徑中最早進入狀態N的路徑。
在DDBHMM模型中,搜索最優路徑的過程是一個幀同步算法。在對每一幀進行搜索時,用引理1和引理2進行剪枝和排序,最后由定理1保證最優路徑的獲得。在連續語音識別中采用此方法進行最優路徑搜索的計算量可以比全搜索的方法下降2個數量級以上。
圖3是本發明的一個實施例,它包括有語音采集裝置、前端處理模塊、特征提取模塊、基音特征提取模塊、聲調識別模塊、訓練模塊、聲學層識別模塊、拼音文法理解模塊、語言理解模塊九個部分,該訓練模塊和聲學層識別模塊采用基于段長分布的隱含馬爾可夫模型(DDBHMM模型),該段長服從高斯分布,并且段間不相關。其中,該模型中的狀態與語音中的音素或音節等語音單元相對應,并且每個字的狀態為六個,而這些語音單元讀音的語音信號特征作為對應語音單元的觀測量。對訓練模塊輸入一個或多個包含有若干特定詞的讀音樣本文件,該文件中的每句話的一系列幀的特征向量以幀為單位,通過訓練模塊中的訓練搜索算法,對每幀語音信號中的每個詞的每個狀態進行搜索比較,得到一個語音信號特征矢量的VQ碼本和該特定詞的DDBHMM模型參數,輸入給聲學層識別模塊;本發明的語音識別方法步驟如下通過語音采集裝置接收人們的語音信號,對于輸入的語音信號進行前端處理,并進行MFCC語音特征(基于Mel倒譜系數的語音特征,Mel-Frequency Cepstral Coefficients)序列的提取,得到的該MFCC語音特征序列被送入聲學層識別模塊,通過聲學層識別模塊的搜索算法,產生拼音格形式的識別結果,同時,語音信號的基音特征矢量也被提取出來,送入聲調識別模塊,聲調識別模塊利用基音特征信息和拼音的分割點信息,得到拼音的聲調信息并加入到拼音格中,接著,通過拼音文法理解模塊對拼音格進行修剪,精簡后的音節格被送入語言理解模塊,轉化為拼音圖和詞圖,并在詞圖中進行搜索,得到最后的理解結果。
上述訓練模塊中的訓練搜索算法是這樣實現的,如圖4至圖8所示首先,初始化訓練模塊,包括打開系統要使用的批處理命令文件;讀取初始語音訓練碼本文件名;讀取輸出語音訓練碼本的文件名;讀取段長加權系數,并設置段長加權系數;從批處理命令文件中讀取本程序使用的訓練的文件數量,此值應該在0到200之間,并檢驗訓練文件的數量是否符合要求;從上述批處理命令文件中讀取用來訓練的語音文件、語音描述文件和語音端點文件的文件名,到此,批處理命令文件的命令參數讀取完畢,關閉該文件;打開語音描述文件,并為每個語音描述文件在內存中分配相應的內存鏡像,具體的步驟為打開文件后,獲取文件的長度,然后在內存中分配相應大小的緩沖區,最后移動文件指針到數據的起始地點,讀入文件中的數據到內存緩沖區中,關閉該文件。進入下一個文件數據到內存緩沖區鏡像的建立,直到所有文件執行完畢;顯示訓練文件的數量和文件名;顯示初始語音訓練碼本文件名和輸出語音碼本文件名;設置保存上一輪訓練結束時的概率的變量為0;加載原始訓練碼本,即按照碼本數量等于857和單詞總數等于1254生成碼本對象,創建對象的過程中,完成的操作包括設置碼本的數量、設置詞的總數、在內存中分配碼本的緩沖區和碼本的臨時緩沖區、分配保存碼本的段長值的數組、分配存儲每個特征對碼本概率的數組、分配記錄每個狀態所對應的碼本號的二維數組和碼本所對應的特征向量的數量的數組(各碼本對應的特征向量對此數組中相應于該碼本的值的平均即為碼本的各參數);從記錄狀態到碼本的映射的文件中讀入每個狀態對應的在該文件中的碼本號,存儲到二維數組中;從初始化語音訓練文件中讀入各碼本參數的初始值;設置段長加權系數;其次,創建DDBHMM語音訓練器,在創建過程中,完成的操作包括設置使用的碼本的指針,設置用來訓練的詞的數量和詞表中每部分的詞的數量的指針。同時初始化幸存路徑的雙向隊列的指針為空和本狀態中幸存路徑的數量(為0值);然后,開始循環訓練,次數最多為200次,訓練時對每個文件一次進行,具體的步驟如下獲取每一輪訓練開始的時刻,將其顯示出來,并保存在文件中;設置每一輪訓練的概率Probability的初值,為0;清除碼本緩沖區,開始對每個語音文件進行分別的訓練,步驟為獲取當前數據文件在內存鏡像中的地址;計算與該文件對應的語音描述文件中拼音的數量,讀取的方法是用文件的有用的數據區的大小除以每個結構體的大小;創建特征管理器,用于特征讀取管理,創建的過程中,完成的操作為在內存中完成語音特征文件的內存鏡像,同時計算語音特征文件中存儲的語音的個數,并創建語音特征緩沖區。創建語音端點文件的內存鏡像,同時獲取語音端點文件的內容;獲取當前文件中語音的數量,并檢驗拼音的數量和語音的數量是否相等,不相等則返回,相等則繼續執行;設置每個文件訓練的初始概率為0;依次對文件中的每一個語音(每句話)進行訓練,訓練的方法為獲取與當前這句話所對應的特征向量的幀數;設置訓練器中訓練的碼本號參數,其中有詞表索引中詞的數量,內存鏡像中當前語音存儲區的地址;初始化各個字的狀態,其設置的值與創建語音存儲訓練器的類的構造函數相同;對相應的語音段進行訓練,并獲得該句話的經訓練后得到的概率。訓練中,對傳入的與某句話相應的一系列幀的特征向量進行訓練。在此過程中,以幀為單位進行搜索比較。具體的方法為
對此段語音中的每個詞的每個狀態進行搜索比較。在獲取當前狀態對應的碼本號后,計算出該特征向量對狀態的概率StateProb。
計算上一時刻本狀態的路徑在原地駐留的似然距離,計算方法為找到本狀態上一時刻到原駐地的最佳路徑的隊列的尾指針,對隊列中的每個單元計算相對于本碼本的狀態駐留概率CurTraceDurationProb和狀態轉移概率PathProb然后累加即可。
訓練時對于新加入的此幀信號的特征向量進行最佳路徑的匹配,即找到它到原駐地的最佳狀態路徑。分為兩種情況此特征向量所對應的幀所處的狀態與上一個特征向量所對應的幀所處的狀態屬于同一個字,即此時狀態號HmmStateNo>0。處理的方法為復制前一時刻本狀態到原駐地的最佳路徑,并計算這條路徑到原駐留地的總的概率,然后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中。具體加入的操作過程為首先看此幸存狀態路徑隊列是否為空,若是,則令幸存路徑雙向列表的指針都指向此路徑;否則,則將此新加的路徑加到幸存路徑隊列的隊尾。接著對似然距離進行排序,考慮到引理1的內容,比較各條在不同的時刻進入此狀態的路徑,若先進入本狀態的路徑在概率上若不比后進入本狀態的路徑占優,則該先進入本狀態的路徑被刪除,按此方法沿著幸存路徑隊列向前推進,直到到隊頭;此特征向量所對應的幀處在某一個字的第一個狀態即此時狀態號HmmStateNo=0。這又分為兩種情況第一、此狀態對應的字不是第一個字,則也應該復制以前的最佳路徑,分配新的路徑,鏈接最佳路徑并計算出該狀態累加似然距離,然后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中。加入的方法同于上述加入方法。
第二、此狀態對應的是第一個字,則直接分配路徑,記錄進入當前路徑的時刻,計算該路徑在原駐地的似然距離。然后將此路徑加入到當前狀態的幸存路徑的雙向列表中,加入的方法同上。至此,對當前幀的搜索結束,進入下一幀的搜索,直到一句話的訓練結束;累加各句話訓練后得到的概率WordProb,以得到整個文件經訓練得到的概率FileProbability;統計碼本的參數,統計的過程中,傳遞的參數為一整句話的所有的特征向量。在統計的時候則是每個狀態對應一個碼本。對于給定的一系列特征向量,首先找到這句話對應的幸存路徑的頭指針,然后從幸存路徑的最后一個字開始逐個的進行統計。統計的步驟為獲取該字的標號及進入某個狀態的時刻,對每個字的6個狀態分別進行統計。包括獲取碼本號和每個狀態的段長、計算每個狀態的持續時間。
計算出對應碼本的臨時緩沖區地址,然后統計其段長的均值和方差。
用與當前的狀態相對應的特征向量的值統計出該狀態的碼本各參數的均值。對于方差的統計,根據事先定義的標志DIAG_CODE_BOOK_FLAG來確定,這個標志表明系統對速度和精度的偏好,當它的值為1時,表明偏好系統計算速度,只統計碼本的方差;否則,表明偏好系統計算精度,則要計算各個特征之間的協方差矩陣。做完上述工作以后,則進入下一個字的各狀態的碼本的特征的統計,直到本句話統計完成。最后,返回本條路徑的到原駐地的似然距離,進入下一句話的訓練搜索和個狀態碼本參數的統計,到本文件中所有語音進行完畢;累加當前文件經訓練后得到的概率FileProbability到Probability中;釋放特征管理器占用的資源;顯示和保存該文件的循環選優的次數,文件編號,訓練后得到該文件的概率FileProbability和訓練過的文件得到的概率的總和Probability;修改碼本的參數和保存碼本到碼本輸出參數文件中;獲得此輪訓練結束的時刻,并顯示該輪訓練結束的時刻和保存該輪訓練結束的時刻到文件中;判斷兩次訓練后得到的總的概率是否相等,不相等則進入下一次的循環訓練,相等則訓練結束;最后,釋放碼本對象,訓練算法結束。
本實施例中聲學層識別模塊是這樣實現的,如圖9至圖11所示首先是初始化聲學層識別模塊打開語音識別批處理命令文件,從該批處理命令文件中讀取詞的狀態的文件名;讀取碼本文件名;讀取待識別的文件的數量;檢驗待識別的語音文件的數量是否在0和本系統最大識別文件數之間,是則繼續;否則退出系統;獲取聲學層識別模塊中使用的識別文件名、識別拼音文件名、端點文件名和識別結果輸出文件名,到此,批處理命令文件讀取完畢,關閉批處理命令文件;顯示待識別的文件的數量,顯示識別文件的文件名、識別拼音文件的文件名、端點文件的文件名和識別結果輸出文件的文件名;打開用于將1254個有調音節轉化成408個無調音節的文件,然后讀取該文件的內容,確定有調音節到無調音節的轉化關系;讀取拼音文件的內容,并將其賦給字符串數組;初始化每個文件的字的識別率、音節的識別率、總的字的識別率和總的音節的識別率;設置識別字的數量的初值為0;加載語音識別碼本,初始化碼本,其碼本的數量和字的數量分別為857和1254;從字的狀態集文件中讀入每個字的每個狀態對應的碼本編號;從碼本文件中加載語音識別碼本,即從碼本參數文件中讀入每個碼本的參數,包括特征向量的均值、方差或協方差矩陣、段長的均值和方差;獲取段加權系數,該系數來自于碼本參數文件;顯示碼本文件名和段長加權系數的值;創建連續語音識別器,碼本為上面創建的碼本的指針指向的碼本;接著,在得到需要的相應的參數和建立好上述語音識別器后,對每個待識別文件逐一進行識別,對每個文件識別的步驟為創建與待識別文件組相對應的語音識別結果輸出文件;創建特征管理器,同時從待識別文件和端點文件中讀取相應的語音特征;獲取當前語音文件中的句子的數量,并將此句子的數量寫入保存結果的文件中;獲取該文件訓練開始的時刻,設置文件的初始概率為0,以一句話為單位開始進行識別,具體過程為獲取該句話中特征向量的幀數,初始化語音識別器,計算出該特征向量對所有碼本的概率,對每一幀進行幀同步識別,識別方法為,在此幀同步語音識別器中,對每一幀到來的特征向量采用搜索方法進行識別,對于到來的這幀信號,根據位置的不同分為兩種情況一、此特征向量是某一句話中的第一幀信號,則它對應的狀態對任何字而言都是第一個狀態,因此計算出此特征向量對所有的候選字的第一個狀態對應的碼本的概率StateProb。為此特征向量分配一條新的狀態路徑,然后設置進入當前路徑的時刻為當前幀的標號、設置路徑的概率PathProb為StateProb、記錄當前路徑的字的標號。將段長值設為1,計算出路徑的狀態駐留概率CurTraceDurationProb,將兩個概率StateProb和CurTraceDurationProb求和,即得到該路徑的完全概率。最后將此路徑加到當前狀態的幸存路徑的雙向列表中,返回;二、特征向量對應的不是一句話的第一幀信號,處理的方法為將最優狀態路徑的指針設為空,若此次識別是連續語音的識別,則需要考慮當前幀產生的最優字輸出結果。搜索出最佳的狀態路徑,搜索方法為從每個字對應的最后一個狀態開始搜索,找到該字的最佳幸存狀態路徑隊列的頭指針,若頭指針為空,則表示沒有與該字對應的最佳狀態路徑序列,直接返回;若不為空,則比較各個字的識別器的輸出概率,得到最大的那一個。然后記錄字間跳轉的位置,即當前幀的標號,返回最佳字的狀態路徑隊列的頭指針,這就是我們搜索到的最佳路徑。在得到最佳的字的狀態路徑以后,若不為空,則復制該最優路徑。若該路徑對應的字不是第一個字,則要增加對前導字的引用,并使最優路徑指針指向該新分配的狀態路徑。對于狀態間的跳轉,分為兩種情況,即字內狀態跳轉和字間狀態跳轉,處理的方法分別為對字內狀態跳轉即狀態號HmmStateNo>0的情況,則為當前狀態分配一個新的路經,具體方法是獲得前一狀態路徑的隊列的頭指針,為本幀特征向量創建新的路徑并復制前一狀態路徑、設置進入當前路徑的時刻,計算新的狀態路徑的完全概率,最后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中;字間跳轉即狀態號HmmStateNo=0的情況。因為字間的跳轉只有在連續語音識別時才存在,對孤立字的識別時,不用執行任何操作。對連續語音識別的情況,不用獲取前一狀態的最佳路徑而直接創建新的路徑并鏈接該路徑、增加前一字的最佳路徑的引用,計算出新的狀態路徑到原駐留地的完全概率(為狀態駐留概率和路徑概率之和),最后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中;處理完每一幀的特征向量,則對當前所有可能的路徑進行剪枝。剪枝函數執行的操作為在獲得當前狀態的狀態幸存路徑隊列的指針后,從此隊列的尾部開始,對似然距離進行排序,由前述的引理1可知若先進入本狀態的路徑在概率上若不比后進入本狀態的路徑占優,則該(先進入本狀態的)路徑被刪除,采用此種方法向前推進,刪除其中所有不可能成為最佳的路徑,直到幸存狀態路徑隊列的隊頭,達到剪枝的目的;在使用幀同步識別器得到一系列的路徑以后,獲取當前幀的最佳字串路徑,獲取的方法為對每一句話產生的各條幸存的路徑,由于它的最后一個字肯定是所有可能的候選字中的某一個,故對所有的字逐一比較找出其中似然距離最大的那一個,就得到我們所說的最佳狀態路徑;累加每句話的路徑概率PathProb,得到整句話的累加概率,直到整句話結束,通過回溯得到最優路徑以及路徑上各個音節的候選,并保存為識別結果。
顯示這句話識別出的結果,并將此結果保存到存儲結果的文件中;最后,釋放碼本和語音識別訓練器,語音識別過程結束。
以上所述的是本發明的一個精度優選實施例,如果系統對速度要求較高,可以將上述實施例中的段長分布由高斯分布改為均勻分布,這樣系統的計算量大大降低,而識別精度雖然有所降低,但還是比現有技術要優越。
從上面的說明可以看出,本發明不但提出了具有國際領先水平的基于段長分布的HMM(DDBHMM)模型,而且給出了比經典HMM模型傳統算法更優越、而且具有實用性的訓練算法和識別算法。可以廣泛應用到計算機語音識別輸入、電話語音合成、連續語音聲控電話交換機、機器翻譯等技術項目和產品中去。
權利要求
1.一種漢語連續語音識別系統,其特征在于所述的漢語連續語音識別系統包括語音采集裝置、前端處理模塊、特征提取模塊、基音特征提取模塊、聲調識別模塊、訓練模塊、聲學層識別模塊、拼音文法理解模塊、語言理解模塊九個部分,該聲學層識別模塊采用以狀態的段長概率來表示的隱含馬爾可夫模型,即基于段長分布的隱含馬爾可夫模型,簡稱DDBHMM模型,該模型的段長服從具有凸性的分布,其中,該模型中的狀態與語音中的音素或音節等語音單元相對應,而這些語音單元讀音的語音信號特征作為對應語音單元的觀測量;該訓練模塊的訓練方法步驟如下對訓練模塊輸入一個或多個包含有若干特定詞的讀音樣本文件,該文件中的每句話的一系列幀的特征向量以幀為單位,通過訓練模塊中的訓練搜索算法,對每幀語音信號中的每個詞的每個狀態進行搜索比較,得到語音信號特征矢量的矢量量化碼本(VQ碼本)和該特定詞的DDBHMM模型參數,輸入給聲學層識別模塊;所述的漢語連續語音識別系統的語音識別方法步驟如下通過語音采集裝置接收人們的語音信號,對于輸入的語音信號進行前端處理,并進行MFCC語音特征(基于Mel倒譜系數的語音特征,Mel-Frequency CepstralCoefficients)序列的提取,得到的該MFCC語音特征序列被送入聲學層識別模塊,通過聲學層識別模塊的搜索算法,產生拼音格形式的識別結果,同時,語音信號的基音特征矢量也被提取出來,送入聲調識別模塊,聲調識別模塊利用基音特征信息和拼音的分割點信息,得到拼音的聲調信息并加入到拼音格中,接著,通過拼音文法理解模塊對拼音格進行修剪,精簡后的音節格被送入語言理解模塊,轉化為拼音圖和詞圖,并在詞圖中進行搜索,得到最后的理解結果。
2.如權利要求1所述的漢語連續語音識別系統,其特征在于對語音信號的前端處理包括先進行語音信號檢測,濾去確認為靜音或雜聲的信號,然后進行包括高頻預加重、加窗、分幀的預處理操作。
3.如權利要求1所述的漢語連續語音識別系統,其特征在于該基于段長分布的隱含馬爾可夫模型是一個六狀態的模型。
4.如權利要求1所述的漢語連續語音識別系統,其特征在于該基于段長分布的隱含馬爾可夫模型是一個段間不相關的模型。
5.如權利要求1所述的漢語連續語音識別系統,其特征在于所述的具有凸性的分布是均勻分布或者高斯分布。
6.如權利要求1所述的漢語連續語音識別系統,其特征在于所說的VQ碼本數量為857,音節總數為1254。
7.如權利要求1所述的漢語連續語音識別系統,其特征在于訓練模塊中的訓練搜索算法步驟如下首先獲得該狀態對應的初始碼本,計算出該特征向量對狀態的概率,接著計算上一時刻該狀態的路徑在原地駐留的似然距離,然后對于新加入的此幀信號的特征向量進行最佳路徑的匹配,即找到它到原駐地的最佳狀態路徑,此后進入下一幀的搜索,直到一句話的訓練結束,然后統計和修改初始碼本的DDBHMM模型參數,完成本句話的訓練和碼本參數統計后,接著再進行輸入文件的下一句話的訓練和碼本參數統計,累加各句話訓練后得到的概率,以得到當前文件經訓練得到的概率,并將本次訓練過的每個文件得到的概率累加到本次訓練得到的總概率中,判斷本次訓練與上一次訓練后得到的總概率是否相等,不相等則進入下一次的循環訓練,相等則訓練結束。
8.如權利要求7所述的漢語連續語音識別系統,其特征在于計算上一時刻該狀態的路徑在原地駐留的似然距離的方法是,對該狀態上一時刻到原駐地的最佳路徑隊列中的每個單元,計算相對于本碼本的狀態駐留概率和狀態轉移概率,然后累加即可。
9.如權利要求7所述的漢語連續語音識別系統,其特征在于訓練時對于新加入的此幀信號的特征向量進行最佳路徑的匹配的方法分為兩種情況一是該特征向量所對應的幀所處的狀態與上一個特征向量所對應的幀所處的狀態屬于同一個字,處理的方法為復制前一時刻本狀態到原駐地的最佳路徑,并計算這條路徑到原駐留地的總的概率,然后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中,具體加入的操作過程為首先看此幸存狀態路徑隊列是否為空,若是,則令幸存路徑雙向列表的指針都指向此路徑;否則,則將此新加的路徑加到幸存路徑隊列的隊尾,接著對似然距離進行排序,比較各條在不同的時刻進入此狀態的路徑,若先進入本狀態的路徑在概率上若不比后進入本狀態的路徑占優,則該先進入本狀態的路徑被刪除,按此方法沿著幸存路徑隊列向前推進,直到隊頭;二是該特征向量所對應的幀處在某一個字的第一個狀態,這又分為兩種情況此狀態對應的字不是第一個字,則也應該復制以前的最佳路徑,分配新的路徑,鏈接最佳路徑并計算出該狀態累加似然距離,然后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中;此狀態對應的是第一個字,則直接分配路徑,記錄進入當前路徑的時刻,計算該路徑在原駐地的似然距離,然后將此路徑加入到當前狀態的幸存路徑的雙向列表中。
10.如權利要求7所述的漢語連續語音識別系統,其特征在于所說的初始碼本的參數的統計,其步驟為在統計的時候是每個狀態對應一個碼本,對于給定的本句話的一系列特征向量,從這句話對應的幸存路徑的最后一個字開始,對每個字的每個狀態分別進行統計,包括獲取每個狀態的段長、計算每個狀態的持續時間,然后統計出該字對應碼本的段長的均值和方差,用與當前的狀態相對應的特征向量的值統計出該狀態的碼本各參數的均值,對于方差的統計,根據事先定義的標志來確定,這個標志表明系統對速度和精度的偏好,當它的值為1時,表明偏好速度,只統計碼本的方差;否則,表明偏好精度,則要計算各個特征之間的協方差矩陣,做完上述統計以后,則進入下一個字的各狀態的碼本的特征的統計,直到本句話統計完成。
11.如權利要求1所述的漢語連續語音識別系統,其特征在于聲學層識別模塊工作方式如下首先調入經過訓練得到的碼本及其DDBHMM模型參數,對于輸入的MFCC語音特征向量,獲得其幀數,計算出該特征向量對所有碼本的概率,對每一幀輸入連續語音識別器進行幀同步識別,在使用幀同步識別方法得到一系列的路徑以后,獲取當前幀的最佳字串路徑;累加每句話的路徑概率,得到整句話的累加概率;直到整句話結束,通過回溯得到最優路徑以及路徑上各個音節的候選,并保存為識別結果。
12.如權利要求11所述的漢語連續語音識別系統,其特征在于所述的幀同步識別方法為,在此語音識別器中,對每一幀到來的特征向量采用搜索算法進行識別,對于到來的這幀信號,根據位置的不同分為兩種情況一、此特征向量是某一句話中的第一幀信號,則它對應的狀態對任何字而言都是第一個狀態,因此計算出該特征向量對所有的候選字的第一個狀態對應的碼本的概率,為此特征向量分配一條新的狀態路徑,然后設置進入當前路徑的時刻為當前幀的標號、設置當前路徑的概率為該特征向量對所有的候選字的第一個狀態對應的碼本的概率、記錄當前路徑的字的標號,將段長值設為1,計算出當前路徑的狀態駐留概率,將兩個概率,即該特征向量對所有的候選字的第一個狀態對應的碼本的概率和當前路徑的狀態駐留概率求和,即得到該路徑的完全概率,最后將此路徑加到當前狀態的幸存路徑的雙向列表中,返回;二、此特征向量對應的不是一句話的第一幀信號,處理的方法為將最優狀態路徑的指針設為空,若此次識別是連續語音的識別,則需要考慮當前幀產生的最優字輸出結果,搜索出最佳的狀態路徑,搜索方法為從每個字對應的最后一個狀態開始搜索,找到該字的最佳幸存狀態路徑隊列的頭指針,若頭指針為空,則表示沒有與該字對應的最佳狀態路徑序列,直接返回;若不為空,則比較各個字的識別器的輸出概率,得到最大的那一個,然后記錄字間跳轉的位置,即當前幀的標號,返回最佳字的狀態路徑隊列的頭指針,這就是搜索到的最佳路徑,在得到最佳的字的狀態路徑以后,若不為空,則復制該最優路徑,若該路徑對應的字不是第一個字,則要增加對前導字的引用,并使最優路徑指針指向該新分配的狀態路徑;處理完每一幀的特征向量,則對當前所有可能的路徑進行剪枝。
13.如權利要求12所述的漢語連續語音識別系統,其特征在于當對情況二,即此特征向量對應的不是一句話的第一幀信號,對于狀態間的跳轉,分為兩種情況,即字內狀態跳轉和字間狀態跳轉,處理的方法分別為對字內狀態跳轉的情況,則為當前狀態分配一個新的路經,具體方法是取得前一狀態路徑,為本幀特征向量創建新的路徑并復制前一狀態路徑、設置進入當前路徑的時刻,計算新的狀態路徑的完全概率,最后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中;字間跳轉的情況字間的跳轉只有在連續語音識別時才存在,對孤立字的識別時,此時不用執行任何操作;對連續語音識別的情況,不用獲取前一狀態的最佳路徑而直接創建新的路徑并鏈接該路徑、增加前一字的最佳路徑的引用,計算出新的狀態路徑到原駐留地的完全概率,即狀態駐留概率和路徑概率之和,最后將新增加的路徑加入到當前狀態的幸存路徑的雙向列表中。
14.如權利要求11所述的漢語連續語音識別系統,其特征在于獲取當前幀的最佳字串路徑的方法為對每一句話產生的各條幸存的路徑,對所有的字逐一比較找出其中似然距離最大的那一個,就得到最佳字串狀態路徑。
15.如權利要求12所述的漢語連續語音識別系統,其特征在于對當前所有可能的路徑進行剪枝的步驟為從當前狀態的狀態幸存路徑隊列的隊尾開始,對似然距離進行排序,若先進入本狀態的路徑在概率上若不比后進入本狀態的路徑占優,則該先進入本狀態的路徑被刪除,采用此種方法向前推進,刪除其中所有不可能成為最佳的路徑,直到幸存狀態路徑隊列的隊頭。
全文摘要
本發明提供了一種采用基于段長分布的隱含馬爾可夫模型的漢語連續語音識別系統,包括語音采集裝置、前端處理模塊、特征提取模塊、基音特征提取模塊、聲調識別模塊、訓練模塊、聲學層識別模塊、拼音文法理解模塊、語言理解模塊;通過訓練模塊得到碼本和模型參數;通過聲學層識別模塊對MFCC語音特征序列的搜索算法,產生拼音格形式的識別結果,同時,語音信號的基音特征矢量也被提取出來,送入聲調識別模塊,聲調識別模塊利用基音特征信息和拼音的分割點信息,得到拼音的聲調信息并加入到拼音格中,接著,通過拼音文法理解模塊對拼音格進行修剪,送入語言理解模塊,轉化為拼音圖和詞圖,并在詞圖中進行搜索,得到最后的理解結果。
文檔編號G10L15/00GK1499484SQ02146100
公開日2004年5月26日 申請日期2002年11月6日 優先權日2002年11月6日
發明者王作英, 吳及, 肖熙, 孫甲松, 王俠 申請人:北京天朗語音科技有限公司