寫在前面
最近做聲紋識別,需要用到語音識別的知識,在此記錄一下。
DNN-HMM步驟:
- 幀長切分, 提取特徵(MFCC)
- GMM-HMM進行alignment對齊; 對每一幀進行聚類(音素總數), 獲得每幀屬於各個音素的概率; HMM進行解碼搜索, 獲得每一幀最優音素表示序列
- DNN-HMM; 每一幀(多幀)作爲DNN輸入, GMM似然值(音素標籤)作爲輸出; 訓練DNN參數, …
GMM-HMM中的HMM
- 觀察狀態序列: 語音中的每一幀; 詞性標註中的詞串
- 隱藏狀態序列: 語音每一幀對應的音素; 詞性標註中每個詞對應的詞性標籤
- 狀態轉移矩陣: 語音中音素之間的轉移概率(數據集計算, GMM-HMM計算??); 詞性標註中詞性之間的轉移概率
-
發射概率矩陣: 語音中各個音素髮射爲每一幀的概率(GMM似然值, GMM-HMM獲得概率輸入DNN進行反向傳播); 詞性標註中每個詞性發射爲每個詞的概率
Ref paper -
HMM學習問題
給定
: 幀
: 音素(隱藏狀態), 隱藏狀態序列待求
: 音素之間的轉移概率
: 音素發射爲幀的概率
Baum-Welch算法(EM)計算
(訓練集上給定音素序列, 可以使用Viterbi算法計算, 進行forced alignment, 然後可以使用EM重複訓練) -
EM算法求解HMM
-
force alignment
給定音素序列(phoneme), 根據每一幀的GMM似然值,
GMM-HMM -> DNN-HMM -> DNN-HMM迭代進行強制對齊.
embeded training
除了將詞拆分爲音素訓練(embeded training), 也可以直接使用整個詞(Whole word)進行訓練