htk解碼器網絡

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

(一)         主要步驟

1.      Context definition

根據發音詞典的音素決定聲學模型的名字,以及是否需要根據上下文進行擴展。分爲三種情況:

(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這三個參數決定進行何種級別的展開。

3.      Network expansion

Word網絡裏面的word節點前面擴展該word的發音,根據上下文擴展的話,初始和最終的三音素可能需要複製成多個節點用於對應於前一個word或者後一個word。

如下圖中:t的輸出but有三個出邊,所以需要將t這個節點複製爲三個t節點,每一個t節點後面都跟着but節點。

 

4.      Linking of models to network nodes

將單音素根據上下文生成對應的三音素

對應於:

(二)         實例

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章