當前位置:
首頁 > 科技 > Google 又逆天:語音輸入離線實時輸出文字,僅占 80 MB!然而……

Google 又逆天:語音輸入離線實時輸出文字,僅占 80 MB!然而……

作者 | 琥珀

谷歌語音輸入法可離線識別啦!

這次出手的,又是谷歌 AI 團隊。剛剛,他們為旗下的一款手機輸入法 Gboard (不要跟谷歌拼音輸入法搞混了啊~)上線了新功能:離線語音識別。目前這一新功能,只能在其自家的產品 Pixel 系列手機上使用。

廣大已經下載或正在趕往下載路上的 Pixel 圈外人士,包括 iOS 用戶可能都會失望了。

他們是這樣描述這款新功能的配置的:端到端、全神經、本地部署的語音識別系統。

在其最近的論文 「Streaming End-to-End Speech Recognition for Mobile Devices」 中,他們提出了一種基於 RNN-T(RNN transducer)的訓練模型。

它非常緊湊,可滿足在手機上部署。這意味著不會出現太多網路延遲或紊亂,即使用戶處於離線狀態,這款語音識別系統也始終可用。該模型始終以字元級工作, 因此即便你說話,它也會逐個字元地輸出單詞,就好像有人在實時鍵入並準確在虛擬鍵盤聽寫出你說的話。

例如,下面兩張圖片中展示的是在聽寫系統中輸入相同句子時的情況展示:左側為伺服器端,右側為本地端。哪邊的語音識別體驗更好呢?

總結起來就是,「離線狀態下,沒有任何延遲。」這也是谷歌此次亮出的大殺器。

發生延遲是因為你的語音數據必須從手機傳輸到伺服器上,解析完成後再返回。這可能需要幾毫秒甚至幾秒的時間。萬一語音數據包在乙太網中丟失,則需要更長的時間。

將語音轉換成毫秒級的文本需要相當多的計算力。這不只簡單是聽到聲音然後寫一個單詞那麼簡單,而是需要理解一個人講話的含義,以及背後涉及的很多有關語言和意圖的上下文語境。

在手機上是可以做到這一點的,但如此的話,又會很損耗電池電量。

語音識別模型簡史

一般來講,語音識別系統由幾個部分組成:將音頻片段(通常為 10 毫秒幀)映射到音素的聲學模型、將音素連接起來形成單詞的發聲模型,以及一個表達給定模型的語言模型。在早期系統,這些組件是相對獨立優化的。

2014 年左右,研究人員開始專註於訓練單個神經網路,將輸入音頻波形直接映射到輸出句子。通過在給定一系列音頻特徵的情況下生成一系列單詞或字形來學習模型,這種 sequence-to-sequence 的方法促使了 attention-based 和 listen-attend-spell(LAS)模型的誕生。雖然這些模型在準確性方面表現出極大的前景,但它們通常會檢查整個輸入序列,並且在輸入時不允許輸出,這是實時語音轉錄的必要特徵。

同時,一種稱為 connectionist temporal classification(CTC)的技術有助於減少當時識別系統的延時問題。這對於後來創建 RNN-T 架構是一次重要的里程碑,也被看作是 CTC 技術的一次泛化。

(編者註:CTC,其全稱為 Connectionist Temporal Classfication,由 Graves 等人於 2006 年提出,用於訓練遞歸神經網路(RNN)以解決時序可變的序列問題。它可用於在線手寫識別或識別語音音頻中音素等任務。發展到如今,CTC 早已不是新名詞,它在工業界的應用十分成熟。例如,在百度近日公布的在線語音識別輸入法中,其最新語音模型在 CTC 的基礎上還融合了 Attention 等新技術。)

何為RNN-T?

RNN-T 是一種不採用注意力機制的 sequence-to-sequence 模型。與大多數 sequence-to-sequence 模型(通常需要處理整個輸入序列(在語音識別中即是波形)以產生輸出句子)不同,RNN-T 會連續處理輸入樣本和流輸出符號。

輸出符號是字母表的字元。RNN-T 會逐個輸出字元,並在適當的位置輸入空格。它通過反饋循環執行此操作,該訓練將模型預測的符號反饋到其中以預測下一個符號。如下圖所示。

用輸入音頻樣本 x 和預測符號 y 表示 RNN-T。預測符號(Softmax 層的輸出)通過預測網路反饋到模型中。

有效訓練這樣的模型已經很困難,但隨著新開發的訓練技術進一步將單詞錯誤率降低了 5%,它的計算強度變得更高。為了解決這個問題,研究人員開發了一個並行實現過程,因此 RNN-T 損失功能可以在 Google Cloud TPU v2 上大批量運行。訓練中實現了大約 3 倍的加速。

離線識別

在傳統的語音識別引擎中,聲學、發聲和語音模型組合成一個大的圖搜索(search graph),其邊緣用語音單元及其概率標記。

當語音波形呈現給識別系統時,「解碼器」在給定輸入信號的情況下會搜索圖中相似度最高的路徑,並讀出該路徑所採用字序列。

通常,解碼器採用基礎模型的有限狀態感測器(Finite State Transducer, FST)表示。

然而,儘管有複雜的解碼技術,圖搜索仍很困難,因為生產模型幾乎有 2GB 大小。這可不是在行動電話上想託管就可以實現的,因此這種方法需要在線連接才能正常使用。

為了提高語音識別的有效性,研究人員嘗試直接在設備上託管新模型以避免通信網路的延遲和固有的不可靠性。

因此,端到端的方法不需要在大型解碼器圖上進行搜索。相反,解碼器包括通過單個神經網路的集束搜索(beam search)。

RNN-T 與傳統的基於伺服器端的模型具有相同的精度,但前者只有 450MB,而且更加智能地使用參數和打包信息。但即便在如今的智能手機上,450MB 還是佔用了很大的空間,例如通過大型網路是信號傳播可能會很慢。

因此,研究人員通過使用參數量化和混合內核技術進一步減小了模型大小。這項技術早在 2016 年就已發布,並在 TensorFlow Lite 版本中提供公開的模型優化工具包。

模型量化相對於訓練的浮點模型提供 4 倍壓縮,在運行時實現了 4 倍加速,這使得 RNN-T 比單核上的實時語音運行得更快。壓縮後,最終模型大小隻占 80MB。

效果如何?

谷歌公開這一新功能後,TechCrunch 評論稱,「鑒於 Google 的其他產品幾乎沒有是離線工作的,那麼你會在離線狀態下寫一封電子郵件嗎?當然,在網路條件不好的情況下,這款應用新功能可能會解決了用戶痛點,但顯然,這還是有點諷刺(雞肋)。」

而這也一度吸引來了 HackerNews 上不少用戶評論,他們也將部分矛頭指向了所謂的「離線功能」:

「離線功能雖然不是最主要的吸引力,但正如本文中提到的,延遲問題的減少是巨大的。他們可能沒有提及的是對隱私問題的影響。不過,用戶一般不會離線處理事物,但如果需要來回的穩定數據包流,連接網路也是很麻煩的問題。」

不過,經過嘗試後的用戶還是非常看好:「我只是將我的 Pixel1 代切換到飛行模型,並嘗試了語音輸入。果然,它的離線工作速度很快!這令人非常印象深刻(我之前嘗試過,但過去它只能理解一些特殊的短語。)

有多好方法可以實現這一功能呢,但我認為任何應用都能從這次語音的改進中受益。「

為此,筆者也特意下載了 Gboard、訊飛、百度三家語音輸入法,試看它們在飛行模式下的效果如何。

Round 1:

Gboard:目前非 Pixel 手機中離線語音尚無法使用,且針對某些機型甚至不支持語音。不過,打字還是比較絲滑流暢的。

Round 2:

訊飛:可下載離線語音包,不過在正常網路通暢情況下,語音識別的速度和準確性還是相當高的。

Round 3:

百度:也可下載離線語音,無網路連接狀態下,語音識別效果還是可以的。

不知國內經常使用訊飛、百度輸入法的小夥伴們,看到這一消息有何想法?歡迎留言。

參考:

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

【End】

熱 文推 薦


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 CSDN 的精彩文章:

禍害阿里雲宕機 3 小時的 IO HANG 究竟是個什麼鬼!
Android 告急!

TAG:CSDN |