资源描述
安徽中科大讯飞信息科技有限公司
Anhui USTC iFlyTek CO.,LTD.
The EasyTraining Toolkit
系统概览及流程指南
科大讯飞 版权所有(2006)可以加上你的名字和详细日期、版本1.0
第23页
目 录
目 录 0
一.系统概述 1
二.上下文相关(Context-dependent)模型的训练流程 3
2.1 上下文无关模型的训练 4
2.1.1 用CompV估计全局方差 4
2.1.2 用ModelGen克隆monophone 5
2.1.3 分割训练数据列表 5
2.1.4 用HLEd将词级MLF文件转为音素级MLF文件 5
2.1.5 HERest训练不带sp的monophone模型 6
2.1.6 在monophone中加入停顿模型sp 7
2.1.7 HERest训练带sp的monophone模型 8
2.1.8 校正训练数据 10
2.1.9 用校正后的数据训练模型 11
2.2 克隆上下文相关(context-dependent)模型 13
2.3 状态绑定上下文相关模型 15
2.4 分裂高斯 16
2.5 生成最终模型 18
三.右相关声母及带调韵母模型的训练流程 19
3.1 无关模型的训练流程 19
3.2 克隆右相关声母及带调韵母模型 19
3.3 分裂高斯 20
3.4 得到最终模型 20
四.HTK声学模型测试 21
4.1 HParse生成语法网络 21
4.2 HVite识别 21
4.3 HResults计算识别率 22
五.版本信息 23
一.系统概述
The EasyTraining Toolkit是一个以HTK为基础而开发的用于大词汇量连续语音识别系统模型训练和测试的工具包,目前的版本支持上下文相关(context-dependent)模型和、右相关声韵母模型及带调模型的训练和测试,两种模型只需要配置不同的基础文件即可。EasyTraining统一MLE训练的框架流程图如下图所示:
图1.1 Easytraining 统一MLE训练框架图
The EasyTraining Toolkit的特点:
n 统一框架
n 跨平台(WIN32、Linux兼容)
n 较少基础文件准备
n 断点恢复
n 训练数据检查
n 决策树聚类状态数指定
n 清除中间文件
n 并行化
n 灵活配置
表1 上下文相关模型基础文件列表
config.all
HTK config文件
dict.mono dict.test
训练及测试词典
HHEd.fixsil
sil处理命令及问题集
HHEd.questionset
HLEd.wrd2mono_nosp
MLF处理命令文件
HLEd.wrd2mono_sp
HLEd.mono2tri
modelgen.cmd
Mono-phone模型克隆文件
proto_E
模型原型文件
proto_sp
syllable.mlf
词级MLF
train.scp
训练文件列表
表2 右相关声韵母及带调右相关声母及带调韵母模型基础文件列表:
config.all
HTK config文件
sy.dict sy.dict.notone
带调及不带调词典
HHEd.fixsil
sil处理命令及问题集
HLEd.wrd2mono_nosp
MLF处理命令文件
HLEd.wrd2mono_sp
HLEd.mono2sy
modelgen.cmd.sy66
Mono-phone模型克隆文件
proto_E
模型原型文件
proto_sp
Syllable_tone.mlf
词级MLF(带调)
train.scp
训练文件列表
二.上下文相关(Context-dependent)模型的训练流程
本节以Tri-phone模型训练为例,介绍用HTK对上下文相关(context-dependent)模型的训练流程,Tri-phone单元都是基于基准的上下文无关的音素声韵单元(简称即Mono-phone)进行跨词的上下文扩展所得。其中sil为上下文无关(context independent)的模型,sp为相关可穿越(context free)模型。
模型命名规则为:左相关-模型+右相关,例如_a-a+b。
下图为声学模型训练过程的基本流程:
图2.1 Easytraining基本训练流程图
从图中可以看出,整个模型训练的过程可以分成下面四个部分:
第一部分:上下文无关模型
第二部分:上下文相关模型
第三部分:决策树状态绑定模型
第四部分:最终测试模型
下图为声学模型训练的详细流程图:
图2.2 Easytraining声学模型训练的详细流程图
2.1 上下文无关模型的训练
2.1.1 用CompV估计全局方差
HcompV计算出所有训练数据的全局均值和方差,并用全局均值和方差取代原型文件proto中的0均值和1方差,生成global模型作为下一步克隆时的基准原型模型;同时,将全局方差的0.01倍设为方差下限并输出vFloor方差下限文件。
命令行如下:
$cmd = "$g_bin_HCompV -m -f 0.01 -C $g_cf_Mono -S $g_scp_Training -o global
-M $g_dir_Mono/Init $g_prt_Proto";
输入文件:
1. -C $g_cf_Mono 为配置文件config;
2. -S $g_scp_Training 为所有训练数据全目录文件名列表文件train.scp;
3. $g_prt_Proto 为定义HMM结构的原型文件proto;
输出(目录:$g_dir_Mono/Init)文件:
1. -o global 输出为全局均值和方差的MMF文件global;
2. vFloor 输出下限方差文件vFloor;
2.1.2 用ModelGen克隆monophone此步骤请进一步给出一个modelgen命令文件的例子
ModelGen将上一步得到的global作为原型基准模型,克隆出每一个音素(phone)的HMM模型,并把所有克隆出来的音素模型参数保存在MMF文件“hmm0/MODELS”中。
$cmd = "$g_bin_EasyTraining -ModelGen -H $g_dir_Mono/Init/global
-v $g_dir_Mono/Init/vFloors -M $g_dir_Mono/Init/hmm0/MODELS
$g_cmd_EasyTraining_ModelGen";
输入文件:
1. -H $g_dir_Mono/Init/global 为上一步得到的global文件;
2. -v $g_dir_Mono/Init/vFloors 上一步得到的vFloors文件;
3. $g_cmd_EasyTraining_ModelGen 编辑命令文件(包含要克隆的phone及其状态数);
输出文件:
1. -M $g_dir_Mono/Init/hmm0/MODELS 克隆后包含所有音素模型的MMF文件;
2.1.3 分割训练数据列表
SplitScripts将所有训练语音的全路径列表文件$g_scp_Training分割成$g_nSplit等份,用于在下一步分别训练模型乃至实现并行化。
命令行如下:
$cmd = "$g_bin_EasyTraining -SplitScript $g_scp_Training $g_nSplit";
参数:
1. $g_nSplit 需要分割的数量;
输入文件:
1. $g_scp_Training 待分割的全部训练语音的全路径列表文件;
输出文件:
$g_scp_Training.1,$g_scp_Training.2,…,$g_scp_Training. $g_nSplit。
为分割成$g_nSplit等份后每一部分数据的路径列表文件名。
2.1.4 用HLEd将词级MLF文件转为音素级MLF文件此处请加入原始MLF和处理后MLF的例子(就像我ppt里给的那样,可以直接copy过来)。并指出作为基础文件的MLF需严格按照格式来写,即:sil与noise等必须显式的标出,sp则可放宽
HLEd将基于词的MLF(Master Label File)标注文件转为基于音素的MLF标注文件;同时,生成不带sp的音素列表文件$hmmlist_mono_sp。
命令行如下:
$cmd = "$g_bin_HLEd -l $strStar -d $g_dict_Mono -i $g_dir_Mono/MLF.mono.nosp
-n $g_hmmlist_mono_nosp $g_cmd_HLEd_Word2Mono_nosp $g_mlf_Word";
输入文件:
1. -d $g_dict_Mono 音素词典文件;
2. $g_cmd_HLEd_Word2Mono_nosp 由词转为音素的编辑命令文件;
3. $g_mlf_Word 基于词的MLF标注文件;
输出文件:
1. -i $g_dir_Mono/MLF.mono.nosp 不含sp的音素标注MLF文件;
2. -n $g_hmmlist_mono_nosp 不含sp的音素列表文件;
2.1.5 HERest训练不带没有sp的monophone模型
HERest对训练数据进行训练,得到不带sp的monophone模型。这个过程可以跳过,即可以直接训练带sp的模型。如果要跳过,直接设置全局布尔变量$g_bTieSilSp即可(流程可见图2.3)。
训练这个过程分两步进行训练,首先,对每一个已经分割好的训练语音列表文件$g_scp_Training.i(i表示第i个列表文件)中的语音特征都要进行训练。
命令行如下:
$cmd = "$g_bin_HERest $g_strBinaryFlag -p $j $g_strPruning
-C $g_cf_Mono -H $g_dir_Mono/Init/hmm$k/MODELS
-M $g_dir_Mono/Init/hmm$i -S $g_scp_Training.$j
-I $g_dir_Mono/MLF.mono.nosp $g_hmmlist_mono_nosp";
参数:
1. -p $j 当j>0时,进行并行训练,对每一部分训练数据会产生一个HER.acc文件;
当j=0时,读取所有HER.acc文件,对所有训练数据进行训练训练结果进行汇总;
2. $g_strBinaryFlag 二进制标志,如果值为“-B”,表示输出存储为二进制文件;
输入文件:
1. -C $g_cf_Mono 配置文件config;
2. $g_dir_Mono/Init/hmm$k/MODELS 每轮迭代训练前的MMF文件;
3. -S $g_scp_Training.$j 第j个训练数据列表文件,表示这一次训练只用
-S $g_scp_Training.$j中的数据进行训练;
4. -I $g_dir_Mono/MLF.mono.nosp 用于训练的MLF音素标注文件(由第3步生成);
5. $g_hmmlist_mono_nosp 用于训练的音素列表文件(由第3步生成);
输出文件:
1. -M $g_dir_Mono/Init/hmm$i 指定第i轮训练时,产生的HER.acc文件存储目录;
上述训练完成后,再用所有数据进行一次训练:
命令行如下:
$cmd = "$g_bin_HERest $g_strBinaryFlag -p 0 $g_strPruning -C $g_cf_Mono
-H $g_dir_Mono/Init/hmm$k/MODELS -M $g_dir_Mono/Init/hmm$i
-s $g_dir_Mono/Init/hmm$i/occ.0 $g_hmmlist_mono_nosp";
for($j=1; $j<=$g_nSplit; $j++)
{
$cmd = $cmd . " $g_dir_Mono/Init/hmm$i/HER$j.acc";
}
参数:
1. -p $j $j=0,表示要读取所有HER.acc文件,对所有训练数据进行训练;
2. $g_strBinaryFlag 二进制标志,值为“-B”,表示输出存储为二进制文件;
3. $g_strPruning “-t 250.0 150.0 1000.0 –v 0.00001 –w 1.0” ;
-v 0.00001表示方差下限;-w 1.0表示混合高斯分布权重的门限为1.0*MINMIX,权重小于该值时置为零;-t参数是为了加快训练速度设置的,一般形式为-t f [i l]这里f表示计算后向概率时,如果其(对数)值与最大的后向概率值的差值超过f,则忽略这些后向概率值,同样,只计算有有效后向概率的前向概率,此外,如果前向后向概率的乘积与总的概率之比小于某一门限时,这些前向后向概率被忽略,如果对某句话来说,f这个门限太小,则会导致处理该句话时失败,此时如果i,l两个参数同时被设置,则门限提高i,重新处理该句话,直至门限到达l 。
输入文件:
1. -C $g_cf_Mono -H $g_dir_Mono/Init/hmm$k/MODELS $g_hmmlist_mono_nosp同前;
2. $g_dir_Mono/Init/hmm$i/HER$j.acc 所有的HER.acc文件。
输出文件:
1. -s $g_dir_Mono/Init/hmm$i/occ.0 训练过程产生的统计文件occ.0;
2. -M $g_dir_Mono/Init/hmm$i 第i轮训练完成后,得到新的MMF文件MODELS的存储目录;
2.1.6 在monophone中加入停顿模型sp
经过前面几步已经得到了在编辑命令文件$g_cmd_EasyTraining_ModelGen中列出的所有音素的monophone模型,这一步将停顿模型sp加入到monophone模型中去。
首先,用HHEd把将sp加入到前面训练好的MODELS中(与sil模型捆绑)sil模型加入2-4、4-2的状态跳转,并把其中间状态设置为一个宏”silst”。
命令行如下:
$cmd = "$g_bin_HHEd -C $g_cf_Mono -H $modelnow
–w $g_dir_Mono/FixSilSp/MODELS.fixsil $g_cmd_HHEd_Fixsil $g_hmmlist_mono_nosp";
输入文件:
1. -C $g_cf_Mono 配置文件config;
2. -H $modelnow 前面训练好的模型MODELS(MMF文件);
3. $g_hmmlist_mono_nosp 由第3步产生的音素列表文件;
4. $g_cmd_HHEd_Fixsil 加入sp对sil模型进行处理的编辑命令文件;
输出文件:
1. –w $g_dir_Mono/FixSilSp/MODELS.fixsil 加入sp对sil模型处理之后的MODELS(MMF文件)
其中,$g_cmd_HHEd_Fixsil的编辑命令内容为:
AT 2 4 0.2 {sil.transP}
AT 4 2 0.2 {sil.transP}
TI silst {sil.state[3]}
其次,用HLEd得到含有sp模型的音素列表文件及音素标注文件,命令行与第3步基本相同,此处也请给出例子(使用前使用后)
不同在于第3步得到的是不带sp的音素列表文件及音素标注文件。
命令行如下:
$cmd = "$g_bin_HLEd -l $strStar -d $g_dict_Mono -i $g_dir_Mono/MLF.mono
-n $g_hmmlist_mono_sp $g_cmd_HLEd_Word2Mono_sp $g_mlf_Word";
输入文件:
1. -d $g_dict_Mono 音素词典文件;
2. $g_cmd_HLEd_Word2Mono_sp 由词转为音素(含sp)的编辑命令文件;
3. $g_mlf_Word 基于词的MLF标注文件;
输出文件:
1. -i $g_dir_Mono/MLF.mono 包含sp的音素标注文件;
2. -n $g_hmmlist_mono_sp 包含sp的音素列表文件;
下面是$g_cmd_HLEd_Word2Mono_nosp和$g_cmd_HLEd_Word2Mono_sp的内容比较这里的格式乱了,需要调整一下。我删除了IS sil sil这句话,这个曾经加过,但在以后的版本中已取消了这句话
:
$g_cmd_HLEd_Word2Mono_nosp
$g_cmd_HLEd_Word2Mono_sp
EX
DE sp
ME sp sp sp
ME sil sil sp
ME sil sp sil
ME sil sil silEX
DE sp
IS sil sil
ME sp sp sp
ME sil sil sp
ME sil sp sil
ME sil sil sil
EX
ME sp sp sp
ME sil sil sp
ME sil sp sil
ME sil sil silEX
IS sil sil
ME sp sp sp
ME sil sil sp
ME sil sp sil
ME sil sil sil
完成这两个步骤后,就得到了带sp的monophone模型,接下来要结这一模型进行训练。
2.1.7 HERest训练带sp的monophone模型
这一阶段的训练过程与第5步训练不带sp的monophone模型基本上是一样的。唯一不同的就是所用的音素标注文件(MLF)和音素列表文件(hmmlist)这两个文件不一样,第5步用的是$g_dir_Mono/MLF.mono.nosp 和$g_hmmlist_mono_nosp,而现在这一步用的是$g_dir_Mono/MLF.mono和$g_hmmlist_mono_sp。
经过迭代训练后,得到了训练好的带sp的mono-phone模型MODELS,上述2.1.1~2.1.7得到mono-phone模型的整个过程可以用下面的流程图来表示:
图2.3 上下文无关的mono-phone训练流程图
2.1.8 较正校正训练数据
为了防止在训练数据集中出现对模型训练不起作用的“坏数据”,需要对训练数据进行挑选,认为“合格”的数据才能继续进入后面的模型训练。训练数据挑选也是一步可选的步骤,设置全局布尔变量$g_bCheckScript即可选择。,较正校正训练数据分三个步骤进行:
首先,对音素词典进行较正扩展,命令行如下:
$cmd = “$g_bin_EasyTraining -MakeMPDict $g_dict_Mono $g_dir_Mono/Align/dict.align $g_strNonPhoneList";
参数:
1. $g_strNonPhoneList 值为“sil sp”。
输入文件:
1. $g_dict_Mono 没有经过较正扩展的音素词典文件;
输出文件:
2. $g_dir_Mono/Align/dict.align 较正扩展后的音素词典文件;
其次,再对基于词的MLF标注文件进行较正处理,生成词一级的、不含任何填塞模型(sil、sp、noise、garbage等等)的MLF标注。该步骤通过下面两个命令行实现,即先生成较正处理MLF标注文件所必需的HLEd编辑命令文件,命令行如下:
$cmd="$g_bin_EasyTraining -MakeWordOnlyHLEdCmd $g_dir_Mono/Align/HLEd.MLF.align $g_strNoTiePhoneList";
参数:
1. $g_strNoTiePhoneList 值为“sil sp”;
输出文件:
1. $g_dir_Mono/Align/HLEd.MLF.align 下面较正处理MLF文件所需的编辑命令文件;
然后,由HLEd命令对MLF标注文件进行较正处理,命令行如下:
$cmd = "$g_bin_HLEd -l $strStar -i $g_dir_Mono/Align/MLF.align
$g_dir_Mono/Align/HLEd.MLF.align $g_mlf_Word";
输入文件:
1. $g_mlf_Word 较正处理前的MLF标注文件;
2. $g_dir_Mono/Align/HLEd.MLF.align 上一命令行产生的编辑命令文件;
输出文件:
1. -i $g_dir_Mono/Align/MLF.align 较正处理后的MLF标注文件;
最后,对训练数据进行较正Force-Alignment。
$cmd = "$g_bin_HVite -b sil -a -m $g_strBeam -y lab -C $g_cf_Mono
-H $modelnow -i $g_dir_Mono/Align/MLF.Aligned.$j
-I $g_dir_Mono/Align/MLF.align -S $g_scp_Training.$j
$g_dir_Mono/Align/dict.align $g_hmmlist_mono_sp >
$g_dir_Mono/Align/LOG.HVite.Split.$j";
输入文件:
1. -C $g_cf_Mono 配置文件config;
2. -H $modelnow 当前模型文件;
3. -I $g_dir_Mono/Align/MLF.align 较正后的词级MLF标文件;
4. -S $g_scp_Training.$j 第j批训练数据;
5. $g_dir_Mono/Align/dict.align 较正Multi-Pronunciation后的音素词典文件;
6. $g_hmmlist_mono_sp 音素列表文件;
输出文件:
1. -i $g_dir_Mono/Align/MLF.Aligned.$j 对第j批数据测试的结果;
2. $g_dir_Mono/Align/LOG.HVite.Split.$j 测试结果日志文件;
从日志文件中,选出“合格”的训练数据(初步定为Force-Alignment能存活的文件),并保存,命令行如下:
参数:$g_nSplit 分割训练列表的个数;
$cmd = "$g_bin_EasyTraining -GetSVVUtt $g_dir_Mono/Align/LOG.HVite.Split
$g_scp_Aligned_Training $g_nSplit";
输入文件:
1. $g_dir_Mono/Align/LOG.HVite.Split 测试结果日志文件;
输出文件:
1. $g_scp_Aligned_Training 较正校正后合格的训练数据列表;
2.1.9 用较正校正后的数据训练模型
用上一步得到的较正校正后的训练数据再进行训练,首先对数据分开进行训练。
命令行为:
$cmd = "$g_bin_HERest $g_strBinaryFlag -p $j $g_strPruning
-C $g_cf_Mono -H $g_dir_Mono/Align/hmm$k/MODELS
-M $g_dir_Mono/Align/hmm$i -S $g_scp_Aligned_Training.$j
-I $g_dir_Mono/MLF.mono $g_hmmlist_mono_sp";
输入文件:
1. -C $g_cf_Mono 配置文件config;
2. -H $g_dir_Mono/Align/hmm$k/MODELS 待训练的MMF模型文件;
3. -S $g_scp_Aligned_Training.$j 较正校正后的训练数据列表文件;
4. -I $g_dir_Mono/MLF.mono 包含sp的音素标注文件;
5. $g_hmmlist_mono_sp 包含sp的音素列表文件;
输出文件:
1. -M $g_dir_Mono/Align/hmm$i 第i轮训练时,产生的HER.acc文件存储目录;
然后对全部数据进行训练汇总,命令行如下:
$cmd = "$g_bin_HERest $g_strBinaryFlag -p 0 $g_strPruning -C $g_cf_Mono
-H $g_dir_Mono/Align/hmm$k/MODELS -M $g_dir_Mono/Align/hmm$i
-s $g_dir_Mono/Align/hmm$i/occ.0 $g_hmmlist_mono_sp";
for($j=1; $j<=$g_nSplit; $j++)
{
$cmd = $cmd . " $g_dir_Mono/Align/hmm$i/HER$j.acc";
}
输入文件:
1. -C $g_cf_Mono 配置文件config;
2. -H $g_dir_Mono/Align/hmm$k/MODELS 待训练的MMF模型文件MODELS;
3. $g_hmmlist_mono_sp 包含sp的音素列表文件;
2. $g_dir_Mono/Align/hmm$i/HER$j.acc 所有的HER.acc文件;
输出文件:
1. -s $g_dir_Mono/Align/hmm$i/occ.0 训练过程产生的统计文件occ.0;
2. -M $g_dir_Mono/Align/hmm$i 第i轮训练完成后,得到新的MMF文件MODELS的存储目录;
通过上述9个步骤就完成了整个monophone模型的训练过程,下一步将monophone模型克隆为上下文相关(context-dependent)模型。图2.4给出了对训练数据进行检查的程序流程图:
图2.4 Force-alignment检查训练数据流程图
2.2 克隆上下文相关(context-dependent)模型
首先,用HLEd生成上下文相关模型MLF标注文件请给出例子
(下面进行上下文相关模型的训练时需要用到该文件)。
命令行如下:
$cmd = "$g_bin_HLEd -l $strStar -i $g_dir_Context/MLF.context -n $g_hmmlist_context
$g_cmd_HLEd_Mono2Context $g_dir_Mono/MLF.mono";
输入文件:
1. $g_dir_Mono/MLF.mono 含sp的monophone音素标注MLF文件;
2. $g_cmd_HLEd_Mono2Context HLEd命令编辑文件;
输出文件:
1. $g_dir_Context/MLF.context 上下文相关音素标注MLF文件;
2. $g_hmmlist_context 上下文相关音素列表文件;
其次,用MakeM2CHHEdCmd生成从Mono-Phone克隆到Tri-Phone的HHEd命令编辑文件。需要指出的是,此编辑文件还将各个phone的状态转移矩阵绑在了一起。
命令行如下:
$cmd = "$g_bin_EasyTraining -MakeM2CHHEdCmd $g_hmmlist_mono_nosp
$g_hmmlist_context $g_dir_Context/HHEd.Mono2Context";
参数:
1. $g_hmmlist_context 只将该文件名作为输入参数;
输入文件:
1. $g_hmmlist_mono_nosp 不含sp的音素列表文件;
输出文件:
2. $g_dir_Context/HHEd.Mono2Context HHEd命令编辑文件;
接着,通过执行HHEd命令将monophone模型转化为上下文相关模型。
命令行如下:
$cmd = "$g_bin_HHEd -C $g_cf_Context -H $modelnow -M $g_dir_Context/hmm0
$g_dir_Context/HHEd.Mono2Context $g_hmmlist_mono_sp";
输入文件:
1. $g_cf_Context 配置文件config;
2. -H $modelnow 第9步得到的monophone模型MODELS;
3. $g_dir_Context/HHEd.Mono2Context HHEd命令编辑文件;
4. $g_hmmlist_mono_sp 不含sp的音素列表文件;
输出文件:
-M $g_dir_Context/hmm0 上下文相关模型MODELS存放目录;
最后,对得到的上下文相关模型$g_dir_Context/hmm0/MODELS进行迭代训练。和前面训练过程一样分两步进行,即先对训练数据分开进行训练,然后再对全部数据进行训练。
对训练数据分开进行训练的命令行如下:
$cmd = "$g_bin_HERest $g_strBinaryFlag -p $j $g_strPruning
-C $g_cf_Context -H $g_dir_Context/hmm$k/MODELS
-M $g_dir_Context/hmm$i -S $g_scp_Aligned_Training.$j
-I $g_dir_Context/MLF.context $g_hmmlist_context";
输入文件:
1. -C $g_cf_Context 配置文件config;
2. -H $g_dir_Context/hmm$k/MODELS 待训练的MMF模型文件;
3. -S $g_scp_Aligned_Training.$j 较正校正后的训练数据列表文件;
4. -I $g_dir_Context/MLF.context 上下文相关的音素标注文件;
5. $g_hmmlist_context 上下文相关的音素列表文件;
输出文件:
1. -M $g_dir_Context/hmm$i 第i轮训练时,产生的HER.acc文件存储目录;
$cmd = "$g_bin_HERest $g_strBinaryFlag -p 0 $g_strPruning -C $g_cf_Context
-H $g_dir_Context/hmm$k/MODELS -M $g_dir_Context/hmm$i
-s $g_dir_Context/hmm$i/occ.0 $g_hmmlist_context";
for($j=1; $j<=$g_nSplit; $j++)
{
$cmd = $cmd . " $g_dir_Context/hmm$i/HER$j.acc";
}
输入文件:
1. $g_cf_Context 配置文件config;
2. -H $g_dir_Context/hmm$k/MODELS 待训练的MMF模型文件MODELS;
3. $g_hmmlist_context 包含sp的音素列表文件;
2. $g_dir_Context/hmm$i/HER$j.acc 所有的HER.acc文件;
输出文件:
1. -s $g_dir_Context/hmm$i/occ.0 训练过程产生的统计文件occ.0;
2. -M $g_dir_Context/hmm$i 第i轮训练完成后,得到新的MMF文件MODELS的存储目录;
2.3 状态绑定上下文相关模型
首先,要生成用于绑定状态的HHEd编辑命令文件,命令行如下:
$cmd = "$g_bin_EasyTraining -MakeClstHHEdCmd $g_dir_TiedContext/Clst.log
$statnow $g_qst_QuestionSet $g_cmd_EasyTraining_ModelGen
$g_dir_TiedContext/HHEd.Clustering $g_dir_TiedContext/TREE
$g_hmmlist_tiedco
展开阅读全文