語音識別的快速糾錯模型FastCorrect系列來了!
糾錯是語音識別中的一個重要后處理方法,旨在檢測并糾正語音識別結果中存在的錯誤,從而進一步提升語音識別的準確率。許多糾錯模型采用的是延遲較高的自回歸解碼模型,但是語音識別服務對模型的延遲有著嚴格的要求,在一些實時語音識別場景中(如會議同步語音識別),糾錯模型無法上線應用。為了加速語音識別中的糾錯模型,微軟亞洲研究院的研究員們提出了一種基于編輯對齊(Edit Alignment)的非自回歸糾錯模型——FastCorrect,FastCorrect 在幾乎不損失糾錯能力的情況下,將自回歸模型加速了6-9倍。考慮到語音識別模型往往可以給出多個備選識別結果,研究員們還進一步提出了 FastCorrect 2 來利用這些識別結果相互印證,從而得到了更好的性能。FastCorrect 1和2的相關研究論文已被 NeurIPS 2021 和 EMNLP 2021 收錄。當前,研究員們還在研發 FastCorrect 3,在保證低延遲的情況下,進一步降低語音識別的錯誤率。
語音識別的糾錯實際上是一個文本到文本的任務,模型訓練的輸入為語音識別結果文本,輸出為真實文本。在自然語言處理領域(如機器翻譯和文本編輯),已經有一些非自回歸的快速模型被提出。但初步實驗結果(如圖一)顯示,簡單地將這些模型應用到語音識別的糾錯任務中,并不能取得令人滿意的結果。經過對語音識別的分析,研究員們發現語音識別中的錯誤比較稀疏,通常錯誤的單詞數不到總單詞數的10%,而模型必須精準地找到并修改這些錯誤,同時還要避免修改正確的單詞,這是語音識別的糾錯任務中最大的挑戰。而機器翻譯中非自回歸模型的主要問題是修改了太多原本是正確的單詞,模型修改了原有錯誤的同時又引入了較多新的錯誤,因此無法提升語音識別的精度。
圖一:FastCorrect 和基線方法的錯誤檢測率和錯誤改正率對比
考慮到語音識別的糾錯輸入輸出的對應關系是單調的,所以如果可以在詞的級別對齊輸入和輸出,就可以得到細粒度的錯誤信息:哪些詞是錯誤的,這些錯誤的單詞應該怎樣修改。基于兩個文本序列的編輯距離,研究員們設計了編輯對齊(Edit Alignment)算法(如圖二)。給定輸入(語音識別結果)和輸出(真實文本),第一步是計算兩個文本的編輯距離,然后可以得到數條編輯路徑(Edit Path),路徑中的元素為增加/刪除/替換/不變四種操作之一。為了避免修改正確單詞,包含“不變”操作最多的編輯路徑會被選擇。最終,基于編輯路徑可以得到:對于每個輸入的單詞,哪些輸出的單詞與之對應。如果對應的輸入輸出單詞不同,那么就表明輸入單詞是錯誤單詞。
圖二:編輯對齊(Edit Alignment)算法
基于細粒度的輸入輸出對應關系,研究員們針對性地設計了快速糾錯模型 FastCorrect。模型包含了三個主要部分——編碼器、長度預測器和****(如圖三):
1. 編碼器可以學習輸入文本的特征,這些特征會被長度預測器和****利用。
2. 長度預測器基于編碼器的輸出,預測每個輸入單詞有多少個輸出單詞與之對應,即 Duration。如果輸入單詞 Duration 為0,那么沒有輸出單詞與之對應,它也將被刪除,如果 Duration 大于1,那么有多個輸出單詞與之對應,意味著****需要插入數個單詞。
3. ****除了利用編碼器的輸出之外,還會基于長度預測器的結果,調整輸入文本的長度,使之和輸出文本長度一致。將長度調整一致后,****可以并行地同時解碼出所有單詞。
圖三:非自回歸語音糾錯模型結構
實驗表明(如圖四),在開源學術數據集 AISHELL-1 和微軟內部的產品數據集上,FastCorrect 都取得了跟自回歸模型幾乎相同的糾錯能力。模型的衡量準則為糾錯后的詞錯誤率(Word Error Rate,WER)和相對錯誤率下降(WER Reduction)。相比于自回歸的模型,FastCorrect 的解碼速度可以提升7-8倍。相比于其它非自回歸的基線模型,FastCorrect 取得了更好的糾錯精度。從實驗結果可以看出,FastCorrect 很好地解決了語音識別模型中糾錯模型的高延遲問題。
圖四:在 AISHELL-1 和微軟內部的數據集上,
FastCorrect 和基線方法在詞錯誤率和解碼延遲上的對比。
FastCorrect 已經取得了不錯的性能和較大的加速比,那么還有沒有進一步的提升空間呢?由于語音識別模型往往會在語音模糊不清或者存在同(近)音字的情況下出錯,所以如果糾錯模型能夠得到這方面的信息,那么就可以在很大程度上幫助糾錯模型進行錯誤檢測。
通過分析語音識別模型的輸出,研究員們發現語音識別模型在進行 BeamSearch 解碼的時候,會得到多個相似的結果,這些結果的大部分文本相同,只在有限的幾個位置不同,而這些位置正是語音識別模型不確定的位置,也往往是模型比較容易出錯的位置。通過多個識別結果的相互印證不僅能夠得到語音識別錯誤位置的信息,還能得到正確單詞的讀音信息(例如,從不同的詞 cat、hat、mat 可以推斷出糾錯后的詞大概率會以 /?t/ 這個音結尾)。
為了能夠讓糾錯模型更好地利用多輸入(多個語音識別結果)信息,研究員們對 FastCorrect 的對齊算法和模型結構進行了一系列調整。
首先是對齊算法。考慮到語音模型的多個輸出可能長短不一,如果簡單地通過補零來讓這些輸出擁有同樣的長度,那么會導致每一個對齊的位置,單詞不相同(如圖五),讀音也不相同。這樣的話,模型將很難從“錯位”的輸入中得到錯誤位置和正確單詞讀音的信息。為了解決上述問題,FastCorrect 2 在計算編輯對齊的時候考慮了輸入輸出的讀音相似度,在選擇“不變”操作最多的編輯路徑的基礎上,選擇讀音相似度最高的編輯路徑,并根據讀音相似度來插入“空”單詞。這樣得到的對齊結果在每個位置上的單詞相似度和讀音相似度都很高,可以很大程度上幫助模型進行錯誤檢測(如果一個位置上包含不同的單詞)和估計正確單詞的讀音(如果一個位置上的不同單詞讀音相同)。
圖五:簡單補零和讀音相似度對齊的對比,
可以看出 FastCorrect 2 在每個位置上的單詞一致性更高。
對于模型結構,研究員們也進行了改動,并引入了一個新模塊:選擇器(如圖六)。
1. 在編碼器之前,新引入了一個 PreNet,用來融合每個位置上不同單詞的信息。
2. 長度預測器需要對每個位置上的每一個單詞,預測 Duration。
3. 選擇器則用來選擇一個輸入,這個輸入會被調整(基于 Duration)并被送進****,選擇器的訓練目標是預測****的損失,因此選擇器選擇的是****損失最小的,也就是最容易被****修改的輸入。
圖六:FastCorrect 2 模型結構
實驗表明,在開源學術數據集 AISHELL-1 和微軟內部的產品數據集上,FastCorrect 2 相對于 FastCorrect 都取得了較大的提升(如圖七),而且模型的提升會隨著輸入的增多而不斷增大。
圖七:在 AISHELL-1 和微軟內部的數據集上,FastCorrect 2 和基線方法在詞錯誤率和解碼延遲上的對比。
FastCorrect 系列工作的代碼已經開源,開源鏈接:
https://github.com/microsoft/NeuralSpeech
https://github.com/microsoft/NeuralSpeech/tree/master/FastCorrect
https://github.com/microsoft/NeuralSpeech/tree/master/FastCorrect2
目前,研究員們正在研發 FastCorrect 3,在保證低延遲的情況下,進一步降低語音識別的錯誤率。同時,FastCorrect 系列工作也將被應用于微軟 Azure 的語音識別技術中,為用戶構建更好的語音識別服務。
論文鏈接:
FastCorrect:Fast Error Correction with Edit Alignment for Automatic Speech Recognition
https://arxiv.org/abs/2105.03842
FastCorrect 2:Fast Error Correction on Multiple Candidates for Automatic Speech Recognition
https://arxiv.org/abs/2109.14420
*博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。