Htk解碼器網絡
之前看過一部分wfst解碼器的代碼,跟pocketsphinx的解碼器部分結構上面不太一樣,所以閱讀了一下htk的解碼器部分的說明,以期望對pocketsphinx的代碼閱讀有幫助。
參考資料:
HTK book http://htk.eng.cam.ac.uk/download.shtml
解碼器網絡
一、 解碼器網絡的概況
網絡分爲兩種:word網絡和phone網絡。
l word網絡有兩種形式:一種是由語法文件(Task Grammer)構建的網絡;還有一種是由語言模型(word loop)構建的網絡。網絡的描述形式是SLF(Standard Lattice Format)格式的文件。
l 根據詞典將詞級別的網絡可以擴展爲phone級別的網絡。
具體過程參考下圖:
上圖中相關命令的含義如下:
HParse:將語法樹文件轉化爲SLF
HBuild:將二元語言模型(bigramlanguage model)轉化爲SLF,或者將word網絡分解成子網絡
HSGen:根據SLF文件隨機生成一些結果,用於評估構建網絡的複雜度
HDMan:產生詞典文件
HLStats:產生語言模型
HDict:網絡加載詞典文件
HLM:網絡加載語言模型
HNet:將詞典、HMM set和word網絡轉化爲HMM的網絡
HRec:加載HMM網絡來識別語音輸入
HVite:集合了HNet和HRec的功能
二、 什麼是解碼器網絡
雖然也是由節點node和邊arc構成的,但是和wfst網絡還是有很大的不同,等以後涉及wfst網絡的時候再做詳細的類比。對於word網絡的SLF,節點表示word,邊表示word之間的轉移概率。
簡單的word網絡如下:
它對應的SLF文件如下:
詳細含義和規則參考HTK book的Chapter 20。
爲了減少邊的數量,可以增加空節點!NULL,如下圖所示
三、 Word級別網絡(SLF文件)的是怎麼生成的
(一) 根據語法文件產生
1. 使用HParse命令,語法規則:
| |
或關係 |
[ ] |
裏面是可選項 |
{ } |
0或者多次重複 |
<> |
1或者多次重複 |
<<>> |
上下文有關的循環 |
2. 使用HBuild命令
根據主網絡(a main lattice) 和子網絡集合(aset of sub-lattices)生成word網絡。相當於網絡中的一個節點代表一個子網絡。
(二) 根據語言模型產生
使用HBuild命令讀取二元的語言模型生成,結構圖如下:
四、 詞典怎麼產生
(一) 詞典的類型
1. Phone級別的詞典
2. word-internal contextdependencies級別的詞典
HNet命令會自動將phone級別的字典擴展爲該類型
也可以自己將dict擴展成這種類型
3. Cross-word dependencies級別的詞典
只能由HNet產生
(二) 詞典的生成
使用HDMan命令生成詞典,可以有多個字典的輸入文件
五、 Word網絡和詞典擴展爲hmm網絡
輸入:詞典、word網絡、HMM set
輸出:HMM網絡
命令:HNet
(一) 主要步驟
根據發音詞典的音素決定聲學模型的名字,以及是否需要根據上下文進行擴展。分爲三種情況:
(a) Context Free
上下文確定的時候該音素不變,比如sp這個三音素(在每個詞發音的結尾會加入該音素)。
(b) Context Independent
也是上下文確定的時候不變,比如sil這個三音素(相當於靜音)。sil和sp的區別在於sil可能會出現在其他的三音素中,但是sp不會,比如sil-aa+r。
(c) Context Dependent
上下文有關,三音素的形式,取決於hmm set裏面有沒有這種三音素的定義
2. Determination of network type
如果詞典裏面的所有phone都出現在hmm set裏面的話,無需進行phone的擴展,直接在word網絡中按照詞典的發音展開即可。
如果不滿足上面條件,將詞典的phone按照internal context expansion展開,判斷展開以後的音素是否都出現在hmm set中。
如果不滿足上面條件,將詞典的phone按照full cross-word context expansion展開,判斷展開以後的音素是否都出現在hmm set中。
ALLOWCXTEXP,ALLOWXWRDEXP, FORCECXTEXP這三個參數決定進行何種級別的展開。
Word網絡裏面的word節點前面擴展該word的發音,根據上下文擴展的話,初始和最終的三音素可能需要複製成多個節點用於對應於前一個word或者後一個word。
如下圖中:t的輸出but有三個出邊,所以需要將t這個節點複製爲三個t節點,每一個t節點後面都跟着but節點。
4. Linking of models to network nodes
將單音素根據上下文生成對應的三音素
對應於: