Htk實(shí)驗(yàn)筆記-史上最完整版_第1頁(yè)
Htk實(shí)驗(yàn)筆記-史上最完整版_第2頁(yè)
Htk實(shí)驗(yàn)筆記-史上最完整版_第3頁(yè)
Htk實(shí)驗(yàn)筆記-史上最完整版_第4頁(yè)
Htk實(shí)驗(yàn)筆記-史上最完整版_第5頁(yè)
已閱讀5頁(yè),還剩48頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、Htk實(shí)驗(yàn)筆記YesOrNo孤立詞識(shí)別(史上最完整版哦)摘要:本試驗(yàn)中,我們將基于HTK對(duì)象散設(shè)立建設(shè)一個(gè)2-單詞辨認(rèn)體系,辭匯散是Yes,No。那是能夠計(jì)劃出去的最根基的主動(dòng)語(yǔ)音辨認(rèn)(Automaticspeechrecognition,ASR)體系。方針:設(shè)立建設(shè)一個(gè)伶仃詞識(shí)本實(shí)驗(yàn)中,我們將基于HTK工具集建立一個(gè)2-單詞識(shí)別系統(tǒng),詞匯集是Yes,No。這是可以設(shè)計(jì)出來(lái)的最基本的自動(dòng)語(yǔ)音識(shí)別(Automaticspeechrecognition,ASR)系統(tǒng)。目標(biāo):建立一個(gè)孤立詞識(shí)別系統(tǒng),只包含yes和no兩個(gè)詞。步驟:A:創(chuàng)建一個(gè)語(yǔ)料庫(kù),確定識(shí)別基本元(如單詞yes,no等),yes和n

2、o各錄5次B:聲學(xué)分析,把waveform的聲音文件轉(zhuǎn)換為mfcc()格式,即對(duì)語(yǔ)音材料庫(kù)中的聲音文件提取MFCC聲紋特征(梅爾頻率倒譜系數(shù),這個(gè)部分的詳解見教程10)。C:模型定義:為詞典里的每一個(gè)詞(基本元)建立一個(gè)HMM原型D:模型訓(xùn)練:HMM模型初始化和迭代,利用MFCC聲紋特征又t每一個(gè)HMM模型進(jìn)行訓(xùn)練,使模型參數(shù)與其描述的識(shí)別基本元對(duì)應(yīng)。E:問題定義,即語(yǔ)法定義,定義輸入語(yǔ)音的語(yǔ)法規(guī)則等,從發(fā)音對(duì)應(yīng)到文字。F:對(duì)測(cè)試集合進(jìn)行識(shí)別G:評(píng)測(cè)使用的教程:1. HTK(V3.1)基礎(chǔ)指南中文版2. 語(yǔ)音識(shí)別工具箱之HTK安裝與使用3. 語(yǔ)音識(shí)別系統(tǒng)之htk孤立詞識(shí)別(yesno)4. H

3、TK(yesno)教程5. HTK孤立詞識(shí)別回顧6. 一個(gè)簡(jiǎn)單的HTK入門參考例子7. 利用HTKX具包快速建立一個(gè)語(yǔ)音命令識(shí)別系統(tǒng)8. Windows安裝HTK3.4.1語(yǔ)音識(shí)別工具(這里有HSLab運(yùn)行失敗的原因)9. Htkerrorbook10. UNDERSTANDINGHTKERRORMESSAGES11. htk源碼12.語(yǔ)音信號(hào)處理之(四)梅爾頻率倒譜系數(shù)(MFCC特別記錄一下該博客,里面有大量語(yǔ)音方面的學(xué)習(xí)資料。一.準(zhǔn)備工作預(yù)先建立文件夾我在htk目錄下建立了work文件夾,今后所有的實(shí)驗(yàn)都放在這個(gè)文件夾中。在該文件夾中建立YesNo文件夾用于存放本實(shí)驗(yàn)的所有文件和數(shù)據(jù)。Ye

4、sNo文件夾中的結(jié)構(gòu)如下:(1) data/:存儲(chǔ)訓(xùn)練和測(cè)試數(shù)據(jù)(語(yǔ)音信號(hào)、標(biāo)簽等等),包括一個(gè)子目錄data/train,而train包才2個(gè)子目錄,data/train/sig(用以存儲(chǔ)步驟1接下來(lái)錄制的訓(xùn)練語(yǔ)音數(shù)據(jù))和data/train/mfcc(用來(lái)存儲(chǔ)步驟二中訓(xùn)練數(shù)據(jù)轉(zhuǎn)化后的mfcc參數(shù));(2) model/:存儲(chǔ)識(shí)別系統(tǒng)的模型(HMMs)的相關(guān)文件;(3) def/:存儲(chǔ)任務(wù)定義的相關(guān)文件;(4) test/:存儲(chǔ)測(cè)試相關(guān)文件(我是將測(cè)試數(shù)據(jù)存在此文件夾的沒有放在data中)。在data/下創(chuàng)建data/train/sig、data/train/lab、data/train/m

5、fcc文件夾,分別存放采集的語(yǔ)音材料的sig文件、lab(標(biāo)簽)文件和提取的MFCC聲紋特征文件。在model/下創(chuàng)建model/proto、model/hmm0、model/hmm0flat、model/hmmlmodel/hmm2、model/hmm3文件夾:model/proto用于存放模型初始化所需HMM原型定義文件hmm_yes、hmm_no、hmm_silmodel/hmm0用于存放使用HInit命令初始化HMM模型輸出的描述結(jié)果文件(依然是hmm_yes、hmm_no、hmm_sil)model/hmm0flat用于存放使用HCompv命令初始化模型時(shí)輸出的可變基底宏文件vFlo

6、ors(丟棄使用HCompv初始化模型時(shí)產(chǎn)生的hmm_yes、hmm_no、hmm_sil)model/hmmi為使用HRest命令迭代訓(xùn)練HMM模型時(shí)的輸出目錄,i為表示當(dāng)前迭代i的索引最終單詞HMM模型是hmm3/hmm_yes,hmm3/hmm_no,andhmm3/hmm_sil。在 test/ 下創(chuàng)建 test/sig 、test/mfcc 、test/result文件夾,分別存放測(cè)試用的語(yǔ)音材料的sig文件、提取的MFCC聲紋特征文件和測(cè)試結(jié)果文件。整個(gè)目錄的結(jié)構(gòu)我將在本文最后給出。二.創(chuàng)建語(yǔ)料庫(kù)首先我們需要錄音以采集足夠的語(yǔ)音數(shù)據(jù),對(duì)于yes、no”這兩個(gè)命令都需要錄一些相應(yīng)的語(yǔ)

7、音樣本,同時(shí)也需要對(duì)錄下的語(yǔ)音做一些簡(jiǎn)單的標(biāo)注。錄音和標(biāo)注可以采用HTK工具包中的HSLab來(lái)完成。這里我們采集YES和NO兩個(gè)單詞。在命令行下進(jìn)入 HTK/work/YesNo/data/train/sig文件夾(sig語(yǔ)言文件保存在該目錄中),輸入:HSLabyes.sig回車(該命令用于使用HSLab工具打開所在目錄的yes.sig文件,如果沒有該文件,則在該目錄中新建該文件,這里使用該命令打開HSLab圖形化界面,錄制yes.sig)這一步可能會(huì)遇到如下問題:報(bào)錯(cuò):"ERROR+6870MakeXGraf:NotcompiledwithX11support:useHGraf.

8、X.cATALERROR-Terminatingpro”解決辦法:-1、這需要修改HTKLib文件夾下的htk_htklib_nt.mkf文件,共有兩處需要修改:將文件中的HGraf.null.obj替換為HGraf_WIN32.obj、HGraf.null.olv替換為HGraf_WIN32.olv;-2、然后在cmd命令行中重新編譯HTKLib文件夾下的htk_htklib_nt.mkf;-3、檢查HTKTools文件夾下的Make文件,如果有"-lX11"字符的話將其刪除,然后在cmd命令行中重新編譯HTKTools文件夾下的htk_htktools_nt.mkf文件

9、;(需要將bin.win32文件夾的路徑加入到環(huán)境變量中)原因:默認(rèn)情況下HSLab工具使用的是x11做的圖形界面接口,windows不支持,所以需要修改一下生成文件,使用windowsGUI。重新執(zhí)行HSLabyes.sig回車,一個(gè)用于錄音的對(duì)話框就會(huì)出現(xiàn)。如圖:下面我們開始錄音。錄音環(huán)境自己控制哈。1.錄制聲音。點(diǎn)擊rec按鈕,說:"yes”,然后點(diǎn)擊stop按鈕。你會(huì)看到界面上出現(xiàn)一個(gè)語(yǔ)音波形,一條語(yǔ)音樣本就錄制完成了,你可以點(diǎn)擊play播放聽一下。2 .給聲音做標(biāo)記。本條語(yǔ)音一共需要做3個(gè)標(biāo)記:yes語(yǔ)音段的標(biāo)記和其前后各一個(gè)的靜音段標(biāo)記。注意:做標(biāo)記的語(yǔ)音段不能重復(fù)(可以

10、不相連)。點(diǎn)擊mark,用鼠標(biāo)選取“yes”前面的一段靜音后,再點(diǎn)擊Labelas,用鍵盤輸入"sil"表示silence靜音的意思,然后回車。這樣我們就給本條語(yǔ)音的靜音段做了一個(gè)標(biāo)記。再點(diǎn)擊mark,選取“yes”的發(fā)音段(可以選取左右兩邊的邊界,不容易出錯(cuò)),然后點(diǎn)擊Labelas按鈕,用鍵盤輸入“yes”,回車。這樣我們就給本語(yǔ)句的yes做了標(biāo)記,依照此方法,完成yes后面那個(gè)sil語(yǔ)音段的標(biāo)記。完成這3個(gè)標(biāo)記后,點(diǎn)擊save按鈕,回車。將我們的其標(biāo)記文件保存。保存目錄為HSLab.exe的運(yùn)行目錄。別找不到文件了哈。3 .重命名語(yǔ)音文件和語(yǔ)音標(biāo)記文件。語(yǔ)音文件后綴為

11、*sig,標(biāo)記文件后綴為*lab。因?yàn)镠Graf:HSLab只能自動(dòng)給出0,1的文件名序號(hào),我們又需要至少10條的語(yǔ)音材料,所以就需要錄制一條語(yǔ)音,重命名一條。我們將yes_0.sig重命名為yes_01.sig,將yes_0.lab重命名為yes_01.lab.至此,我們完成了一個(gè)語(yǔ)音材料的錄制。4 .點(diǎn)擊new按鈕(這里不點(diǎn)new的話你會(huì)發(fā)現(xiàn)lab文件中有N多個(gè)標(biāo)簽信息,如果遇到這種情況,你可以刪除相應(yīng)lab文件,重新打開sig文件貼標(biāo)簽),會(huì)發(fā)現(xiàn)new按鈕旁邊的set0變?yōu)閟et1了。然后依照1,2,3步,新建下一條語(yǔ)音材料,這時(shí)HSLab自動(dòng)保存的文件名為,yes_1.sig,yes_

12、1.lab,將其命名為yes_02.sig和yes_02.lab即可。5 .再執(zhí)行9次第4步,得到y(tǒng)es_03,yes_04yes_10的語(yǔ)音材料和標(biāo)記文件。6 .依口1,2,3,4,5步的方法,完成no的語(yǔ)音材料和標(biāo)記文件的制作,得到no_00.sig,no_00.labno_10.sig,no_10.lab.7 .這樣我們就完成了本yes和no語(yǔ)音識(shí)別系統(tǒng)的語(yǔ)音庫(kù)的建立。然后將所有的*lab文件放入到laber_dir文件夾中。以方便后面訓(xùn)練操作。我們可以打開一個(gè).lab文件看一下它的結(jié)構(gòu)。如下記錄了sig文件各標(biāo)簽的起止信息(如果你打開文件不是這樣,而是有很多的標(biāo)簽,也許你在打標(biāo)簽的過程

13、中出現(xiàn)了問題)。三.聲學(xué)分析語(yǔ)音識(shí)別系統(tǒng)并不直接在語(yǔ)音信號(hào)上進(jìn)行識(shí)別,而是先要進(jìn)行特征提取,包括分幀,加窗,求取頻譜及倒譜,這樣確保提取出的特征更加緊湊并盡可能多的保留語(yǔ)音內(nèi)容的信息。HTK中負(fù)責(zé)提取特征的是HCopy工具,它將wav格式的語(yǔ)音文件轉(zhuǎn)化為包含若干特征矢量的特征文件。具體命令如下:Hcopy-A-D-Ctest/analysis.conf-Sdef/targetlist.txt使用該命令前,首先需要完成兩個(gè)配置文件的編寫(用記事本編寫即可)。1) analysis.conf為抽取參數(shù)配置文件,用于對(duì)特征提取過程中的參數(shù)進(jìn)行配置,如命令所示保存在test文件夾下。內(nèi)容如下:SOUR

14、CEFORMAT=HTK#指定輸入語(yǔ)音文件的擱置TARGETKINDMFCC_0_D_A#定義提取什么樣的特征參數(shù),這里定義的是12個(gè)MFCC系數(shù),1個(gè)nullMFCC系數(shù)c0,13個(gè)一階MFC僚數(shù),13個(gè)二階MFCCC(數(shù)。一共39個(gè)。MFCC勺有關(guān)材料白度既可。WINDOWSIZE=250000.0#定義幀長(zhǎng)TARGETRATE=100000.0#定義取幀時(shí)的滑動(dòng)長(zhǎng)度NUMCEPS12#定義取到的MFCCf系數(shù)的個(gè)數(shù)。上邊的12就來(lái)源于此。USEHAMMING=T#定義取幀時(shí)用到的窗函數(shù)。這里定義使用漢寧窗。PREEMCOEF=0.97#定義預(yù)加重系數(shù),NUMCHANS=26#定義美爾頻譜

15、的頻道數(shù)量CEPLIFTER=22#定義倒譜所用到的濾波器組內(nèi)濾波器個(gè)數(shù)。其中#后代表注釋,參數(shù)意義以后詳細(xì)說(該文件可以有注釋)2) targetlist.txt為源/目的列表文件,用以說明抽取源文件(*sig)的路徑和目標(biāo)文件(*mfcc)的保存路徑,內(nèi)容如下:data/train/sig/yes_01.sigdata/train/mfcc/yes_01.mfccdata/train/sig/yes_02.sigdata/train/mfcc/yes_02.mfccdata/train/sig/yes_03.sigdata/train/mfcc/yes_03.mfccdata/train/

16、sig/yes_04.sigdata/train/mfcc/yes_04.mfccdata/train/sig/yes_05.sigdata/train/mfcc/yes_05.mfccdata/train/sig/no_01.sigdata/train/mfcc/no_01.mfccdata/train/sig/no_02.sigdata/train/mfcc/no_02.mfccdata/train/sig/no_03.sigdata/train/mfcc/no_03.mfccdata/train/sig/no_04.sigdata/train/mfcc/no_04.mfccdata/tr

17、ain/sig/no_05.sigdata/train/mfcc/no_05.mfcc這里我只將yes和no的前五條作為抽取的源文件,原先是將10條都作為源文件的,但是有的文件在后面的初始化過程中報(bào)錯(cuò)了。原因可能是在貼標(biāo)簽的時(shí)候,標(biāo)簽之間出現(xiàn)了重復(fù),目前我也不是非常清楚。去掉有問題的文件后,就沒有問題了。由于錄音不方便,于是想到將yes和no的前五條作為抽取的源文件,后五條作為測(cè)試文件。于是乎,需要將后五條sig文件存儲(chǔ)到test/sig文件中。讀者可以全都寫上,然后有報(bào)錯(cuò)的時(shí)候再去掉,然后重新生成mfcc文件即可完成上面兩個(gè)文件后,運(yùn)行上述命令Hcopy-A-D-Ctest/analysis

18、.conf-Sdef/targetlist.txt,結(jié)果如下圖:屏幕上會(huì)輸出配置文件中的各個(gè)參數(shù)如果沒有錯(cuò)誤的話,在data/train/mfcc下,應(yīng)該有*mfcc文件出現(xiàn)。如下圖。此步驟不容易出錯(cuò),一般都會(huì)成功。至此,特征提取就完成了四.HMM模型定義在model/proto中建立模型初始化所需HMM原型定義文件:hmm_yes、hmm_no、hmm_sil(注意這三個(gè)文件無(wú)后綴名,否則會(huì)報(bào)錯(cuò),且后面步驟中生成的同名文件也均無(wú)后綴名)。hmm_yes內(nèi)容如下(洋意:里面不能有注釋,使用的時(shí)候必須刪棹)o<VecSize>39<MFCC_0_D_A>#定義輸入特征參數(shù)

19、的維書h"sil"#定義模型名字,這里是給識(shí)別基本元sil定義的,所以需要""內(nèi)為sil<BeginHMM>#開始HMM數(shù)的設(shè)置,<NumStates>6#定義隱含狀態(tài)數(shù)<State>2#狀態(tài)1為空,我們從狀態(tài)2開始定義<Mean>39#連續(xù)HMW的均值向量的定義0.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0Varianc

20、e39#連續(xù)HMMH勺方差向量的定義1.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.0<State>3<Mean>390.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0Variance391.01.01.01

21、.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.0<State>4<Mean>391.01.01.01.01.01.01.01.01.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0Variance390.00.00.00.00.00.00.00.00.00.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.

22、01.01.01.01.01.01.0<State>5<Mean>391.01.01.01.01.01.01.01.01.01.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.0Variance391.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.01.0<Trans

23、P>6#轉(zhuǎn)移概率矩陣的定義。0.00.50.50.00.00.00.00.40.30.30.00.00.00.00.40.30.30.00.00.00.00.40.30.30.00.00.00.00.50.50.00.00.00.00.00.0<EndHMM>列表3HMM描述文件(原型)o<VecSize>39<MFCC_0_D_A>文件頭,給出系數(shù)向量大?。ㄟ@里是39個(gè)系數(shù))、系數(shù)類型(MFCC_0_D_Aoh"yes"<BeginHMM>(.)<EndHMM>封裝對(duì)所謂的yes的HMMK型的描述。<

24、NumStates>6給出HMMK型的狀態(tài)總、數(shù),包括2個(gè)非發(fā)散狀態(tài)1和6。<State>2表示對(duì)狀態(tài)2的觀察函數(shù)的描述。這里我們使用單一高斯觀察函數(shù),帶有對(duì)角矩陣。這樣的函數(shù)完全由一個(gè)平均向量和一個(gè)變化向量(自相關(guān)矩陣的對(duì)角元素)。狀態(tài)1和6沒有描述,他們沒有觀察函數(shù)。<Mean>390.00.0(.)0.0(x39)給出當(dāng)前觀察函數(shù)的平均向量(在為0,該文件僅給出HMM1型(它的全局結(jié)構(gòu))的原型39維的觀察空間中)。每個(gè)元素是強(qiáng)制初始化這些系數(shù)后面將用來(lái)訓(xùn)練。<Variance>391.01.0()1.0(x39)給出當(dāng)前觀察函數(shù)的變化向量。每個(gè)元

25、素強(qiáng)制初始化為1.<TransP>6給出模型的6x6轉(zhuǎn)換矩陣,即:alia12a13a14a15a16a21a22a23a24a25a26a31a32a33a34a35a36a41a42a43a44a45a46a51a52a53a54a55a56a61a62a63a64a65a66其中aij表示狀態(tài)i到j(luò)轉(zhuǎn)換的可能性。Null值說明相應(yīng)的轉(zhuǎn)換不允許。其它值進(jìn)行強(qiáng)制初始化(但是矩陣的每行之和為1):在訓(xùn)練過程中將被修改。有人可能有疑問,HMM不是應(yīng)該有個(gè)狀態(tài)轉(zhuǎn)移矩陣A,觀測(cè)概率矩陣B么?怎么這里不見觀測(cè)概率矩B8呢?答:有狀態(tài)轉(zhuǎn)移£1陣的是離散HMM(DHMM),這里用的是

26、連續(xù)型HMM(CHMM),連續(xù)性HMM的參數(shù)為:1.狀態(tài)轉(zhuǎn)移矩陣A,和高斯分布里用到的均值和方差,這里上面的HMM模型中都有定義。具體可查閱:,里面論文語(yǔ)音識(shí)別系統(tǒng)中特征提取和聲學(xué)建模的研究里有關(guān)于HMM的詳細(xì)資料,可供查閱。好了,觀察狀態(tài)轉(zhuǎn)移矩陣,a11=0,a12=0.5,a13=0.5,a1x=0(x=4,5,6),這說明由狀態(tài)1到自身的轉(zhuǎn)移概率為0,到狀態(tài)2的轉(zhuǎn)移概率為0.5,到狀態(tài)3的轉(zhuǎn)移概率為0.5,到狀態(tài)4,5,6的狀態(tài)轉(zhuǎn)移概率為0。其他行數(shù)據(jù)以此類推,由此我們便知道此HMM模型的拓?fù)浣Y(jié)構(gòu),當(dāng)然你也可以修改拓?fù)浣Y(jié)構(gòu)來(lái)試圖改善識(shí)別系統(tǒng)性能。我們必須為每個(gè)模型生成一個(gè)這樣的原型。在我

27、們的例子中,我們要寫3個(gè)HMM模型原型,即yes、no、sil關(guān)于HMM描述文件更多詳細(xì)信息參加HTK文檔第94頁(yè)(第七章HMM定義文件)。然后,以此方法建立yes和no的HMM模型,我們保持拓?fù)浣Y(jié)構(gòu)無(wú)變化。hmm_no.hmm、hmm_sil.hmm有著相同的內(nèi)容,只需將h"yes"中yes改為相應(yīng)的no和sil即可。關(guān)于HMM定義的更多知識(shí),你可以參考htkbook.pdf英文資料,里面介紹的非常詳細(xì)。至此,HMM模型定義完成。五.模型初始化在訓(xùn)練過程開始之前,為了使得訓(xùn)練算法快速精準(zhǔn)收斂,HMM模型參數(shù)必須根據(jù)訓(xùn)練數(shù)據(jù)正確初始化。HTK提供了2個(gè)不同的初始化工具:Hi

28、nit和HCompv。本步是難點(diǎn),因?yàn)槲以趯?shí)驗(yàn)中總是出錯(cuò),苦惱了幾個(gè)小時(shí)才解決問題(關(guān)于我遇到的問題及問題的解決辦法會(huì)在本文最后予以說明)。使用到命令為Hinit和HCompv。榛0&r如HInit下面的命令是使用Viterbi算法通過訓(xùn)練數(shù)據(jù)的時(shí)間軸對(duì)HMM模型進(jìn)行初始化:HInitADT1Strainlist.txtMmodel/hmm0Hmodel/proto/hmmfilellabelLlabel_dirnameofhmm我們來(lái)解釋一下:- A-D-T1等參數(shù),是顯示命令本身,顯示設(shè)定變量等功能,讀者可以在命令行直接輸入HInit叵車,便可看到清晰的解釋。trainlist.t

29、xt是訓(xùn)練語(yǔ)料庫(kù)里全部mfcc文件的列表,用于建立訓(xùn)練集(mfcc文件存儲(chǔ)在目錄data/train/mfcc/),我將trainlist.txt存儲(chǔ)在test/文件夾中,這里使用的時(shí)候要用test/trainlist.txt。- M后跟一個(gè)文件夾,是初始化HMM1型描述結(jié)果輸出的目錄名稱,用來(lái)存放初始化后的hmmt件,也就是輸出文件夾,這里我們采用model/hmm0,(必須提前創(chuàng)建好,這個(gè)我們?cè)谧鰷?zhǔn)備工作的時(shí)候就創(chuàng)建了);- H后跟hmm莫型文件model/proto/hmmfile,它是一個(gè)描述文件,本例中包含被稱作nameofhmm勺HM限型的原型(這里指proto/hmm_yes,p

30、roto/hmm_no,proto/hmm_sil);- l后是制定此HMMI型對(duì)應(yīng)的標(biāo)簽,label用來(lái)標(biāo)示哪個(gè)標(biāo)簽段用于訓(xùn)練集中(這里指yes、no或sil,因?yàn)樗鼈儗?duì)于標(biāo)簽和HMMK型使用了相同的名字,當(dāng)然這不是強(qiáng)制的。)這里hmm_ye謝應(yīng)的當(dāng)然是yes了,還記得嘛,我們很辛苦做的標(biāo)簽?zāi)兀?dāng)然如果你錯(cuò)寫成no了,就會(huì)按照no標(biāo)簽所指定的語(yǔ)音參數(shù)來(lái)初始化hmm_yesT,很影響訓(xùn)I練;- L后寫上lab標(biāo)簽文件所在文件夾,即label_dir是存儲(chǔ)相關(guān)訓(xùn)練集的標(biāo)簽文件(.lab)的目錄(這里是data/train/lab/)。nameofhmm1要進(jìn)行初始化的HMMI型的名稱(這里指ye

31、s、no、sil)這個(gè)過程對(duì)每個(gè)模型(hmm_yes,hmm_no,hmm_sil)重復(fù)執(zhí)行。具體使用的時(shí)候要根據(jù)自己的實(shí)驗(yàn)情況將上述字段替換成實(shí)際的目錄和文件名。說明:由HInit輸出的HMM模型文件和輸入原型具有相同的名字。根據(jù)上面的解釋可以看到,要執(zhí)行HInit命令來(lái)初始化模型,我們要做三件事:1 .創(chuàng)建trainlist.txt文件在test/下新建trainlist.txt文件,內(nèi)容為:data/train/mfcc/yes_01.mfccdata/train/mfcc/yes_02.mfccdata/train/mfcc/yes_03.mfccdata/train/mfcc/yes

32、_04.mfccdata/train/mfcc/yes_05.mfccdata/train/mfcc/no_01.mfccdata/train/mfcc/no_02.mfccdata/train/mfcc/no_03.mfccdata/train/mfcc/no_04.mfccdata/train/mfcc/no_05.mfcc2 .準(zhǔn)備一個(gè)文件夾hmm0作為初始化輸出目錄。在model/下新建hmm0文件夾(準(zhǔn)備工作中已經(jīng)創(chuàng)建)。3 .分別執(zhí)行如下命令對(duì)三個(gè)hmm原型進(jìn)行初始化:Hinit-A-D-T1-Stest/trainlist.txt-Mmodel/hmm0-Hmodel/proto

33、/hmm_yes-lyes-Ldata/train/labyesHinit-A-D-T1-Stest/trainlist.txt-Mmodel/hmm0-Hmodel/proto/hmm_no-lno-Ldata/train/labnoHinit-A-D-T1-Stest/trainlist.txt-Mmodel/hmm0-Hmodel/proto/hmm_sil-lsil-Ldata/train/labsil命令行顯示如下:F:dialecthtkHTKworkYesNo>Hinit-A-D-T1-Stest/trainlist.txt-Mmodel/hmm0-Hmodel/proto

34、/hmm_no-lno-Ldata/train/labnoHinit-A-D-T1-Stest/trainlist.txt-Mmodel/hmm0-Hmodel/proto/hmm_no-lno-Ldata/train/labnoNoHTKConfigurationParametersSetnitialisingHMMno.一States:2345(width)Mixess1:1111(39)NumUsing:0000ParmKind:MFCC_D_A_0Numberofowners=1SegLab:nomaxIter:20epsilon:0.000100minSeg:3Updating:Me

35、ansVariancesMixWeights/DProbsTransProbs-systemisPLAIN5ObservationSequencesLoadedStartingEstimationProcessteration1:AverageLogP=-2423.35156teration2:AverageLogP=-2344.08716Change=79.26445teration3:AverageLogP=-2336.55200Change=7.53520teration4:AverageLogP=-2335.74146Change=0.81060teration5:AverageLog

36、P=-2335.31958Change=0.42192teration6:AverageLogP=-2335.31958Change=0.00005Estimationconvergedatiteration7Outputwrittentodirectorymodel/hmm0NoHTKConfigurationParametersSetF:dialecthtkHTKworkYesNo>Hinit-A-D-T1-Stest/trainlist.txt-Mmodel/hmm0-Hmodel/proto/hmm_yes-lyes-Ldata/train/labyesHinit-A-D-T1-

37、Stest/trainlist.txt-Mmodel/hmm0-Hmodel/proto/hmm_yes-lyes-Ldata/train/labyesNoHTKConfigurationParametersSetnitialisingHMMyes.一States:2345(width)Mixess1:1111(39)NumUsing:0000ParmKind:MFCC_D_A_0Numberofowners=1SegLab:yesmaxIter:20epsilon:0.000100minSeg:3Updating:MeansVariancesMixWeights/DProbsTransPro

38、bs-systemisPLAIN5ObservationSequencesLoadedStartingEstimationProcessteration1:AverageLogP=-3840.66357teration2:AverageLogP=-3785.84644Change=54.81709teration3:AverageLogP=-3783.84375Change=2.00269teration4:AverageLogP=-3783.55591Change=0.28789teration5:AverageLogP=-3783.55591Change=0.00005Estimation

39、convergedatiteration6Outputwrittentodirectorymodel/hmm0NoHTKConfigurationParametersSetF:dialecthtkHTKworkYesNo>Hinit-A-D-T1-Stest/trainlist.txt-Mmodel/hmm0-Hmodel/proto/hmm_sil-lsil-Ldata/train/labsilHinit-A-D-T1-Stest/trainlist.txt-Mmodel/hmm0-Hmodel/proto/hmm_sil-lsl-Ldata/train/labsilNoHTKConf

40、igurationParametersSetnitialisingHMMsil.States:2345(width)Mixess1:1111(39)NumUsing:0000ParmKind:MFCCDA0Numberofowners=1SegLab:silmaxIter:20epsilon:0.000100minSeg:3Updating:MeansVariancesMixWeights/DProbsTransProbs-systemisPLAINObservationSequencesLoadedStartingEstimationProcessteration1:AverageLogP=

41、-1884.75818teration2:AverageLogP=-1831.56348Change=53.19470teration3:AverageLogP=-1827.01855Change=4.54492teration4:AverageLogP=-1808.18774Change=18.83086teration5:AverageLogP=-1785.25684Change=22.93091teration6:AverageLogP=-1781.88904Change=3.36777teration7:AverageLogP=-1781.35974Change=0.52927tera

42、tion8:AverageLogP=-1781.07556Change=0.28416teration9:AverageLogP=-1781.00781Change=0.06775teration10:AverageLogP=-1780.98633Change=0.02148teration11:AverageLogP=-1780.98633Change=0.00000Estimationconvergedatiteration12Outputwrittentodirectorymodel/hmm0NoHTKConfigurationParametersSetF:dialecthtkHTKwo

43、rkYesNo>這樣就實(shí)現(xiàn)了分別對(duì)三個(gè)模型hmm_yes,hmm_no,hmm_sil進(jìn)行初始化。初始化成功后,初始化了的三個(gè)模型便被保存在了hmm0文件夾中:其實(shí)到這里,初始化已經(jīng)完成了,由于后面需要文件vFloors來(lái)又tHMM進(jìn)行訓(xùn)練,所以還要使用Hcompv來(lái)進(jìn)行一次訓(xùn)練,以得到此文件。HCompvHCompv工具用來(lái)對(duì)模型進(jìn)行平坦初始化。HMM模型的每個(gè)狀態(tài)給定相同的平均向量和變化向量:在整個(gè)訓(xùn)練集上全局計(jì)算而得。一般初始化命令行形式如下:HCompvA-DT1Strainlist.txtMmodel/hmm0flatHmodel/proto/hmmfilef0.01nameo

44、fhmm我們來(lái)解釋一下:nameofhmm,hmm見HInit中的解釋。model/hmm0flat:HMMI型輸出目錄,與HInit必須保持不同,避免覆蓋。說明:label選項(xiàng)也可以使用。這種情況下,對(duì)全局平均和變化向量的估值就僅基于訓(xùn)練集的相應(yīng)的標(biāo)簽部分。我們不使用HCompv來(lái)初始化我們的模型(已經(jīng)使用了HInit)。盡管它也輸出了初始化后的HMM模型,我們只使用與初始化模型一起輸出一個(gè)名稱為vFloors的有趣的文件,它包含乘以因子的全局變化向量(見列表4)。這個(gè)因子可通過-f選項(xiàng)來(lái)設(shè)置(這里是0.01)??勺兓缀晡募Floors如下所示:1-工-1-5341-51G?B»

45、;=TO-1'U'14iSklbrj11111,'由varfloorl二二二£91. 993330e-00ll2.52O051.e-OQiL2.24G2l6e-0Jl4.LLiABLeOOl3.14OG92t-OOL2. 3.靖OMTe-UU3.5S5462E-0013l5L291Ce-0D_三,能"MQeTM3. tjy490De-001d.2314£.&r0U12:25?Ot0019L3197ULeJD39.24b?71c-0031.j,1,55to43e-D2LaO0S8e-OO22. OC093Se-0022.1T10220

46、021.637317e-0021.51200ee-OD2k674SO.1G-0029.0Ltl4Be-LC31.34?&e9e-0031.4H490&e-C03L.4a529teJ032.26'SiJe-003Z*3D134Be-00S2.U7791e-OOS3L10012-003SL5L3490e-OD31箱5芯丸7皖3. 4i60a2e-OO32.061OT7OOS3.D315S5e-003L.2S3t?7e<1D31DC9i®,l存儲(chǔ)在varFloorl中的值(稱作可變基底宏),在后面訓(xùn)練過程中用作估計(jì)的變化向量的基底。在訓(xùn)練迭代過程中,與特定HM

47、M模型狀態(tài)相關(guān)聯(lián)的訓(xùn)練幀數(shù)可能很低。該狀態(tài)的估計(jì)變化值會(huì)很小(如果只有一個(gè)可用的訓(xùn)練幀的話,變化甚至為空null)。這種情況下,可用基底來(lái)替代,避免變化值趨于極?。ㄉ踔廉a(chǎn)生計(jì)算錯(cuò)誤)。這里,我們將對(duì)HMM原型之一使用HCompv一次,來(lái)計(jì)算上述varFloorl宏。相應(yīng)的vF100rs文件輸出到目錄model/hmmOflat/。根據(jù)上面的解釋,我們知道,使用Hcompv命令彳4到vFloors文件我們需要做兩件事:1 .創(chuàng)建HMM模型輸出目錄model/hmmOflat(準(zhǔn)備工作中已經(jīng)創(chuàng)建)。2 .使用如下命令,執(zhí)行初始化。HCompv-A-D-T1-Stest/trainlist.txt-

48、Mmodelhmm0hmm1-Hmodel/proto/hmm_yes-f0.01yesBH匚indDW5systennJ2cmd.exeERHOH*201?JHCompV"VariaocoflooihFATAiLERROR-Tei-ninjitinHCnnpvF:1sMiialcGtMhtkMlMworlkWejaNo?HCDEi。HA-D-T1Tlut.txtHnodclMinn0xhffiiril-HmodeVpi-aco6=f。01y”IICewA-D-T1-StBst/tr-Aioliist.1stMffMadnIHa-fR.HIwaNipHTKCumfigiupatiar

49、ikFainaneSetCaulacIngFlxodUai"iAfiiCCiHHMIPrvtuCjjiw:yuuL科h*l:Hnn»NkinStreams;1UpdatIngrflean:HuTa.rEtDlretifc£nodlrJlMvimldSJirnriilll!y(Ispeechfrarie心仁11皿1屯£*壯UpdatIn3iHMMOiitpint*rritt«riitpdirc-rtoi-ymdrUnrfInornnicrosnutputtnfi1-cmodelhmmRzhrtnlZwFlonrsNoHlHCunfIgiurdti

50、DinP&tMHetE踴SetP二MlUlvvCXhLkxHTItXULkFN>.臉澗排食輸入法半;讀者可能有注意到,圖中命令的輸出目錄為hmml,這是因?yàn)槲覍?duì)Hmm三個(gè)原型都進(jìn)行了一次Hcompv來(lái)觀察生成的初始化文件。放在不同文件夾下避免覆蓋。生成的三個(gè)vFloors文件是完全一致的。之后我手動(dòng)將vF100rs文件移動(dòng)到model/hmm0flat下,并清空hmm1,hmm2,hmm3文件夾,待后續(xù)步驟使用。讀者僅需按照我上面所述的兩個(gè)步驟進(jìn)行操作即可。六.模型訓(xùn)練初始化成功后,就可以進(jìn)行訓(xùn)練了,訓(xùn)練過程的描述如下圖:戶68好中一*hutuhsation-*_:西小48個(gè)廣學(xué)

51、比icOProceduneTtst/.工_i什1Falx由青曲!p江格E由口FT圖4完整的訓(xùn)練過程模型參數(shù)的估計(jì)采用HRest工具,調(diào)用該工具完成一輪參數(shù)的重新估計(jì),具體命令行如下:HRest-A-D-T1-Strain1ist.txt-Mmodel/hmmi-HvFloors-Hmodel/hmmi-1/hmmlabel-Llabel.dirnameofhmm我們來(lái)解釋一下:trainlist.txt文件包含所有用于訓(xùn)練的mfcc特征文件列表model/hmmiHMM1型的輸出目錄,i從1開始,每次迭代加1vFloors由HComp性成的最小方差值的文件hmmfile是名字為nameofhm

52、m勺HM限型文件,放在model/hmmi-1(hmmi-1代表上一次迭代使用的輸出目錄,作為這一次迭代使用的輸入目錄,每次迭代都會(huì)生成模型文件和vFloors)abel訓(xùn)練語(yǔ)料中的標(biāo)簽(yes,no,sil)abel_dir是存放標(biāo)注文件(.lab)的目錄nameofhmm要訓(xùn)練的HM限型的名字(yes,no,sil)對(duì)于每個(gè)要訓(xùn)練的HMM程序可輸出數(shù)據(jù)的似然值。change量度標(biāo)示收斂性。就該停止了。每個(gè)HMMVFlOOfBr.uruoa ownTriBOfCo即 IBrrmn*HR«9t模型,整個(gè)訓(xùn)練過程需要迭代多次,通常 5-10輪次。每次迭代時(shí),HRest每次, HRest

53、迭代(即當(dāng)前再估計(jì)迭代中的迭代)顯示在屏幕上,通過一旦這個(gè)量度值不再?gòu)囊粋€(gè)HRest迭代到下個(gè)迭代減少(絕對(duì)值),過程都要重復(fù)這個(gè)過程N(yùn)次,在我們的例子中,2或3次再估計(jì)迭代就足夠了。最終的單詞模型存儲(chǔ)在:hmm3hmm_yes, hmm2hmm_no, hmm1hmm_sil根據(jù)上面的解釋,我們知道,使用 HRest命令得到最終的HMM模型我們需要做兩件事:1 .創(chuàng)建每次迭代使用的輸出目錄:在 model下創(chuàng)建文件夾hmm1 , hmm2 , hmm32 .使用如下命令進(jìn)行訓(xùn)練HRest -A -D -T 1 -S test/trainlist.txt -M model/hmm1 -H mo

54、del/hmm0flat/vF100rs -H model/hmm0/hmm_yes -l yes -L data/train/lab yes回車,實(shí)現(xiàn)對(duì)模型 yes 的第一次迭代優(yōu)化,使用如下命令進(jìn)行第二次:HRest -A -D -T 1 -S test/trainlist.txt -M model/hmm2 -H model/hmm0flat/vF100rs -Hmodel/hmm1/hmm_yes-lyes-Ldata/train/labyes回車,實(shí)現(xiàn)對(duì)模型yes的第二次迭代優(yōu)化,使用如下命令進(jìn)行第三次:HRest-A-D-T1-Stest/trainlist.txt-Mmodel/

55、hmm3-Hmodel/hmm0flat/vF100rs-Hmode1/hmm2/hmm_yes-lyes-Ldata/train/labyes回車。這樣我們就完成了對(duì)模型hmm_yes的訓(xùn)I練,并保存在了hmm3文件夾中。對(duì)模型hmm_no和hmm_sil的訓(xùn)練同上,只需替換命令中yes的部分即可。如上所述命令是近乎每一個(gè)使用了vFloors文件的教程中都使用的。然而我在實(shí)際實(shí)驗(yàn)過程卻無(wú)法按此命令順利執(zhí)行。報(bào)錯(cuò)如下:查看htk-error-booK:ernopm7032Optionmismatch'AllHMMsinaparticularsetmusthaveconsistentoptions.查看htk源碼:/*CheckOptions:checkthatoptionsaresetingivenHMMset*/staticRetur

溫馨提示

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

評(píng)論

0/150

提交評(píng)論