前面兩節介紹了語音識別的一些概念,並進行資料的預處理。現在我們有了音訊資料轉化為mfcc特徵向量的檔案,以及與每個特徵檔案相對應的音素資訊檔案。
現在進入模型構建部分,包括兩個核心部分,一是如何表示音素概率分布;二是如何建模音素間的轉移關係。
首先,給個總結性的描述。最初的系統是通過隱馬爾可夫模型(hmm)來描述音素間的轉移概率,通過單高斯(gsm)來建模每個音素的狀態的發生概率,就是利用乙個多維正態分佈來擬合每個音素的概率;它是hmm模型中的發射概率(或者叫混淆概率)。
單高斯模型,就是多維正態分佈。如果知道了一組觀察值和它們對應的標籤,用高斯模型來擬合這個類別的概率分布情況,那麼就通過這些樣本來求高斯模型的均值和協方差。測試/**時,通過計算每個觀察資料對應在哪個模型下的值最大(最大似然概率),就可以認為它屬於**個類(不考慮序列轉移的概率的前提下)。
上圖演示了二維高斯分布在不同模型引數下的形狀。現在就是要為每個音素狀態構建乙個模型,本質就是確定它的引數。這篇部落格寫的比較清楚,認真推理應該是很容易理解的,找乙個維度少點的例子,比如三個或者四個的隨機向量,計算推導下就應該能明白了。簡單來說就通過已有的資料通過加減乘除得到每個高斯模型的均值向量和協方差矩陣。如果我們得到的資料是標準好的每個音素狀態的特徵向量,那麼到這裡音素建模就已經完成了。但是,在語音識別過程中為音訊檔案標註大量音素級別、尤其是音素狀態級別的資料,成本是非常高的,不現實的。因此需要引入其他的方法來訓練高斯模型,就是計算每個模型的引數。
同時,語音識別還需要考慮音素的前後概率關係,得到乙個總體的概率值最大情況。
到現在為止,我們提到了隱馬爾可夫(hmm)模型、高斯模型(gsm),音素模型,還提到音素的不同狀態。可能初學者對這些術語以及它們之間的關係是非常模糊的,概念不清是學習新知識的最大障礙。介紹hmm模型是乙個比較大的工程,可能要好幾十頁紙才能徹底講明白。本文重點是如何利用hmm來進行音素建模,進而完成語音識別功能,了解其中的大概原理包括訓練、評估、**演算法就可以了。好好看一下這篇部落格概念上大概了解的也差不多了。
htk的經典hmm音素模型是包括5個狀態,包括乙個輸入狀態和乙個輸出狀態,分別標記為1和5,它們倆是沒有發射概率的,其中輸入狀態就是乙個過渡,沒有自迴圈,直接以概率1轉移到下乙個狀態,而輸出狀態是模型的終結點,沒有轉移到其他狀態的概率,通過這兩個狀態可以把多個音素拼接起來形成乙個鏈。中間的2、3、4狀態有轉移,每個狀態對應有發射概率。因此重點就是如何計算得到狀態轉移概率、發射概率、初始概率和設定狀態數。
從htk的角度,每個音素模型的每個狀態id是全域性唯一的。
按照構建撥號系統的步驟繼續向下走,建立乙個模型描述檔案proto。這個檔案描述了hmm模型的拓撲結構,~o描述觀察向量的維度;~h 「proto」開頭,標籤中描述了如下資訊:有幾個隱藏狀態,狀態轉移矩陣的行列數等。這個檔案就是後面各個音素模型的模板,引數會不同,比如每個狀態的gsm引數(均值和方差),狀態轉移矩陣的引數,但是結構都是一樣的。
在沒有音素級標註語料的情況下,htm中通過乙個叫flat start方式初始化該模型,其實就是計算全域性的均值和方差作為模型的初始值。命令如下。
hcompv -c config -f 0.01 -m -s train.scp -m .\hmms\hmm0 proto
hcompv命令有一組選項。-f 選項將方差下限(稱為vfloors)設為全域性方差的0.01倍,這組向量值將被用於後面步驟中方差估計的下限值。-m選項指定均值和方差同時計算。定儲存在hmm0目錄下的新原始模型後,將會構造名為hmmdefs的master macro file (mmf) 檔案,hmmdefs中包含需要的每個單音素模型(包括」sil」)的副本,每個模型都複製了新的原始模型,且作了重新標記。mmf檔案的格式和mlf檔案的格式類似,而且也出於類似的目的,避免了單獨定義模型導致數量過大的hmm定義檔案。 語音識別之HTK入門(四)訓練模型
生成proto和vfloors hcompv c config config color f 0.01 m s config train.scp m hmm0 config proto生成macros perl scripts makemacros hmm0 vfloors hmm0 macros生...
語音識別工具箱HTK 識別yes 和no
前言 這個htk真心麻煩 真的要學一學怎麼寫乙個指令碼,自動執行這麼多的步驟了 識別效果真的不咋地吧 我發現自己寫的blog 被覆蓋了 很生氣 csdn 的匯出功能不能匯出這是什麼鬼 沒有備份真是乙個巨大的錯誤!參考文獻 官方的文件 htk 基礎指南 特別鳴謝 孫大佬 6.建立hmm模型 7.對模型...
HTK搭建大詞彙量連續語音識別系統(三)
十 繫結三音素 指令碼mktri.led wb sp wb sil tc執行命令 hled n labels triphones1 i labels wintry.mlf scripts mktri.led labels aligned.mlf指令碼mktri.hed由指令碼命令生成 perl sc...