聲學模型

聲學模型是語音識別系統中最為重要的部分之一，目前的主流系統多采用隱馬爾科夫模型進行建模。隱馬爾可夫模型的概念是一個離散時域有限狀態自動機，隱馬爾可夫模型HMM是指這一馬爾可夫模型的內部狀態外界不可見，外界只能看到各個時刻的輸出值。對語音識別系統，輸出值通常就是從各個幀計算而得的聲學特徵。用HMM刻畫語音訊號需作出兩個假設，一是內部狀態的轉移只與上一狀態有關，另一是輸出值只與當前狀態有關，這兩個假設大大降低了模型的複雜度。HMM的打分、解碼和訓練相應的演算法是前向演算法、維特比演算法和前向後向演算法。輸出機率.聲學模型的輸入是由特徵提取模組提取的特徵。一般來說，這些特徵是多維的向量，並且其取值可以是離散或連續的。早期的聲學模型常常採用向量量化(Vector Quantification)的方法，將訊號直接對映到某個碼本formula_1，而後再計算某個模型formula_2輸出該碼本的機率formula_3。但是這一方法是比較粗糙的，其效能受到VQ演算法的極大影響，如果VQ本身效能就很差，聲學模型的估計就會很不準確。因此，對於連續取值的特徵應當採用連續的機率分佈。由於語音訊號特徵的分佈並不能用簡單的機率分佈，例如高斯分佈等來直接描述，故而常用高斯混合模型或混合拉普拉斯模型等方法對語音訊號的分佈進行擬合。在此，高斯混合分佈可以表示為若干高斯分量formula_4的加權組合。即：formula_5其中formula_6是均值為formula_7方差為formula_8的高斯分佈。從數學角度看，當formula_9趨向於無窮時，任何連續分佈都可以用混合高斯模型來逼近。但是，高斯混合模型也存在著問題，那就是其計算量偏大。假設對於一個包含formula_10個混合分量的高斯混合模型，其維度為formula_11維，那麼至少要進行formula_12次運算才能得到結果，如果有formula_9個模型需要計算，那麼時間複雜度就是formula_14。相比之下，離散HMM就相對簡單，只需要進行一次VQ，再進行formula_9次查表操作，就能夠計算所有模型的機率值。因此，也出現了將二者結合起來的半連續隱馬模型。其思路是輸出機率不僅僅由formula_3來決定，還乘上了VQ的機率，亦即該訊號屬於次碼本的機率。從精確度上看，連續隱馬模型要優於半連續隱馬模型，而半連續隱馬模型又優於離散隱馬模型。從演算法複雜度上來看則正好相反。高斯混合模型是語音訊號處理中的一種常用的統計模型，該模型的一個基本理論前提是隻要高斯混合的數目足夠多，一個任意的分佈就可以在任意的精度下用這些高斯混合的加權平均來逼近。一個包含M個分量的高斯混合分佈的機率密度函式是M個高斯機率密度分佈函式的加權組合，定義為:formula_17其中的formula_18是formula_19維隨機向量，formula_20為formula_21個機率密度函式分量，formula_22為各個機率密度函式分量的權重。在上式中，每個機率密度函式分量formula_23都服從formula_19維高斯分佈，即formula_25其中，formula_7表示該高斯分量的均值，formula_27表示該高斯分量的協方差矩陣。另外，為了滿足機率密度函式分佈的要求，上式中各個機率密度函式分量的權重必須滿足formula_28的要求。在高斯混合模型中，每一個高斯機率密度函式分量formula_23都可以由其權重formula_30、均值formula_7和協方差矩陣formula_27來描述。這樣，一個完整的formula_21分量混合的高斯分佈就可以由以下的三元組集合來表示：formula_34GMM模型的主要問題為訓練問題，亦即引數估計問題數估計，使得GMM模型和訓練資料之間達到最佳的匹配程度。GMM的引數估計方法有多種方法，其中應用最廣泛的是基於最大似然準則(Maximum Likelihood Estimation, MLE)的方法。對於一段給定的訓練語音特徵序列formula_35 ，GMM模型的似然度定義為：formula_36最大似然估計的主要思想就是要找到使得GMM模型對於訓練語料的似然度最大的模型引數formula_37。同HMM的訓練類似，GMM訓練也可以透過EM進行訓練，其模型引數更新公式為：formula_38formula_39formula_40其中formula_41表示formula_42屬於第formula_9個高斯分量的後驗機率。而formula_44分表表示上一步迭代中模型的權重、均值、協方差矩陣，而formula_45則是更新後的對應引數。formula_41的定義為：formula_47如果隨機向量各維間的是獨立的，那麼可以採用對角協方差陣，亦即僅估計方差。這種方法能夠極大減少模型引數，讓模型訓練更加充分。同時，需要注意的是，在某些情況下，對角協方差陣可能會出現非常小的方差值，從而使得協方差陣奇異。因此在訓練對角協方差陣的時候必須採用最小方差約束。亦即當新估計出的某維方差formula_48小於設定formula_49時，讓formula_48等於formula_49。在聲學模型訓練中常用GMM為狀態輸出機率建模，同時GMM也常用於其他聲音分類任務中，例如聲音分割與分類，說話人識別等。模型拓撲結構.由於語音的時序性，隱馬模型的拓撲結構一般都取為自左向右的結構。一般每個狀態都包括自跳轉弧。是否允許跨狀態跳轉則沒有一個定論。下圖是典型的模型拓撲結構示意圖。狀態個數的選擇對於系統性能的影響是很大的。建模單元選擇.聲學模型的建模單元的選擇需要考慮三方面的因素。其一是該單元的可訓練性，亦即是否能夠得到足夠的語料對每個單元進行訓練，以及訓練所需要的時間長短是否可接受。其二是該單元的可推廣性，當語音識別系統所針對的詞彙集formula_52發生變化時，原有建模單元是否能夠不加修改的滿足新的詞彙集formula_53。最後還需要考慮建模的精確性。根據時間尺度的長短，建模單元可以選擇為句子，短語，詞，音節，音子乃至更小的半音子。一般可以認為有這樣的原則，時間尺度越短的建模單元，其可訓練性及推廣性就越強，而時間尺度越長的單元，其精確性就越強。同時，可以看出，句子、短語、詞三個概念是語言學上的概念，而音節、音子則是語音學上的概念，一般來說，如果聲學模型所針對的應用環境不是確定詞彙量的系統，那麼採用語言學的概念的建模單元是不具備推廣性的。為了將協同發音現象(--)融入建模中，上下文相關的建模單元(--, CD uinits)是一個很好的選擇。其思路是，對於某個音子"ah"，根據上下文的不同將其拆分成不同的建模單元。例如，用"b-ah+d"表示"ah"在"b"之後，"d"之前發音的具體實現。上下文的選擇方法有很多，最常見的是三音子建模單元，也就是考慮左上文右下文各一個音子，加上中心音子形成三音子對。上下文相關建模大大提高了建模的準確性，但是同時也使得模型數量急劇膨脹，使得模型的可訓練性大大降低。為了解決這一問題，就需要引入某些聚類演算法來減少模型中需要訓練的引數。聚類方法.為了解決模型引數過多的問題，可以使用某些聚類方法來減小模型中的引數數量，提高模型的可訓練性。聚類可以在模型層次，狀態層次乃至混合高斯模型中每個混合的層次進行。可以將半連續隱馬模型看作進行高斯混合進行聚類後的連續隱馬模型。目前應用最多的方法是對狀態聚類的方法。其思路是，根據狀態間混合高斯模型機率輸出的相似性，將輸出機率接近的狀態聚合在一起，以便對其的訓練更加充分。聚類的方法有基於規則的方法和資料驅動方法兩類。聚類後的狀態被稱為Senone，每個Senone都是完整獨立的高斯混合模型，它也是解碼過程中的最基本單元。引數估計.傳統上，引數估計使用的方法為Baum-Welch演算法，屬於最大似然準則下的EM演算法。目前研究者提出了多種區分性訓練方法進行訓練，取得了較好的效果。