深度學習也解決不掉語音識別問題

AI前線發表於2019-03-04

作者|Awni Hannun
譯者|李夢
編輯|Emily
AI前線出品| ID:ai-front

自從深度學習被引入語音識別後,誤字率迅速下降。不過,雖然你可能讀到過一些相關文章,但其實語言識別仍然還沒有達到人類水準。語音識別已經有了很多失敗的模式。而要將 ASR(自動語音識別)從僅在大部分時間適用於一部分人發展到在任何時候適用於任何人,唯一的方法就是承認這些失敗並採取措施解決它們。

深度學習也解決不掉語音識別問題

在交換臺通話(Switchboard conversational)語音識別標準測試中誤字率方面的進展。這個資料集採集於 2000 年,它由四十個電話通話組成,這些通話分別屬於隨機的兩個以英語為母語的人。

僅僅基於交換臺通話的結果就聲稱已經達到人類水準的語音識別,就如同在某個天氣晴朗、沒有車流的小鎮成功測試自動駕駛就聲稱已經達到人類駕駛水準一樣。近期語音識別領域的發展確實非常震撼。但是,關於那些聲稱達到人類水準的說法就太寬泛了。下面是一些還有待提升的領域。

口音和噪聲

語音識別中最明顯的一個缺陷就是對口音 [1] 和背景噪聲的處理。最直接的原因是大部分的訓練資料都是高訊雜比、美式口音的英語。比如在交換臺通話的訓練和測試資料集中只有母語為英語的通話者(大多數為美國人),並且背景噪聲很少。

而僅憑訓練資料自身是無法解決這個問題的。在許許多多的語言中又擁有著大量的方言和口音,我們不可能針對所有的情況收集到足夠的加註資料。單是為美式口音英語構建一個高質量的語音識別器就需要 5000 小時以上的轉錄音訊。

深度學習也解決不掉語音識別問題

人工轉錄和百度的 Deep Speech 2 模型在各類語音中的比較 [2] 。注意人工在轉錄非美式口音時總表現得更差,這可能要歸咎於轉錄員群體中的美國偏見。我更期望為各地區安排本土的轉錄員,讓地區口音的錯誤率更低。

關於背景噪聲,像在移動的汽車中訊雜比(SRN)低至 -5dB 的情況並不罕見。在這樣的環境中人們並非難以交流,而另一方面,噪聲環境中語音識別能力卻急速下降。上圖中可以看到從高訊雜比到低訊雜比,人與模型只見的錯誤率差距急劇擴大。

語義錯誤

通常語音識別系統的實際目標並不是誤字率。我們更關心的是語義錯誤率,就是被誤解的那部分話語。

舉個語義錯誤的例子,比如某人說“let’s meet up Tuesday”,但語音識別預測為“let’s meet up today”。我們也可能在單詞錯誤的情況下保持語義正確,比如語音識別器漏掉了“up”而預測為“let’s meet Tuesday”,這樣話語的語義是不變的。

在使用誤字率作為指標時必須要小心。舉一個最壞的例子,5% 的誤字率大概相當於每 20 個單詞漏掉 1 個。如果每個語句有 20 個單詞(大約是英語語句平均值),那麼語句錯誤率可能高達 100%。希望錯誤的單詞不會改變句子的語義,否則即便只有 5% 的誤字率也可能會導致每個句子都被誤讀。

將模型與人工進行比較時的重點是查詢錯誤的本質,而不僅僅是將誤字率作為一個決定性的數字。在我的經歷裡,人工轉錄會比語音識別更少產生極端語義錯誤。

最近微軟的研究人員將他們的人工級語音識別器的錯誤與人類進行了比較 [3]。他們發現的一個差異是該模型比人更頻繁地混淆“uh”和“uh huh”。而這兩條術語的語義大不相同:“uh”只是個填充詞,而“uh huh”是一個反向確認。這個模型和人出現了許多相同型別的錯誤。

單通道和多人會話

由於每個通話者都由單獨的麥克風進行記錄,所以交換臺通話任務也變得更加簡單。在同一個音訊流裡沒有多個通話者的重疊。而另一方面,人類卻可以理解有時同時發言的多個會話者。

一個好的會話語音識別器必須能夠根據誰在說話對音訊進行劃分(Diarisation),還應該能弄清重疊的會話(聲源分離)。它不只在每個會話者嘴邊都有麥克風的情況下可行,進一步才能良好地應對發生在任何地方的會話。

領域變化

口音和背景噪聲只是語音識別有待強化的兩個方面。這還有一些其他的:

  • 來自聲環境變化的混響
  • 硬體造成的偽影
  • 音訊的編解碼器和壓縮偽影
  • 取樣率
  • 會話者的年齡

大多數人甚至都不會注意 mp3 和 wav 檔案的區別。但在聲稱達到人類水準的效能之前,語音識別還需要進一步增強對檔案來源多樣化的處理。

上下文

你會注意到像交換臺這樣人類水準誤字率的基準實際上是非常高的。如果你在跟一個朋友交流時,他每 20 個單詞就誤解其中一個,溝通會很艱難。

一個原因在於這樣的評估是上下文無關的。而實際生活中我們會使用許多其他的線索來輔助理解別人在說什麼。列舉幾個人類使用上下文而語音識別器沒有的情況:

  • 歷史會話和討論過的話題
  • 說話人的視覺暗示,包括面部表情和嘴脣動作
  • 關於會話者的先驗知識

目前,Android 的語音識別器已經掌握了你的聯絡人列表,它能識別出你朋友的名字 [4]。地圖產品的語音搜尋則通過地理定位縮小你想要導航的興趣點範圍 [5]。

當加入這些訊號時,ASR 系統肯定會有所提高。不過,關於可用的上下文型別以及如何使用它,我們才剛剛觸及皮毛。

部署

在會話語音方面的最新進展都還不能展開部署。如果要解決新語音演算法的部署,需要考慮延遲和計算量這兩個方面。這兩者之間是有關聯的,演算法計算量的增加通常都導致延遲增加。不過簡單起見,我將它們分開討論。

延遲:關於延遲,這裡我指的是使用者說完到轉錄完成的時間。低延遲是 ASR 中一個普遍的產品約束,它明顯影響到使用者體驗。對於 ASR 系統來說,10 毫秒的延遲要求並不少見。這聽起來可能有點極端,但是請記住文字轉錄通常只是一系列複雜計算的第一步。例如在語音搜尋中,實際的網路搜尋只能在語音識別之後進行。

一個關於延遲方面難以改進的例子是雙向迴圈層。當前所有最先進的會話語音識別都在使用它。其問題在於我們無法在第一層計算任何東西,而必須要等到使用者說完。所以這裡的延遲跟話語時長有關。

深度學習也解決不掉語音識別問題

上圖:只有一個前向迴圈,可以在轉錄時進行計算。

下圖:在雙向迴圈的情況下,必須要等待全部話語說完才能計算轉錄。

在語音識別中如何有效結合未來資訊仍然是一個開放問題。

計算:轉錄語音所需的計算能力是一個經濟約束。我們必須考慮語音識別器每次精度改進的價效比。如果改進達不到一個經濟門檻,那它就無法部署。

一個從未部署的持續改進的典型案例就是整合。1% 或者 2% 的誤差減少很少值得 2-8 倍的計算量增長。新一代 RNN 語言模型也屬於這一類,因為它們用在束搜尋時代價昂貴,不過預計未來會有所改變。

需要說明的是,我並不認為研究如何在巨大計算成本上提高精度是無用的。我們已經看到過“先慢而準,然後提速”模式的成功。要提的一點是在改進到足夠快之前,它還是不可用的。

未來五年

語音識別領域仍然存在許多開放性和挑戰性的問題:

  • 在新地區、口音、遠場和低訊雜比語音方面的能力擴充套件
  • 在識別過程中引入更多的上下文
  • Diarisation 和聲源分離
  • 評價語音識別的語義錯誤率和創新方法
  • 超低延遲和高效推理

我期待著今後 5 年在以上以及其他方面取得的進展。

致謝

感謝 @mrhannun 的有效反饋和編輯。

參考文章

[1] 只要問問有蘇格蘭口音的人就可以。

[2] 這些結果來源於 Amodei 等人,2016。帶口音的語音來自 VoxForge,無噪和有噪的語音出自第三屆 CHiME 挑戰賽。

[3] Stolcke and Droppo, 2017 。

[4] 請看 Aleksic 等人(2015)關於如何提高聯絡人姓名的識別的例子。

[5] 請看 Chelba 等人(2015)關於如何結合說話人位置的例子。

檢視英文原文:

https://awni.github.io/speech-recognition/

更多幹貨內容可關注微訊號AI前線,ID:ai-front

相關文章