標籤:
“(二)雜項準備"之後,我們就已經訓練了一個hmm模型了——“hmm0”。
接下來,我們將以“hmm0”作為基礎,一路訓練到“hmm7"。
1、從“hmm0"訓練到"hmm3":
執行以下3條命令:
以hmm0為基礎,產生hmm1
HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm0/macros -H ./hmm0/hmmdefs -M ./hmm1/ ./lists/monoOffSP
以hmm1為基礎,產生hmm2
HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm1/macros -H ./hmm1/hmmdefs -M ./hmm2/ ./lists/monoOffSP
以hmm2為基礎,產生hmm3
HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm2/macros -H ./hmm2/hmmdefs -M ./hmm3/ ./lists/monoOffSP
以上命令完成之後,在hmm1、hmm2、hmm3目錄下都會產生macros和hmmdefs
2、“特殊處理”hmm4,並產生hmm5:
(1)獲得hmm4目錄下hmmdefs檔案:
perl ./scripts/fixSil hmm3/hmmdefs hmm4/hmmdefs
(2)複製hmm3目錄下macros至hmm4目錄下:
cp hmm3/macros ./hmm4/macros
(3)手動編輯sil.hed檔案,共置於config目錄下,sil.hed內容如下
AT 2 4 0.2 {sil.transP} AT 4 2 0.2 {sil.transP} AT 1 3 0.3 {sp.transP} TI silst {sil.state[3],sp.state[2]}
(4)產生hmm5:
HHEd -H ./hmm4/macros -H ./hmm4/hmmdefs -M hmm5/ config/sil.hed ./lists/monophones
此時,hmm5目錄下會產生hmmdefs和macros
3、從“hmm5“訓練到"hmm7“:
以hmm5為基礎,產生hmm6
HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm5/macros -H ./hmm5/hmmdefs -M ./hmm6/ ./lists/monophones
以hmm6為基礎,產生hmm7
HERest -C ./config/config_color -I ./labels/phones_color.mlf -t 250.0 150.0 1000.0 -S ./config/train.scp -H ./hmm6/macros -H ./hmm6/hmmdefs -M ./hmm7/ ./lists/monophones
註:以上命令執行過後可能會有類似:“WARNING [-2331] UpdateModels: sp[8] copied: only 0 egs”這樣的WANGING,可以暫且忽略。
訓練到“hmm7”,hmm模型就已經能達到不錯的識別效果了,理論上來說,訓練得越多,識別就會越精確。
若要訓練hmm8、hmm9等等,只要參照以上的“HERest“命令即可。
不過,我打算就到此為止了。
讓我們看看成果吧!
HTK Book涉及內容:
Chapter 3: 3.2.2 Step 7 - Fixing the Silence Models
(三)訓練HMM模組