基於RNN和CTC的語音識別模型,探索語境偏移解決之道

摘要:在本文介紹的工作中,我們展示了一個基於RNN和CTC的語音識別模型,在這個模型中,基於WFST的解碼能夠有效地融合詞典和語言模型.

本文分享自華爲雲社區《語境偏移如何解決?專有領域端到端ASR之路(三)》,原文作者:xiaoye0829 。

這篇文章我們介紹一個結合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。

  • 1、語法(Grammar). 一個語法WFST編碼了語言允許的單詞序列。上圖是一個精簡的語言模型。它有兩條序列:“how are you”和“how is it”。WFST的基本符號單位是word,弧上的權重是語言模型的概率。利用這種WFST形式的表示,CTC解碼原則上可以利用任何能被轉換成WFST的語言模型。按照Kaldi中的表示方式,這個語言模型的WFST被表示爲G。
  • 2、詞典(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,這個圖中允許空白<blank>標籤的出現,以及非空白標籤“IH”的重複出現。我們將這個token的WFST表示成T。

  • 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的解碼能夠有效地融合詞典和語言模型.

 

點擊關注,第一時間瞭解華爲雲新鮮技術~

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