(二)雜項准備


對於想盡快上手的新人來說,這部分內容是又累又沒勁,可是又不得不做,沒辦法……硬着頭皮上吧。

 

1、編寫grammer,生成wordnet

(1)手動編輯grammer文件,並置於config目錄下,內容如下:

$color = RED | BLUE | YELLOW;
(SENT-START ($color) SENT-END)

(2)生成wordnet:

HParse ./config/grammer ./config/wordnet

此時,config目錄會生成wordnet;

 

2、生成字典:

(1)手動編輯wordlist文件,並置於lists目錄下,wordlist內容如下(內容是經過字典排序的,請不要改動):

BLUE
RED
SENT-END
SENT-START
YELLOW

(2)手動編輯global.ded文件,並置於config目錄下,global.ded內容如下

AS sp
RS cmu 
MP sil sil sp

(3)生成monophones和dict_color:

字典文件的“beep”和“otherDict"置於dict目錄下,然后執行:

HDMan -m -w ./lists/wordlist -n ./lists/monophones -g ./config/global.ded ./dict/dict_color ./dict/beep ./dict/otherDict

此時,lists目錄會生成monophones;dict目錄里會生成dict_color;

 

3、”wav文件清單“轉"mlf文件清單:

(1)手動編輯labels目錄下“trainprompts”文件(還記得“(一)准備訓練語音文件”中的那份清單嗎?),具體方式為:

BLUE    ===》    s01 SENT-START BLUE SENT-END    

在原“單詞”(此處為"BLUE")

前綴 "SENT-START",后綴“SENT-END”,並在行首追加錄音文件的文件名"s01"(s01.wav除去擴展名)

修改結果如下如下:

s01 SENT-START BLUE SENT-END 
s02 SENT-START RED SENT-END 
s03 SENT-START BLUE SENT-END 
s04 SENT-START BLUE SENT-END 
s05 SENT-START BLUE SENT-END 
s06 SENT-START YELLOW SENT-END 
s07 SENT-START RED SENT-END 
s08 SENT-START BLUE SENT-END 
s09 SENT-START BLUE SENT-END 
s10 SENT-START RED SENT-END 
s11 SENT-START YELLOW SENT-END 
(……省略!省略!節省版面!……)
s49 SENT-START BLUE SENT-END 
s50 SENT-START YELLOW SENT-END 

 (2)”wav文件清單“轉"mlf文件清單“:

使用腳本文件prompts2mlf

perl ./scripts/prompts2mlf ./labels/trainwords.mlf ./labels/trainprompts

此時,labels目錄會生成trainwords.mlf;

 

4、生成phones_color.led文件:

(1)手動編輯“mkphones_color.led”文件,並置於config目錄下,內容如下

EX
IS sil sil
DE sp

(2)生成phones_color.led文件:

HLEd -l '*' -d ./dict/dict_color -i ./labels/phones_color.mlf ./config/mkphones_color.led ./labels/trainwords.mlf
此時,labels目錄會生成phones_color.mlf;

 

5、wav文件轉換成mlf文件:

(1)手動編輯“轉換清單”codetrain.scp,並置於config目錄下,內容如下(只能做參考噢,至少紅色字體部分肯定是不一樣的)

/home/ansersion/htk_color/data/train/speech/s01.wav    /home/ansersion/htk_color/data/train/mfc/s01.mfc
/home/ansersion/htk_color/data/train/speech/s02.wav    /home/ansersion/htk_color/data/train/mfc/s02.mfc
/home/ansersion/htk_color/data/train/speech/s03.wav    /home/ansersion/htk_color/data/train/mfc/s03.mfc
/home/ansersion/htk_color/data/train/speech/s04.wav    /home/ansersion/htk_color/data/train/mfc/s04.mfc
/home/ansersion/htk_color/data/train/speech/s05.wav    /home/ansersion/htk_color/data/train/mfc/s05.mfc
/home/ansersion/htk_color/data/train/speech/s06.wav    /home/ansersion/htk_color/data/train/mfc/s06.mfc
/home/ansersion/htk_color/data/train/speech/s07.wav    /home/ansersion/htk_color/data/train/mfc/s07.mfc
/home/ansersion/htk_color/data/train/speech/s08.wav    /home/ansersion/htk_color/data/train/mfc/s08.mfc
/home/ansersion/htk_color/data/train/speech/s09.wav    /home/ansersion/htk_color/data/train/mfc/s09.mfc
/home/ansersion/htk_color/data/train/speech/s10.wav    /home/ansersion/htk_color/data/train/mfc/s10.mfc
/home/ansersion/htk_color/data/train/speech/s11.wav    /home/ansersion/htk_color/data/train/mfc/s11.mfc
(……省略!省略!節省版面!……)/home/ansersion/htk_color/data/train/speech/s49.wav    /home/ansersion/htk_color/data/train/mfc/s49.mfc
/home/ansersion/htk_color/data/train/speech/s50.wav    /home/ansersion/htk_color/data/train/mfc/s50.mfc

(2)手動編輯config_HCopy,並置於config目錄下,內容如下

# Coding parameters
TARGETKIND = MFCC_0_D_A
TARGETRATE = 100000.0
SAVECOMPRESSED = T
SAVEWITHCRC = T
WINDOWSIZE = 250000.0
USEHAMMING = T
PREEMCOEF = 0.97
NUMCHANS = 26
CEPLIFTER = 22
NUMCEPS = 12
ENORMALISE = F
SOURCEFORMAT = WAV

(3)wav文件轉換成mlf文件:

HCopy -T 1 -C ./config/config_HCopy -S ./config/codetrain.scp

此后,data/train/mfc目錄會生成s01.mfc;s02.mfc……s49.mfc;s50.mfc;

 

6、生成初始hmm——“hmm0”:

(1)手動編輯proto,並置於config目錄下,內容如下

~o <VecSize> 39 <MFCC_0_D_A>
~h "proto"
<BeginHMM>
  <NumStates> 5
  <State> 2
    <Mean> 39
      0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
    <Variance> 39
      1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
 <State> 3
    <Mean> 39
      0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
    <Variance> 39
      1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
 <State> 4
    <Mean> 39
      0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 
    <Variance> 39
      1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0
 <TransP> 5
  0.0 1.0 0.0 0.0 0.0
  0.0 0.6 0.4 0.0 0.0
  0.0 0.0 0.6 0.4 0.0
  0.0 0.0 0.0 0.7 0.3
  0.0 0.0 0.0 0.0 0.0
<EndHMM>

(2)手動編輯train.scp,並置於config目錄下,內容如下(其實就是codetrain.scp的“右半邊內容”):

/home/ansersion/htk_color/data/train/mfc/s01.mfc
/home/ansersion/htk_color/data/train/mfc/s02.mfc
/home/ansersion/htk_color/data/train/mfc/s03.mfc
/home/ansersion/htk_color/data/train/mfc/s04.mfc
/home/ansersion/htk_color/data/train/mfc/s05.mfc
/home/ansersion/htk_color/data/train/mfc/s06.mfc
/home/ansersion/htk_color/data/train/mfc/s07.mfc
/home/ansersion/htk_color/data/train/mfc/s08.mfc
/home/ansersion/htk_color/data/train/mfc/s09.mfc
/home/ansersion/htk_color/data/train/mfc/s10.mfc
/home/ansersion/htk_color/data/train/mfc/s11.mfc
(……省略!省略!節省版面!……)/home/ansersion/htk_color/data/train/mfc/s49.mfc
/home/ansersion/htk_color/data/train/mfc/s50.mfc

(3)手動編輯config_color文件,並置於config目錄下,內容變為(即”config_HCopy“文件刪除“SOURCEFORMAT = WAV”那行):

# Coding parameters
TARGETKIND = MFCC_0_D_A
TARGETRATE = 100000.0
SAVECOMPRESSED = T
SAVEWITHCRC = T
WINDOWSIZE = 250000.0
USEHAMMING = T
PREEMCOEF = 0.97
NUMCHANS = 26
CEPLIFTER = 22
NUMCEPS = 12
ENORMALISE = F

(4)生成初始hmm0的內容:

HCompV -C ./config/config_color -f 0.01 -m -S ./config/train.scp -M ./hmm0 ./config/proto

此時,hmm0目錄下會生成proto和vFloors;

 

7、生成macros、hmmdefs和monoOffSP:

(1)生成macros:

perl scripts/makeMacros hmm0/vFloors hmm0/macros

此時,hmm0目錄下會生成macros;

(2)生成hmmdefs:

perl scripts/makeHmmdefs hmm0/proto lists/monophones hmm0/hmmdefs

此時,hmm0目錄下會生成hmmdefs;

(3)生成monoOffSP:

perl scripts/makeMonoOffsp ./lists/monophones ./lists/monoOffSP

此時,lists目錄下會生成monoOffSP;

 

好了,終於可以去訓練hmm模型了。

 

HTK Book涉及內容:

Chapter 3: 3.1.1 Step 1 - the Task Grammar
Chapter 3: 3.1.2 Step 2 - the Dictionary
Chapter 3: 3.1.4 Step 4 - Creating the Transcription Files
Chapter 3: 3.1.5 Step 5 - Coding the Data
Chapter 3: 3.2.1 Step 6 - Creating Flat Start Monophones


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM