語境偏移如何解決?專有領域端到端ASR之路(三)
前兩篇文章都是從Encoder-Decoder的模型入手,這篇文章我們介紹一個結合CTC與WFST (weighted finite-state transducers) 的工作:《EESEN: END-TO-END SPEECH RECOGNITION USING DEEP RNN MODELS AND WFST-BASED DECODING》。
在這個工作中,聲學模型的建模是利用RNN去預測上下文無關的音素或者字符,然后使用CTC去對齊語音和label。這篇文章與眾不同的一個點是基于WFST提出了一種通用的解碼方法,可以在CTC解碼的時候融入詞典和語言模型。在這個方法中,CTC labels、詞典、以及語言模型被編碼到一個WFST中,然后合成一個綜合的搜索圖。這種基于WFST的方式可以很方便地處理CTC里的blank標簽和進行beam search。
在這篇博文中,我們不再敘述關于RNN和CTC的內容。主要關注如何利用WFST進行解碼的模塊。一個WFST就是一個有限狀態接收器(finite-state acceptor, FSA),每一個轉換狀態都有一個輸入符號,一個輸出符號,和一個權重。
上圖是一個語言模型WFST的示意圖。弧上的權重是當給定了前面的詞語,發射得到下一個詞的概率。節點0是開始節點,節點4是結束節點。WFST中的一條路徑包含一系列輸入符號到輸出符號的發射序列。我們的解碼方法將CTC labels,詞典(lexicons),以及語言模型表示成分別的WFST,然后利用高度優化的FST庫,比如OpenFST,我們能有效地將這些WFST融合成一個單獨的搜索圖。下面我們開始介紹,如何開始構建單個的WFST。
語法(Grammar). 一個語法WFST編碼了語言允許的單詞序列。上圖是一個精簡的語言模型。它有兩條序列:“how are you”和“how is it”。WFST的基本符號單位是word,弧上的權重是語言模型的概率。利用這種WFST形式的表示,CTC解碼原則上可以利用任何能被轉換成WFST的語言模型。按照Kaldi中的表示方式,這個語言模型的WFST被表示為G。
詞典(lexicon). 一個詞典WFST編碼了從詞典單元序列到單詞的映射。根據RNN的對應的label的建模單元,這個詞典有兩種對應的情況。如果label是音素,那么這個詞典是與傳統的hybrid模型相同的標準詞典。如果label是character,那么這個詞典簡單地包含了每個單詞的拼寫。這兩種情況的區別在于拼寫詞典能夠較為容易地拓展到包含任何OOV(詞匯表之外)的單詞。相反,拓展音素詞典不是那么直觀,它依賴于一些grapheme-to-phoneme的方法或者模型,并且容易產生錯誤。這個詞典WFST被表示成L,下圖展示了兩個詞典構建L的例子:
第一個例子展示了音素詞典的構建,假如音素詞典的條目為“is IH Z”,下面的一個例子展示了拼寫詞典的構建,“is i s”。對于拼寫詞典,有另一個復雜的問題需要? ? ? ? ?處理,當以character為CTC的標簽時,我們通常在兩個word間插入一個額外的空格(space)去建模原始轉寫之前的單詞間隔。在解碼的時候,我們允許空格選? ? ? ? ?擇性地出現在一個單詞的開頭和結尾。這種情況能夠很輕易地被WFST處理。
除了英文之外,我們這里也展示一個中文詞典的條目。
3. 令牌(token). 第三個WFST將幀級別的CTC標簽序列映射到單個詞典單元(音素或者character)上。對一個詞典單元,token級的WFST被用來歸入所有可能? ? ? ? 的幀級的標簽序列。因此,這個WFST允許空白標簽?的出現,以及任何非空白標簽的重復。舉例來說,在輸入5幀之后,RNN模型可能輸出3種標簽序列:? ? ? ? ? ? ? ? ? ?“AAAAA”,“??AA?”,“?AAA?”。Token wfst將這三個序列映射到一個詞典單元:“A”上。下圖展示了一個音素“IH”的WFST,這個圖中允許空白
4.?搜索圖. 在分別編譯完三個WFST后,我們將它們合成一個全面的搜索圖。首先合成詞典WFST L和語法WFST G,在這個過程中,確定性(determinization)和? ? ? ?最小化(minimization)被使用,這兩個操作是為了壓縮搜索空間和加速解碼。這個合成的WFST LG,然后與token的WFST進行合成,最后生成搜索圖??偟? ? ? ? ? ?FST操作的順序是:S = T о min(det(LоG))。這個搜索圖S編碼了從一個由語音幀對應的CTC標簽序列映射到單詞序列的過程。具體來說,就是首先將語言模? 型中的單詞解析成音素,構成LG圖。然后RNN輸出每幀對應的標簽(音素或者blank),根據這個標簽序列去LG圖中進行搜尋。
當解碼混合DNN模型時,我們需要使用先驗狀態去縮放來自DNN的后驗狀態,這個先驗通常由訓練數據中的強制對齊估計得到的。在解碼由CTC訓練得到的模型時,我們采用一個相似的過程。具體地,我們用最終的RNN模型在整個訓練集上運行了一遍,具有最大后驗的labels被選出來作為幀級的對齊,然后利用這種對齊,我們去估計標簽的先驗。然而,這種方法在我們的實驗中表現得并不好,部分原因是由于利用CTC訓練的模型在softmax層后的輸出表現出高度的巔峰分布(即CTC模型傾向于輸出單個非空的label,因此整個分布會出現很多尖峰),表現在大部分的幀對應的label為blank標簽,而非blank的標簽只出現在很狹窄的一個區域內,這使得先驗分布的估計會被空白幀的數量主導。作為替代,我們從訓練集中的標簽序列里去估計更魯棒的標簽先驗,即從增強后的標簽序列中去計算先驗。假設原始的標簽為:“IH Z”,那么增強后的標簽可能為“? IH ? Z ?”等。通過統計在每幀上的標簽分布數量,我們可以得到標簽的先驗信息。
上面介紹了基于WFST的方法,我們接下來來看一下實驗部分。在進行后驗分布正則之后,這個聲學模型的分數需要被縮小,縮放因子在0.5~0.9之間,最佳的縮放值通過實驗決定。本文的實驗是WSJ上進行的。本文使用的最佳模型是一個基于音素的RNN模型,在eval92測試集上,在使用詞典與語言模型時,這個模型達到了7.87%的WER,當只用詞典時,WER快速升高到了26.92%。下圖展示了本文的Eesen模型與傳統hybrid模型的效果對比。從這個表中,我們可以看到Eesen模型比混合的HMM/DNN模型較差一些。但是在更大的數據集上,比如Switchboard,CTC訓練的模型能獲得比傳統模型更好的效果。
Eesen的一個顯著的優勢是,相較于混合的HMM/DNN模型,解碼速度大大加快了。這種加速來源于狀態數量的大幅減少。從下表的解碼速度可以看出來,Eesen獲取了3.2倍以上的解碼速度加速。并且,在Eesen模型中用到的TLG圖,也明顯小于HMM/DNN中用到的HCLG圖,這也節約了用于存儲模型的磁盤空間。
總得來說,在本文介紹的工作中,我們展示了一個基于RNN和CTC的語音識別模型,在這個模型中,基于WFST的解碼能夠有效地融合詞典和語言模型.
SIS
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。