天天看點

超越整句的流式多級Attention:解密百度輸入法背後的語音識别模型

全語音互動對于語音識别準确率要求極高。百度表示,其 AI 探索版的語音輸入使用者體驗提升得益于四項重大突破,分别是在線上語音、離線語音、中英混合語音以及方言四個領域上實作的。

關于線上語音識别,百度釋出了流式多級的截斷注意力模組化(SMLTA),将線上語音識别準确率相對于上一代 Deep Peak 2 再次提升 15%,并實作了基于 SMLTA 模型的線上語音識别服務大規模上線應用。

在離線語音識别中,百度通過持續優化去年 1 月釋出的 Deep Peak 2 系統,讓離線語音輸入相對準确率再次提升,并表示可以保證在沒網的情況下實作輸入法的流暢快速使用。百度輸入法「中英自由說」可以在不影響中文語音輸入準确率的情況下,實作高精準的中英文混合語音識輸入(例如,可以準确地區分「有你的快遞」和「you need cry dear」)。「方言自由說」則将國語和六大方言融合成一個語音識别模型,在輸入時可以無需設定自由切換,無論是國語和方言之間,還是方言和方言之間。

開啟百度輸入法 AI 探索版後,點選語音按鈕,除了可以說出你要記錄的内容,讓輸入法幫你直接錄入轉文字。還可以呼喚「小度小度」語音助手,并說出相應指令,即可實作語音修改、發表情、發彈幕、發檔案等一系列操作,滿足與輸入相關的周邊需求。可以說,百度輸入法 AI 探索版的核心功能就是語音識别。

超越整句的流式多級Attention:解密百度輸入法背後的語音識别模型

百度輸入法 AI 探索版界面

在下文中,機器之心将介紹百度輸入法中部署的最新線上語音識别模型——SMLTA 的架構細節。簡言之,SMLTA 就是流式多級的截斷注意力模型,是融合了 CTC、LSTM 和 attention 等近年語音識别技術的集大成者。百度表示,SMLTA 是在業界首個截斷模型能超越整句的注意力模型,同時這也是第一次實作了基于 Attention 技術的線上語音識别服務的大規模上線。

可大規模工業使用的基于注意力模組化的語音識别

CTC 模型和注意力 (Attention) 模型在學術界都不是新名詞。尤其是注意力模型,是近些年研究的熱點,注意力模型已經在實驗室内被證明能夠實作語音識别的端到端模組化,這種模組化将使得語音識别系統極度簡化。相對于包括 CTC 在内的所有傳統語音識别技術而言,注意力模型都被認為有較高的識别率。但這都隻是在實驗室得到的實驗結論。注意力模型在投入實際工業應用中還會遇到大量的問題,例如無法做到一邊傳語音一邊識别進而導緻使用者等待時間太長的問題和無法保證長句字識别時候的識别精度的問題等。

百度采用的是一種名為「流式多級的截斷注意力模型(SMLTA)」,其中流式表示可以直接對語音的小片段(而不是必須整句),進行一個片段一個片段地增量解碼,多級表示堆疊多層注意力模型,而最後的截斷則表示利用 CTC 模型的尖峰資訊,把語音切割成一個一個小片段,注意力模型模組化和解碼可以在這些小片段上展開。這樣的模型就是支撐起每天數億條識别任務的核心方法,也是工業上大規模使用注意力模型進行語音識别的範例。

其實想要了解百度的工業級語音模型,看看下面這張結構圖就夠了,其目前已經被證明在大規模應用上有非常好的效果。後面我們主要圍繞這張圖介紹 SMLTA 模型的具體結構:

超越整句的流式多級Attention:解密百度輸入法背後的語音識别模型

如上所示為 SMLTA,最下面的輸入聲波會按照 CTC 尖峰的分布,被截斷為一個個語音小片段(時間步),也就是 h 所表示的内容。除了截斷外,這裡 CTC 模型的另外一個核心作用是把短時平穩的語音資訊抽象成高度集中的局部資訊。之後的注意力模組化就是在這個一個個小片段上進行的,這樣的注意力模組化被稱作局部注意力模組化。

按照 CTC 模組化的特性,每一個語音小片段預測的就是一個基本模組化單元(比如音節,或者高頻音素組合)。在對每個語音小片段進行注意力模組化前,百度進行了一個編碼過程。編碼過程抽取出來的特征就是代表這個模組化單元的最本質描述特征 c。在注意力模組化之後,百度又采用了 2 層 LSTM 模型,來描述每個單元的最本質描述特征 c 和識别結果之間的一對一的映射關系,進而實作完美的實作了端到端模組化。這種模組化方式,使得語音識别擺脫之前複雜的動态規劃解碼器帶來的系統的備援和複雜,使得語音識别過程變成一個簡單的滾動生成過程:在一個時間步生産一個識别結果,然後滾動到下一個時間步,再生成下一個識别結果,直到識别過程結束。

由于該方法把傳統的全局的注意力模組化轉換成局部注意力模組化,是以這個過程也是一個絕對可以流式實作的過程,無論多長的句子,都可以通過截段來實作流式解碼和精準的局部注意力模組化,同時也實作了流式解碼。

由于 CTC 模型必然存在着插入和删除等錯誤,這些錯誤會影響截斷的效果,也就是影響語音小片段的定義,進而一定影響最終的模型精度。是以,在百度的 SMLTA 中采用了一種多級注意力結構。這種多級結構描述工作原理描述如下:具體而言,在上圖不同的語音片段 h 上,第一層注意力機制會注意目前語音片段以及過去所有一段時間内的語音片段的語音特征資訊,也就是注意不同發音對目前預測的重要性,且重要性是由注意力的權重α來決定的。直覺而言,第一層 Attention 注意到的是 CTC 截斷的「音」,這些音組合起來能表示某個具體的文字的特征,也就是輸出結果 c。而第二層 Attention 是建立在前一層注意到的特征 c 之上,對第一層注意力模型的輸出再進行第二次注意力學習。如果第一次注意力的學習結果存在備援資訊的話,經過第二次注意力模組化,就能找到真正需要集中注意力的注意力點。

是以工業級的 SMLTA 模型最核心的部分還是利用 CTC 模型的尖峰對連續音頻流做截斷,然後在每個截斷的小語音片段上進行注意力模組化。傳統的注意力模型必須需要在整句範圍内模組化,而百度的注意力模型卻可以在小片段上模組化。核心原因是因為 CTC 模型的尖峰資訊所對應的特征表示是高度局部集中的。這種高度局部集中的特征表示,使得僅對目前截斷的小片段做注意模組化,就能夠實作對目前模組化單元的高精準描述。而不需要像之前那樣對一個很大範圍的聲音資訊進行「集中注意力」。

這就是流式的、多級的截斷注意力模型,它解決了傳統注意力模型不能進行流模組化和解碼的問題,并且依靠截斷,實作了對長句子的高精準的注意力模組化,同時也解決了 CTC 模型的插入或删除錯誤對注意力模型的影響。CTC 模組化和注意力模組化這兩者的結合,對于學術或研究還是有很重要意義的,更不用說流式實時解碼對工業應用的貢獻了。

語音識别模型的疊代

SMLTA 也可以看成是百度上一代語音識别模型 Deep Peak 2 的進一步優化。Deep Peak 2 的全稱叫做「基于 LSTM 和 CTC 的上下文無關音素組合模組化」。上下文無關模組化方式是指:把高頻出現的音素聯合在一起,形成一個音素組合體,然後将這個音素組合體作為一個基本模組化單元。Deep Peak 2 還通過聲學模型學習和語言資訊學習相分離的訓練方法,使用音素組合來保留最重要的音素連接配接特性,進而避免了上下文無關模組化時的過拟合問題。這種模組化方式可以顯著縮小模組化單元,帶來更快的解碼速度。

相比之下,SMLTA 對 Deep Peak 2 的核心改進在于局部注意力和多級注意力的引入,可以看成是将 Deep Peak2 通過結合注意力機制來擷取更大範圍和更有層次的上下文資訊。這種改進一般而言會造成計算量的增加,但百度表示,其整體計算量和上一代的 Deep Peak 2 是技術相當的。整個工業産品部署完全是 CPU 部署,無需額外的 GPU 就可以完成。成本低廉,适合大規模推廣使用。

超越整句的流式多級Attention:解密百度輸入法背後的語音識别模型

By the Way

機器之心在釋出會現場還見識到了百度輸入法 AI 探索版的一項很有意思的功能——淩空手寫。它不需要特殊的手寫筆,也不需要類似深度攝像頭或多目攝像頭等硬體,隻需要最普通的 RGB 攝像頭即可。如下圖所示,使用者隻要對着攝像頭豎起手指就可以在空氣中開始寫字,寫完後張開手掌,就能結束寫字,輸入法會開始識别并将對應文字輸出。圖中的使用者正在嘗試寫一個「紹」字,已輸出的「淩空手寫張」也是用這個功能寫的。

超越整句的流式多級Attention:解密百度輸入法背後的語音識别模型

淩空手寫采用雙神經網絡模型的方案:一個是基于灰階圖的指尖跟蹤模型,另一個是基于多方向特征文字識别模型。此外,研發團隊發現鋸齒和連筆在三維空間的手寫識别中對識别率影響較大,于是對抗鋸齒和連筆消除算法進行了大量優化工作。無論實用性如何,這麼好玩的功能還是值得試試~

超越整句的流式多級Attention:解密百度輸入法背後的語音識别模型

本文為機器之心原創,轉載請聯系本公衆号獲得授權。

繼續閱讀