EasyTraining模型訓練流程文檔.doc_第1頁
EasyTraining模型訓練流程文檔.doc_第2頁
EasyTraining模型訓練流程文檔.doc_第3頁
EasyTraining模型訓練流程文檔.doc_第4頁
EasyTraining模型訓練流程文檔.doc_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

安徽中科大訊飛信息科技有限公司Anhui USTC iFlyTek CO.,LTD. The EasyTraining Toolkit系統(tǒng)概覽及流程指南科大訊飛 版權所有(2006)可以加上你的名字和詳細日期、版本1.0第23頁目 錄目 錄0一系統(tǒng)概述1二上下文相關(Context-dependent)模型的訓練流程32.1 上下文無關模型的訓練42.1.1 用CompV估計全局方差42.1.2 用ModelGen克隆monophone52.1.3 分割訓練數(shù)據列表52.1.4 用HLEd將詞級MLF文件轉為音素級MLF文件52.1.5 HERest訓練不帶sp的monophone模型62.1.6 在monophone中加入停頓模型sp72.1.7 HERest訓練帶sp的monophone模型82.1.8 校正訓練數(shù)據102.1.9 用校正后的數(shù)據訓練模型112.2 克隆上下文相關(context-dependent)模型132.3 狀態(tài)綁定上下文相關模型152.4 分裂高斯162.5 生成最終模型18三右相關聲母及帶調韻母模型的訓練流程193.1 無關模型的訓練流程193.2 克隆右相關聲母及帶調韻母模型193.3 分裂高斯203.4 得到最終模型20四HTK聲學模型測試214.1 HParse生成語法網絡214.2 HVite識別214.3 HResults計算識別率22五版本信息23一系統(tǒng)概述The EasyTraining Toolkit是一個以HTK為基礎而開發(fā)的用于大詞匯量連續(xù)語音識別系統(tǒng)模型訓練和測試的工具包,目前的版本支持上下文相關(context-dependent)模型和、右相關聲韻母模型及帶調模型的訓練和測試,兩種模型只需要配置不同的基礎文件即可。EasyTraining統(tǒng)一MLE訓練的框架流程圖如下圖所示:圖1.1 Easytraining 統(tǒng)一MLE訓練框架圖The EasyTraining Toolkit的特點:n 統(tǒng)一框架n 跨平臺(WIN32、Linux兼容)n 較少基礎文件準備n 斷點恢復n 訓練數(shù)據檢查n 決策樹聚類狀態(tài)數(shù)指定n 清除中間文件n 并行化n 靈活配置表1 上下文相關模型基礎文件列表config.allHTK config文件dict.mono dict.test訓練及測試詞典HHEd.fixsilsil處理命令及問題集HHEd.questionsetHLEd.wrd2mono_nospMLF處理命令文件HLEd.wrd2mono_spHLEd.mono2trimodelgen.cmdMono-phone模型克隆文件proto_E模型原型文件proto_spsyllable.mlf詞級MLFtrain.scp訓練文件列表表2 右相關聲韻母及帶調右相關聲母及帶調韻母模型基礎文件列表:config.allHTK config文件sy.dict sy.dict.notone帶調及不帶調詞典HHEd.fixsilsil處理命令及問題集HLEd.wrd2mono_nospMLF處理命令文件HLEd.wrd2mono_spHLEd.mono2symodelgen.cmd.sy66Mono-phone模型克隆文件proto_E模型原型文件proto_spSyllable_tone.mlf詞級MLF(帶調)train.scp訓練文件列表二上下文相關(Context-dependent)模型的訓練流程本節(jié)以Tri-phone模型訓練為例,介紹用HTK對上下文相關(context-dependent)模型的訓練流程,Tri-phone單元都是基于基準的上下文無關的音素聲韻單元(簡稱即Mono-phone)進行跨詞的上下文擴展所得。其中sil為上下文無關(context independent)的模型,sp為相關可穿越(context free)模型。模型命名規(guī)則為:左相關-模型+右相關,例如_a-a+b。下圖為聲學模型訓練過程的基本流程:圖2.1 Easytraining基本訓練流程圖從圖中可以看出,整個模型訓練的過程可以分成下面四個部分:第一部分:上下文無關模型第二部分:上下文相關模型第三部分:決策樹狀態(tài)綁定模型第四部分:最終測試模型下圖為聲學模型訓練的詳細流程圖:圖2.2 Easytraining聲學模型訓練的詳細流程圖2.1 上下文無關模型的訓練2.1.1 用CompV估計全局方差HcompV計算出所有訓練數(shù)據的全局均值和方差,并用全局均值和方差取代原型文件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為所有訓練數(shù)據全目錄文件名列表文件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模型,并把所有克隆出來的音素模型參數(shù)保存在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及其狀態(tài)數(shù));輸出文件:1. -M $g_dir_Mono/Init/hmm0/MODELS克隆后包含所有音素模型的MMF文件;2.1.3 分割訓練數(shù)據列表SplitScripts將所有訓練語音的全路徑列表文件$g_scp_Training分割成$g_nSplit等份,用于在下一步分別訓練模型乃至實現(xiàn)并行化。命令行如下: $cmd = $g_bin_EasyTraining -SplitScript $g_scp_Training $g_nSplit;參數(shù):1. $g_nSplit需要分割的數(shù)量;輸入文件:1. $g_scp_Training待分割的全部訓練語音的全路徑列表文件;輸出文件:$g_scp_Training.1,$g_scp_Training.2,$g_scp_Training. $g_nSplit。為分割成$g_nSplit等份后每一部分數(shù)據的路徑列表文件名。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對訓練數(shù)據進行訓練,得到不帶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;參數(shù):1. -p $j當j0時,進行并行訓練,對每一部分訓練數(shù)據會產生一個HER.acc文件;當j=0時,讀取所有HER.acc文件,對所有訓練數(shù)據進行訓練訓練結果進行匯總;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個訓練數(shù)據列表文件,表示這一次訓練只用-S $g_scp_Training.$j中的數(shù)據進行訓練;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文件存儲目錄;上述訓練完成后,再用所有數(shù)據進行一次訓練:命令行如下: $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_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批訓練數(shù)據;5. $g_dir_Mono/Align/dict.align較正Multi-Pronunciation后的音素詞典文件;6. $g_hmmlist_mono_sp音素列表文件;輸出文件:1. -i $g_dir_Mono/Align/MLF.Aligned.$j對第j批數(shù)據測試的結果;2. $g_dir_Mono/Align/LOG.HVite.Split.$j測試結果日志文件;從日志文件中,選出“合格”的訓練數(shù)據(初步定為Force-Alignment能存活的文件),并保存,命令行如下:參數(shù):$g_nSplit分割訓練列表的個數(shù); $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較正校正后合格的訓練數(shù)據列表;2.1.9 用較正校正后的數(shù)據訓練模型用上一步得到的較正校正后的訓練數(shù)據再進行訓練,首先對數(shù)據分開進行訓練。命令行為: $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較正校正后的訓練數(shù)據列表文件;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文件存儲目錄;然后對全部數(shù)據進行訓練匯總,命令行如下: $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訓練過程產生的統(tǒng)計文件occ.0;2. -M $g_dir_Mono/Align/hmm$i第i輪訓練完成后,得到新的MMF文件MODELS的存儲目錄;通過上述9個步驟就完成了整個monophone模型的訓練過程,下一步將monophone模型克隆為上下文相關(context-dependent)模型。圖2.4給出了對訓練數(shù)據進行檢查的程序流程圖:圖2.4 Force-alignment檢查訓練數(shù)據流程圖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_Mono2ContextHLEd命令編輯文件;輸出文件:1. $g_dir_Context/MLF.context上下文相關音素標注MLF文件;2. $g_hmmlist_context上下文相關音素列表文件;其次,用MakeM2CHHEdCmd生成從Mono-Phone克隆到Tri-Phone的HHEd命令編輯文件。需要指出的是,此編輯文件還將各個phone的狀態(tài)轉移矩陣綁在了一起。命令行如下: $cmd = $g_bin_EasyTraining -MakeM2CHHEdCmd $g_hmmlist_mono_nosp$g_hmmlist_context $g_dir_Context/HHEd.Mono2Context;參數(shù):1. $g_hmmlist_context只將該文件名作為輸入參數(shù);輸入文件:1. $g_hmmlist_mono_nosp不含sp的音素列表文件;輸出文件:2. $g_dir_Context/HHEd.Mono2ContextHHEd命令編輯文件;接著,通過執(zhí)行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.Mono2ContextHHEd命令編輯文件;4. $g_hmmlist_mono_sp不含sp的音素列表文件;輸出文件:-M $g_dir_Context/hmm0上下文相關模型MODELS存放目錄;最后,對得到的上下文相關模型$g_dir_Context/hmm0/MODELS進行迭代訓練。和前面訓練過程一樣分兩步進行,即先對訓練數(shù)據分開進行訓練,然后再對全部數(shù)據進行訓練。對訓練數(shù)據分開進行訓練的命令行如下: $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較正校正后的訓練數(shù)據列表文件;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_dir_TiedContext/HHEd.Tied.log;輸入文件:1. -C $g_cf_TiedContext配置文件config;2. -H $modelnow綁定前的模型文件MMF;3. $g_dir_TiedContext/HHEd.ClusteringHHEd命令編輯文件;4. $g_hmmlist_context上下文相關的音素列表文件;輸出文件:1. -M $g_dir_TiedContext/hmm0綁定后的模型文件MMF;2. $g_dir_TiedContext/HHEd.Tied.log綁定的日志文件;3. $g_dir_TiedContext/TREE生成的決策樹;4. $g_hmmlist_tiedcontext生成的綁定音素列表文件;最后,根據給定的狀態(tài)數(shù)目對MODELS中的模型和TB值進行調整檢查目前所得模型的聚類狀態(tài)數(shù)。如果它不滿足設定的狀態(tài)數(shù)條件(目前狀態(tài)數(shù)處于$g_strTiedStates正負百分之$g_strTolerance范圍內),則對TB進行修改,并重新進行決策樹聚類。這里請給出我ppt中的檢查流程,命令行如下: $cmd = $g_bin_EasyTraining -CheckClstStates $g_dir_TiedContext/HHEd.Tied.log$g_dir_TiedContext/Clst.log $g_strTiedStates $g_strTolerance$g_dir_TiedContext/hmm0/MODELS;參數(shù):1. $g_strTiedStates綁定后的狀態(tài)數(shù)目;2. $g_strTolerance輸入文件:1. $g_dir_TiedContext/HHEd.Tied.log綁定的日志文件;輸出文件:1. $g_dir_TiedContext/hmm0/MODELS調整狀態(tài)數(shù)目后的模型;2. $g_dir_TiedContext/Clst.log聚類日志文件;2.4 分裂高斯前面所做的各個步驟都是基于單個高斯,這一步將單個高斯逐步分裂成多個高斯。EasyTraining被設計成對填塞模型和普通phone模型可以沿著不同的mixture-up path增長高斯。,首先,通過如下命令行生成分裂高斯的HHEd命令編輯文件:$cmd = $g_bin_EasyTraining MakeMUHHEdCmd $g_dir_TiedContext/mix$m/HHEd.MixtureUp $m $g_hmmlist_mono_sp $n $g_strNonPhoneList;參數(shù):1. $mphone的當前高斯數(shù);2. $nNonphone的當前高斯數(shù);3. $g_strNonPhoneList值為“sil sp”填塞模型列表;輸入文件:1. $g_hmmlist_mono_sp含sp的音素列表文件;輸出文件:1. $g_dir_TiedContext/mix$m/HHEd.MixtureUpHHEd命令編輯文件;得到HHEd命令編輯文件后,HHEd按照該文件中的命令增加模型中的高斯混合數(shù)目,命令行如下:$cmd = $g_bin_HHEd -C $g_cf_TiedContext -H $modelnow -M $g_dir_TiedContext/mix$m/hmm0 $g_dir_TiedContext/mix$m/HHEd.MixtureUp $g_hmmlist_tiedcontext;輸入文件:1. -C $g_cf_TiedContext配置文件config;2. -H $modelnow當前模型文件;3. $g_dir_TiedContext/mix$m/HHEd.MixtureUpHHEd命令編輯文件;4. $g_hmmlist_tiedcontext決策樹綁定后的音素列表文件;輸出文件:1. -M $g_dir_TiedContext/mix$m/hmm0m個高斯時初始MODELS存儲目錄;最后,對分裂高斯后的初始模型進行迭代訓練,如下面兩個命令行所示:$cmd = $g_bin_HERest $g_strBinaryFlag -p $j $g_strPruning-C $g_cf_TiedContext -H $g_dir_TiedContext/mix$m/hmm$k/MODELS-M $g_dir_TiedContext/mix$m/hmm$i -S $g_scp_Aligned_Training.$j-I $g_dir_TiedContext/MLF.tiedcontext $g_hmmlist_tiedcontext;輸入文件:1. -C $g_cf_TiedContext配置文件config;2. -H $g_dir_TiedContext/mix$m/hmm$k/MODELS待訓練的MMF模型文件;3. -S $g_scp_Aligned_Training.$j較正校正后的訓練數(shù)據列表文件;4. -I $g_dir_TiedContext/MLF.tiedcontext決策樹綁定后的音素標注文件;5. $g_hmmlist_tiedcontext決策樹綁定后的音素列表文件;輸出文件:1. -M $g_dir_TiedContext/mix$m/hmm$i第i輪訓練時,產生的HER.acc文件存儲目錄;$cmd = $g_bin_HERest $g_strBinaryFlag -p 0 $g_strPruning -C $g_cf_TiedContext-H $g_dir_TiedContext/mix$m/hmm$k/MODELS -M $g_dir_TiedContext/mix$m/hmm$i-s $g_dir_TiedContext/mix$m/hmm$i/occ.0 $g_hmmlist_tiedcontext;for($j=1; $j=$g_nSplit; $j+) $cmd = $cmd . $g_dir_TiedContext/mix$m/hmm$i/HER$j.acc;輸入文件:1. -C $g_cf_TiedContext配置文件config;2. -H $g_dir_TiedContext/mix$m/hmm$k/MOD

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論