聲學模型訓練-嵌入式訓練

本章主要講解HMM訓練過程,首先回顧上章的HMM模型如下:

Q =q1q2...qN   狀態集合(subphone集合)

A =a01a02...an1...ann   狀態(subphone)轉移矩陣,Q和A構成了發音字典

B=bi(ot)  觀測似然,也叫作發射概率 ,表述爲:每個subphone狀態i產生倒譜特徵Ot的概率

最簡單的方式是給定手工標註的孤立詞和對應的音頻文件,計算每個子音素(subphone)對應的標註來計算矩陣B,然而實際中卻無法做到,因爲每個subphone對應的Ot是很難用手工去標註的。(用手工去在一斷連續的音頻上標註一個子因素是不可行的)因此,訓練每個phone的HMM是嵌入在整個句子中進行的,音素的分割和對其是在訓練過程中自動進行的,所以整個這個訓練過程叫做嵌入式訓練embedded training 

數據準備:在訓練過程前,需要準備wav音頻文件,對應的標註文本,還有發音字典,基於句子的HMM構建如下:


接下來就是訓練狀態轉移矩陣A和似然估計矩陣B了,

ξj(t) 表示:在t時刻,狀態i生成觀測序列O的概率。

在初始階段,我們需要對ai jbj(ot一個初始的估計 ,最簡單的做法叫做flat start

在flat start中,狀態轉移矩陣中,狀態的自環和跳轉到下一個狀態(subphone)的概率相同,爲0.5,高斯的均值方差取全局訓練數據的均值和方差。現在有了基礎的HMM-GMM參數了,接下來就要在整個訓練集合上跑Balum-Welch算法,每次迭代,都要修改HMM參數,直到系統趨於一致不變。首先在給定初始的矩陣A和B的情況下,計算前向-後向概率,然後,用前向-後向概率重新估算新的矩陣A和矩陣B,具體推導會在下一篇文章《HMM基礎-HMM訓練-前向後向算法》章節詳細討論。同時用EM算法來更新多元高斯模型的均值和方差。

綜上所述,標準的嵌入式訓練過程如下所述:

給定訓練音頻文件,標註文件,發音字典情況下

1)如上圖所述,對每個句子,構建一個句子的HMM模型。

2)初始化狀態轉移中的非零元素(自環爲0.75,和跳轉到下一個狀態的爲0.25)

3)初始化發射概率矩陣每個高斯的均值方差爲所以訓練集合的全局均值和方差。

4)EM迭代多次,用Viterbi來計算ξj(t) (在t時刻,狀態i生成觀測序列O的概率),

爲計算ξj(t) ,要累計所有可能的路徑,這樣計算太慢了,一個更高效的算法是Viterbi 算法,

訓練算法中,不再是用前向-後向算法累計所有的路徑來計算ξj(t),而是通過重複的跑Viterbi路徑(最大概率路徑)

來接近估測這個值。

用Viterbi來訓練數據過程,也叫作強制Viterbi對齊,或強制對齊過程

Viterbi對齊過程中,因爲已經知道觀察序列對應的詞序列,所以合適的設置aij ,就可以強制Viterbi算法來通過某個指定的詞。

Viterbi對齊其實是Viterbi解碼的一個簡化版,因爲,Viterbi強制對齊過程中只需要找到觀測值Ot對應正確的狀態(或subphone)序列,而不需要找到正確的詞序列。訓練結果就是Viterbi強制對齊:即,對應觀測序列O的,一條最優狀態序列。

接下來,我們可以用對齊的HMM狀態到累計counts,從而重新估計HMM參數。

Viterbi對齊中重新訓練高斯模型參數的公式如下所示:



高斯混合模型的計算參加上一篇文章。

以上就是嵌入式訓練過程。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章