(三)训练HMM模块

“(二)杂项准备"之后,我们就已经训练了一个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   0.2 {sil.transP}
AT 0.2 {sil.transP}
AT 0.3 {sp.transP}
TI silst {sil.state[],sp.state[]}

(4)生成hmm5:

HHEd -H ./hmm4/macros -H ./hmm4/hmmdefs -M hmm5/ config/sil.hed ./lists/monophones

此时,hmm5目录下会生成hmmdefs和macros

(5)去除mkphones_color.led最后一行,保存文件mkphones_color_HLEd.led至config目录下

HLEd -l '*' -d ./dict/dict_color -i ./labels/phones_color.mlf ./config/mkphones_color_HLEd.led ./labels/trainwords.mlf

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

上一篇:Expo大作战(二十三)--expo中expo kit 高级属性(没干货)


下一篇:SqlDataReader的关闭问题