谷歌手機輸入法可以離線語音識別了!模型精度遠超經典CTC

機器之心發表於2019-03-13

今天,谷歌釋出了一個端到端的移動端全神經語音識別器,來處理 Gboard 中的語音輸入。該新型語音識別器可內建在手機裝置中,離線狀態時依然可用。更重要的是,它可以實現字元級實時輸出,對使用者的語音輸入提供快速及時的響應。

2012 年,在深度學習技術的幫助下,語音識別研究有了極大進展,很多產品開始採用這項技術,如谷歌的語音搜尋。這也開啟了該領域的變革:之後每一年都會出現進一步提高語音識別質量的新架構,如深度神經網路迴圈神經網路長短期記憶網路卷積神經網路等等。然而,延遲仍然是重中之重:自動語音助手對請求能夠提供快速及時的反應,會讓人感覺更有幫助。

今天,谷歌釋出了一個端到端的移動端全神經語音識別器,來處理 Gboard 中的語音輸入。在相關論文《Streaming End-to-End Speech Recognition for Mobile Devices》中,谷歌研究者展示了一個使用 RNN transducer (RNN-T) 技術訓練的模型,它非常緊湊,因而可以內建在手機裝置中。這意味著不再有網路延遲或 spottiness,新的語音識別器一直可用,即使是離線狀態也可使用。該模型以字元級執行,因此只要使用者說話,它就會按字元輸出單詞,就像有人在你說話的時候實時打字一樣。

谷歌手機輸入法可以離線語音識別了!模型精度遠超經典CTC

該影片在識別相同的語音句子時將伺服器端語音識別器(左側皮膚)與新型移動端識別器(右側皮膚)進行對比。GIF 來源:Akshay Kannan 和 Elnaz Sarbar

語音識別歷史

一直以來,語音識別系統包含多個元件:將音訊片段(通常為 10 毫秒幀)對映到音素上的聲學模型、將各音素結合在一起形成單詞的發音模型,以及表達給定短語似然的語言模型。在早期語音識別系統中,這些元件保持獨立最佳化。

2014 年左右,研究人員開始著重訓練單一神經網路,直接將輸入的音訊波形對映到輸出語句上。這種序列到序列的方法基於給定音訊特徵序列生成單詞或字素序列,從而學習模型,這促進了「基於注意力」和「傾聽-注意-拼寫」(listen-attend-spell)模型的發展。雖然這些模型能夠極大地保證準確性,但它們通常需要檢查整個輸入序列,並且在輸入的同時無法實現輸出,而這又是實時語音轉錄的必要特徵。

與此同時,一種名為 connectionist temporal classification(CTC)的自主技術已經幫助生產級識別器將自身延遲減半。事實證明,這對建立 RNN-T 架構(最新發布版本採用的架構)來說是很重要的一步,RNN-T 可以看作是 CTC 技術的泛化。

RNN transducer

RNN-T 是一種不使用注意力機制序列到序列(sequence-to-sequence)模型。大部分序列到序列模型通常需要處理整個輸入序列(在語音識別中即波形)從而生成輸出(句子),而 RNN-T 不一樣,它連續處理輸入樣本,生成輸出訊號,這非常適合語音聽寫。在谷歌的實現中,輸出訊號是字母表中的字元。隨著使用者說話,RNN-T 識別器逐個輸出字元,且在合適的地方加上空格。在這個過程中,該識別器還具備反饋迴圈(feedback loop),將模型預測的訊號再輸入到模型中,以預測下一個訊號,如下圖所示:

谷歌手機輸入法可以離線語音識別了!模型精度遠超經典CTC

RNN-T 圖示,輸入語音樣本為 x,預測訊號為 y。

如上所示,RNN-T 透過預測網路(如 y_u-1)將預測訊號(Softmax 層的輸出)返回至模型,以確保預測結果基於當前語音樣本和之前的輸出得出。預測網路和編碼器網路是 LSTM RNN,聯合模型是前饋網路。預測網路由 2 個 LSTM 層組成,每個層包括 2048 個單元,以及一個 640 維的對映層。編碼器網路有 8 個 LSTM 層。

高效訓練此類模型已經非常困難,而在使用谷歌新型訓練技術後(該技術將錯詞率降低了 5%,詳見論文《MINIMUM WORD ERROR RATE TRAINING FOR ATTENTION-BASED SEQUENCE-TO-SEQUENCE MODELS》),訓練變得更加計算密集。為此,谷歌開發了並行實現,這樣 RNN-T 損失函式就可以在谷歌的高效能雲 TPU v2 硬體上大批次高效執行。而這使訓練速度實現了 3 倍加速。

離線識別

在傳統的語音識別引擎中,上述的聲學、發音和語言模型被「組合」成一個大型的搜尋圖。該搜尋圖的邊是用語音單元及其機率來標記的。當語音波形被輸入給識別器時,「解碼器」會在該圖中搜尋給定輸入訊號的最大似然路徑,並讀取該路徑採用的單詞序列。通常,解碼器假設底層模型的有限狀態轉換器(FST)表示。然而,雖然有複雜的解碼技術,搜尋圖仍然很大,對谷歌的生產模型來說差不多是 2GB。因此該技術無法輕易地在移動手機上部署,而是需要線上連線才能正常工作。

為了提高語音識別的有用性,谷歌透過直接在裝置上部署新模型,來避免通訊網路的延遲和固有的不可靠性。所以,其端到端方法不需要在大型解碼器圖上進行搜尋。相反,解碼包括透過單個神經網路進行集束搜尋(beam search)。谷歌訓練的 RNN-T 模型的準確率能夠媲美基於伺服器的傳統模型,但大小隻有 450MB,本質上更智慧地使用引數和更密集地打包資訊。但即使是對現在的智慧手機來說,450MB 也是不小的容量了,而在如此大的網路上傳播訊號會有些慢。

谷歌使用其在 2016 年開發的引數量化和混合核技術來進一步縮小模型體積,然後使用 TensorFlow Lite 庫中的模型最佳化工具包使其公開可用。模型量化對訓練好的浮點模型提供了 4 倍的壓縮,實現了 4 倍的執行時加速,因此 RNN-T 在單核上的執行速度比實時語音要快。經過壓縮後,最終模型只有 80MB 大小。

谷歌釋出的這一新型全神經移動端 Gboard 語音識別器將首先用於所有使用美式英語的 Pixel 手機。谷歌希望可以將這項技術應用到更多語言和更多應用領域。

更為普及的語音輸入

此外,今年一月份百度釋出了同樣關注語音識別的「百度輸入法 AI 探索版」,其預設為全語音輸入方式。如果不討論使用場景,目前它的語音輸入確實在準確度和速度上已經達到非常好的效果,包括中英混雜、方言和其它語種等。與谷歌關注移動端推斷不同,百度語音識別更關注線上的實時推斷,他們提出了一種名為「流式多級的截斷注意力(SMLTA)」模型。

谷歌手機輸入法可以離線語音識別了!模型精度遠超經典CTC

SMLTA 模型最核心的概念是利用 CTC 模型的尖峰對連續音訊流做截斷,然後在每個截斷的小語音片段上進行注意力建模。這種模型利用了截斷多級注意力對長句建模的優勢,同時也解決了 CTC 模型的插入或刪除錯誤對注意力模型的影響。此外,它採用的是一種區域性注意力機制,因此能做到實時線上推斷。

百度的 SMLTA 主要用於線上語音識別,但透過對 Deep Peak 2 模型的大量工程最佳化,它也能提供離線語音識別機器之心發現百度輸入法 AI 探索版的 APP 包(IOS)有 89.6MB,如果使用離線語音識別,需要額外下載一個 25MB 大小的包。

論文:Streaming End-to-end Speech Recognition For Mobile Devices

谷歌手機輸入法可以離線語音識別了!模型精度遠超經典CTC

論文地址:https://arxiv.org/abs/1811.06621

摘要:根據給定輸入語音直接預測輸出字元序列的端到端(E2E)模型對移動端語音識別來說是不錯的選擇。但部署 E2E 模型的挑戰也不少:為了應用到實際中,此類模型必須對語音進行流式的實時解碼;它們必須穩健地支援長尾使用案例;它們必須能夠利用使用者特定的上下文(如聯絡人列表);此外,它們必須要非常準確。在本文中,我們用迴圈神經網路轉換器(RNN transducer)構建了 E2E 語音識別器。經過試驗評估,我們發現在很多評估專案中,該方法在延遲和準確率方面遠超基於 CTC 的傳統模型。

原文地址:https://ai.googleblog.com/2019/03/an-all-neural-on-device-speech.html

相關文章