1. 程式人生 > >基於HTK的連續語音識別系統搭建學習筆記(一)

基於HTK的連續語音識別系統搭建學習筆記(一)

該系統能夠識別連續說出的數字串和若干組姓名。建模是針對子詞(sub-word, eg. 音素),具有一定的可擴充性。當加入一個新名字時,只需修改發音字典和任務語法即可。模型為連續混合高斯輸出,運用語音決策樹聚類形成的繫結狀態式三音素。

1.資料準備

需要錄製訓練資料和測試資料。為進行校準,還需要資料的標註文字。這裡用任務語法(task grammar)產生真值文字(ground truth)。為了處理訓練資料,需要定義一個語音集合和一個字典用以涵蓋訓練和測試資料中涉及的單詞。

[step 1]任務語法定義

建立檔案:gram

建立位置:根目錄下

檔案內容:


上面的語法是高層表示,必須通過HParse轉成HTK可用的底層表示。

執行:

HParse gram wdnet

生成:wdnet

生成位置:根目錄

生成內容:


[step 2]字典定義

建立資料夾:dict lists

建立檔案:BEEP語音字典(網上可以下載)beep beep.ded(空) names(手工製作的專有人名的發音,包括SEND-START,SEND-END) name.ded

放入位置:dict

建立檔案:global.ded

建立位置:根目錄下

檔案內容:


此例中利用BEEP語音字典,除去其中的重音符,並在每個發音後加入sp(short pause,小停頓)。如果有啞音標誌,就用MP命令把sil和sp合併成sil。

建立檔案:wlist

建立位置:lists

建立內容:


執行:

HDMan -m -w .\lists\wlist -g global.ded -n .\lists\monophones1 -l dlog .\dict\dict1 .\dict\beep .\dict\names

生成檔案:monophones1 (用於用到的音素列表)

生成位置:lists 

生成檔案:dlog(引數檔案記錄過程)

生成位置:根目錄

生成檔案:dict1

生成位置:dict

注1 :實際上,這裡應該手工修改 dict1 ,為SENT-END 和SENT-START 加上無輸出標誌,
為了展示隊後面步驟地影響,這裡故意不新增。


注:HDMan工具的具體詳細解釋以及使用可以參看HTK BOOK P262 

[step 3]錄製語音資料

建立資料夾:labels

HSGen工具可以生成符合task grammar的句子,用來指導錄音(HTK BOOK裡叫sentence prompts):

執行:

HSGen -l -n 140 wdnet.\dict\dict1>.\labels\trainprompts

執行:

HSGen -l -n 15 wdnet .\dict\dict1>.\labels\testprompts

根據上述指令檔案,錄製相應的140個訓練用語音資料檔案和15個測試用語音資料檔案。

生成檔案:trainprompts testprompts

一個錄製的例子如下: 
HSLab .\data\Train\speech\S0001 

注:隨本文的壓縮包沒有包括這些資料檔案,但包括了它們對應的特徵檔案,所以對整個實驗沒有什麼影響。

[step 4]標註資料,得到真值檔案

建立資料夾:scripts labels 

建立檔案:prompts2mlf(HTK scripts目錄下自帶)

建立位置:scripts

Perl指令碼prompts2mlf(在scripts目錄下HTK自帶)可以把錄音文字截成單詞級真值檔案。

執行:

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

perl .\scripts\prompts2mlf.\labels\testwords.mlf .\labels\testprompts

注:要在每個lab路徑之前加上“*/”

生成檔案:trainwords.mlf testwords.mlf

生成位置:labels

標註編輯器HLEd可把單詞級真值文字(wordlevel MLF)轉成音素級真值文字(phonelevel MLF):

建立檔案:mkphones0.led

建立位置:根目錄

建立內容:


EX命令表示按照字典dict1進行展開,IS表示在每個話語的前後插入標誌,DE一行表示phones0.mlf中單詞間不用sp隔開。

執行:

HLEd -l * -d .\dict\dict1 -i .\labels\phones0.mlf mkphones0.led .\labels\trainwords.mlf

生成檔案:phones0.mlf

生成位置:labels

注:HLEd工具的詳細講解可以參考HTK BOOK P284