語音識別如何突破延遲瓶頸?谷歌推出了基於 RNN-T 的全神經元設備端語音識別器

 2019-03-14 15:14:00.0

按:在近二十年來,尤其是引入深度學習以後,語音識別取得了一系列重大突破,並一步步走向市場並搭載到消費級產品中。然而在用戶體驗上,「遲鈍」可以算得上這些產品最大的槽點之一,這也意味着語音識別的延遲問題已經成爲了該領域研究亟待解決的難點。日前,谷歌推出了基於循環神經網絡變換器(RNN-T)的全神經元設備端語音識別器,能夠很好地解決目前語音識別所存在的延遲難題。谷歌也將這項成果發佈在了官方博客上,編譯如下。

2012 年,語音識別研究表明,通過引入深度學習可以顯著提高語音識別準確率,因此谷歌也較早地在語音搜索等產品中採用深度學習技術。而這也標誌着語音識別領域革命的開始:每一年,谷歌都開發出了從深度神經網絡(DNN)到循環神經網絡(RNN)、長短期記憶網絡(LSTM)、卷積網絡(CNNs)等一系列新的架構,進一步地提高了語音識別的質量。然而在此期間,延遲問題依舊是該領域需要攻克的主要難點——當語音助手能夠實現快速回答問題時,用戶會感覺它有幫助得多。

日前,谷歌正式宣佈推出端到端、全神經元的設備端語音識別器,爲 Gboard 中的語音輸入提供支持。在谷歌 AI 最近的一篇論文《移動設備的流媒體端到端語音識別》(Streaming End-to-End Speech Recognition for Mobile Devices,論文閱讀地址:https://arxiv.org/abs/1811.06621)中,其研究團隊提出了一種使用循環神經網絡變換器(RNN-T)技術訓練的模型,該技術也足夠精簡可應用到手機端上。這就意味着語音識別不再存在網絡延遲或故障問題——新的識別器即便處於離線狀態也能夠運行。該模型處理的是字符水平的語音識別,因此當人在說話時,它會逐個字符地輸出單詞,這就跟有人在實時鍵入你說的話一樣,同時還能達到你對鍵盤聽寫系統的預期效果。

語音識別如何突破延遲瓶頸?谷歌推出了基於 RNN-T 的全神經元設備端語音識別器

該圖對比了識別同一句語音時,服務器端語音識別器(左邊)以及新的設備端語音識別器(右邊)的生成情況。圖源:Akshay Kannan,Elnaz Sarbar

關於語音識別的一點歷史

傳統而言,語音識別系統由幾個部分組成:一個將語音分割(一般爲 10 毫秒的框架)映射到音素的聲學模型;一個將因素合成單詞的發音模型;以及一個表達給定短語可能性的語言模型。在早期的系統中,對這些組成部分的優化都是單獨進行的。

在 2014 年左右,研究人員就開始重點訓練單個神經網絡,來直接將一個輸入語音波形映射到一個輸出句子。研究人員採用這種通過給定一系列語音特徵生成一系列單詞或字母的序列到序列(sequence-to-sequence)方法開發出了「attention-based」和「listen-attend-spell」模型。雖然這些模型在準確率上表現很好,但是它們一般通過回顧完整的輸入序列來識別語音,同時當輸入進來的時候也無法讓數據流輸出一項對於實時語音轉錄必不可少的特徵。

與此同時,當時的一項叫做 CTC(connectionist temporal classification)的技術幫助將生產式識別器的延遲時間減半。事實證明,這項進展對於開發出 CTC 最新版本(改版本可以看成是 CTC 的泛化)中採用的 RNN-T 架構來說,是至關重要的一步。

循環神經網絡變換器(RNN-T)

RNN-T 是不採用注意力機制的序列到序列模型的一種形式。與大多數序列到序列模型需要處理整個輸入序列(本文案例中的語音波形)以生成輸出(句子)不同,RNN-T 能持續地處理輸入的樣本和數據流,並進行符號化的輸出,這種符號化的輸出有助於進行語音聽寫。在谷歌研究人員的實現中,符號化的輸出就是字母表中的字符。當人在說話時,RNN-T 識別器會逐個輸出字符,並進行適當留白。在這一過程中,RNN-T 識別器還會有一條反饋路徑,將模型預測的符號輸回給自己以預測接下來的符號,具體流程如下圖所示:

語音識別如何突破延遲瓶頸?谷歌推出了基於 RNN-T 的全神經元設備端語音識別器

RNN-T 的表示:用 x 表示輸入語音樣本;用 y 表示預測的符號。預測的符號( Softmax 層的輸出)y(u-1 )通過預測網絡被輸回給模型,確保預測同時考慮到當前的語音樣本以及過去的輸出。預測和解碼網絡都是 LSTM RNN,聯合的模型則是前饋網絡(feedforward network ,相關論文查看地址:https://www.isca-speech.org/archive/Interspeech_2017/pdfs/0233.PDF)。預測網絡由 2 個擁有 2048 個單元的層和 1 個有着 640 個維度的投射層組成。解碼網絡則由 8 個這樣的層組成。圖源:Chris Thornton

有效地訓練這樣的模型本來就已經很難了,然而使用谷歌開發的這項能夠進一步將單詞錯誤率減少 5% 的新訓練技術,對計算能力也提出了更高的要求。對此,谷歌開發了一種平行實現的方法,讓 RNN-T 的損失函數能夠大批地在谷歌的高性能雲平臺 TPUv2 芯片上高效運行。

離線識別

在傳統的語音識別引擎中,上文中提到的聲學、發音和語言模型被「組合」成一個邊緣用語音單元及其概率標記的大搜索圖(search graph)。在給定輸入信號的情況下,當語音波形抵達識別器時,「解碼器」就會在圖中搜索出概率最大的路徑,並讀出該路徑所採用的單詞序列。一般而言,解碼器假設基礎模型由 FST(Finite State Transducer)表示。然而,儘管現在已經有精密的解碼技術,但是依舊存在搜索圖太大的問題——谷歌的生成式模型的搜索圖大小近 2GB。由於搜索圖無法輕易地在移動電話上託管,因此採用這種方法的模型只有在在線連接的情況中才能正常工作。

爲了提高語音識別的有效性,谷歌研究人員還試圖通過直接將在設備上託管新模型來避免通信網絡的延遲及其固有的不可靠性。因此,谷歌提出的這一端到端的方法,不需要在大型解碼器圖上進行搜索。相反,它採取對單個神經網絡進行一系列搜索的方式進行解碼。同時,谷歌研究人員訓練的 RNN-T 實現了基於服務器的傳統模型同樣的準確度,但是該模型大小僅爲 450MB,本質上更加密集、更加智能地利用了參數和打包信息。不過,即便對於如今的智能手機來說,450 MB 依舊太大了,這樣的話當它通過如此龐大的網絡進行網絡信號傳輸時,速度就會變得很慢。

對此,谷歌研究人員通過利用其於 2016 年開發的參數量化( parameter quantization )和混合內核(hybrid kernel )技術,來進一步縮小模型的大小,並通過採用 ensorFlow Lite 開發庫中的模型優化工具包來對外開放。與經過訓練的浮點模型相比,模型量化的壓縮高出 4 倍,運行速度也提高了 4 倍,從而讓 RNN-T 比單核上的實時語音運行得更快。經過壓縮後,模型最終縮小至 80MB。

谷歌全新的全神經元設備端 Gboard 語音識別器,剛開始僅能在使用美式英語的 Pixel 手機上使用。考慮到行業趨勢,同時隨着專業化硬件和算法的融合不斷增強,谷歌表示,希望能夠將這一技術應用到更多語言和更廣泛的應用領域中去。

via:https://ai.googleblog.com/2019/03/an-all-neural-on-device-speech.html

文章來源:雷鋒網