训练与解码
BW算法是對某一個HMM(一個音素)進(jìn)行訓(xùn)練,需要該HMM對應(yīng)的觀察向量(一段音頻),如何讓一段文本中的某個音素找到對應(yīng)一整段音頻中的一小段音頻?需要用到對齊來找到所有的[音素-音頻]的配對。
? ?
訓(xùn)練時也需要解碼
1,設(shè)訓(xùn)練的一句話有n個音素,即n個HMM,即3n個狀態(tài)。將這句話對應(yīng)的音頻平均地切分為n個片段(無環(huán)回的HMM),每個片段有3個狀態(tài)(無環(huán)回,否則一個HMM大于三個狀態(tài))
2,使用k-means算法,將每個狀態(tài)對應(yīng)的所有特征向量聚類為M個簇(這句話有3nM個簇)
3,為狀態(tài)i中的每個簇計算均值、協(xié)方差矩陣和混合權(quán)重(即計算一個GMM,這句話有3nM個GMM)
4,用3中計算好的所有GMMs(3nM個)將這一段音頻解碼(維特比解碼)為多個狀態(tài),多個HMM
5,重復(fù)上述2-4步直至收斂
? ?
hmm_chinese.pdf p59
在訓(xùn)練時用的是Viterbi算法,在識別時則用狀態(tài)Viterbi算法處理狀態(tài)級數(shù)據(jù),用詞匯Viterbi算法處理詞匯級數(shù)據(jù)
? ?
識別過程
不考慮句法時,識別過程很類似連接詞識別中的一次通過算法
將詞匯表中所有詞對應(yīng)的所有音素的所有狀態(tài)排成一排,讀入一個待識別句子的語音數(shù)據(jù),由維特比算法可得到一個最佳狀態(tài)序列。得到狀態(tài)序列后,可通過類似編譯原理中的文法來得到對應(yīng)的HMM序列。
? ?
聲學(xué)模型(HMMs)表示的是各詞內(nèi)狀態(tài)之間的轉(zhuǎn)移
語言模型(n-gram)表示的是詞之間的轉(zhuǎn)移概率關(guān)系
? ?
解碼時需要用到狀態(tài)Viterbi算法和詞匯Viterbi算法
? ?
一句話的識別過程需要在狀態(tài)層與詞匯層之前不斷切換,狀態(tài)層:為當(dāng)前狀態(tài)選擇概率最大的幾個下一狀態(tài),直至詞的最后狀態(tài)處;詞匯層:為當(dāng)前詞選擇概率最大的幾個下一詞。這樣直至這句話的結(jié)尾,就得到了多條路徑,每條路徑包含兩個信息:累積概率和回溯路徑,選擇多條路徑中累積概率最大的那條路徑,使用其回溯路徑進(jìn)行回溯,就得到了該句子的識別結(jié)果。
轉(zhuǎn)載于:https://www.cnblogs.com/JarvanWang/p/7499575.html
總結(jié)
- 上一篇: 最早的特斯拉杀手 本周出殡了
- 下一篇: 文件的行操作