做好嘈雜環境的語音識別,目前難點主要在哪裡?

本題已收錄至知乎圓桌:人工智慧 · 機器感知,更多「人工智慧」相關話題歡迎關注討論


謝@Saika邀

目前 close-talk 的語音識別已經達到了很高的識別精度(或者也用詞錯誤率來衡量),在乾淨環境下性能最好的系統之一,是去年微軟用LACEA(微軟提出的一種神經網路結構的名字,如下圖)在switchboard數據集上已經把詞錯誤率降到了5.8%,比人類標註還要好。也許你在使用Siri的時候會發現,如果把手機拿遠一點,Siri就gg了。這裡主要的原因是人說話的語音信號與手機麥克風所採拾的環境雜訊之間信噪比(SNR)較小,雜訊影響了正常識別系統的性能,這裡的雜訊包括環境的背景音,以及聲音的混響(reverberation)。

(LACEA 神經網路結構示意圖)

至於為什麼會影響識別性能,就要從識別的原理來說明了。以下我會用我的大白話來講解(想補充的時候再加入公式和科學術語),原因也只能是部分原因,真實的環境和模型會複雜得多,我也講不全。語音識別主要分為兩步,第一步是把聲音信號轉錄成音素序列,由聲學模型負責,第二步是把得到的音素序列轉化成文字,由語言模型負責;只要把第一步做準確,第二步可以用現有的技術同樣處理,那我就只講第一步了。聲學模型的原理是,將語音信號(幀)輸入給模型,比如神經網路,得到了這幀可能的音素(分類過程)。

在乾淨環境(SNR較大),每種音素的數據分布都在訓練集里見過,雜訊導致的誤差並不大,現有模型足夠完美分類。可是在嘈雜環境下(SNR較小),雜訊種類千變萬化,導致每種音素的分布在各個方向偏移較大,數據分布變得複雜,使得需要更複雜的分類器,甚至也不一定能區分。

下圖是一張數據分布示意,假設每種顏色代表一類音素,每個點是該音素疊加上雜訊後在空間里的位置,但是真實情況複雜得多得多!

以上就是雜訊造成的主要難點!

目前採用的方法可以有:使用麥克風陣列採集多個信源的信號,綜合分析出雜訊和語音;另外也有一些信號分離或者語音增強的方法可以做。

下面我來說一個雜訊環境下有趣的問題---雞尾酒會問題(cock-tail party),採集到的語音里有多個人同時說話,而我們希望識別出每個說話人的內容。這個的主要解決方法就是信號分離相關的了,我身邊的小夥伴們也有在研究這方面的問題。

十分感謝@hahatt的幫助!

(以上寫得比較粗糙,等我有空再來修改)


做好嘈雜環境的語音識別,難點是如何將雜音與人聲分離

(圖1 基本流程)

  1. 傳統的音頻識別需要人工設計模塊,並依靠Hidden Markov Models,常常需要大量的人力和經驗來調整模型噪音和語音變異。
  2. 未來的主要研究方向是,通過深度學習來替代Hidden Markov Models,如基於遞歸神經網路的深度神經網路(DNN)進行聲學建模,使得語音識別系統變得更為簡單。
  3. 日立公司宣稱自己已經研發出一項新技術,利用對話音量比雜音變化較少的特點,將雜音與話音進行分離。


歪個樓。

上周arxiv放出一篇利用Generative Adverserial Nets 做 speech denoising的文章(Speech Enhancement Generative Adversarial Network). 作者放出了code以及demo(santi-pdp/segan). 儘管paper本身的對比實驗還不夠多,能在GAN在圖像上大熱的近況下看到一篇在speech上(而且是在raw audio)的應用,還是很有趣的。


看來目前回答這個問題的都是語音識別的人啊,我從另外一個角度來分析下這個問題,我是一名語音信號降噪的技術人員。

其實,在語音識別的前端,最好是要使用傳統的DSP方法對語音信號進行消除噪音處理。語音信號處理之後的信噪比會大大的提升,傳統的DSP語音信號消噪處理過程已經發展了很多年了。

從普適的處理方法來講,消噪處理有 降混響,回聲消除,聲源定位後接餡零處理,基於統計的單麥克風雜訊消除,麥克風陣列處理。

對於雜訊的分類,從大的上面來講 一般是非平穩的雜訊和平穩的雜訊。平穩的雜訊結合基於統計的單麥克風和VAD就很好解決掉,跟人聲頻譜相疊加的噪音就會很麻煩,麥克風陣列的聲源定位和餡零可以解決掉空間上的噪音來源,而對於有參考信號的噪音來源,可以使用回聲消除演算法消除。

靈活的使用以上演算法,可以大大提高信噪比,而且,語音DSP消噪技術發展多年,性能穩定,魯棒性好,計算量好。

但可能唯一需要注意的就是語音識別過程中對於非線性的消噪處理可能比較敏感,如果後端是語音識別而不是人耳朵的話,盡量減少非線性處理。


說一點我的個人見解:嘈雜環境的語音識別在於干擾因素太多。雞尾酒會例子就更是如此。

我覺得未來語音識別的發展方向除了繼續在神經演算法上發力之外,還需要持續在於如下方法上:

在識別端預先構建一個先驗式的對話模型。然後根據這個模型來猜測對方的語句,隨後將這個猜測的語句的正確的發音,結合接收到的信息的發音,通過綜合加權分析之後從而最終得出正確的理解。

現在的問題在於,我們的語音識別還沒有發展出先驗的路子,無論採用逼格多麼高的方法,這只是重複性地走在了單行道上(聽到---判斷---識別)。逼格越高,只是在判斷的時候魯棒性更好一些,實際上,哪怕是人之間進行溝通都會產生「誤解」---因為歧義,發音不標準,干擾太多等因素。但是,我幾乎可以肯定,如果讓語音識別的另外一條腿長出來(先驗式模型),那麼語音識別的將永遠會是一隻跛腳鴨,而其辨識度將永遠拼不過人類。

===此處得修正一下===,

昨晚腦子一熱寫完之後又回頭去查了一下資料,其實我們的相關科學的工作者還是進行了一些先驗式的工作.比如說語音識別,就大量地採用了模板匹配的方法來提高語音的識別準確率.而這種模式匹配就是先驗的行為.

不過,我之所以沒有刪除自己的說法,是因為,這種模板匹配是毫無個性的匹配,是一種通用型的模板匹配.如果想要達成更高的識別率,得進行先驗式地猜測,就和我們人類在讀魯迅的文章,讀多了,就會找到一種趕腳,然後再讀類似趕腳的文章,會在讀的時候形成一種先驗式的模板匹配體驗:唔...這是魯迅的風格.

又舉個例子,我家閨女在牙牙學語時期,我有一段時間非常沮喪,因為她說的,我常常不知道她在說啥,可是孩子媽往往是閨女說剛說完,她就馬上知道閨女在說什麼了.更讓我沮喪的是,我媽居然也能夠聽懂我家閨女大部分的"鬼話"(她陪伴我閨女的時間和我差不多,我妻子則幾乎是24小時陪伴我閨女),

我事後猜測是她同樣長時間面對過同樣幼兒期的小傢伙,已經在腦海中形成了理解小傢伙的"鬼話"的模板?---我和我的老兄還是幼兒期,牙牙學語時-----是不是在同樣的大文化環境下,牙牙學語的孩子嘴裡面"說鬼話"的內涵都會差不多?

不知道這個例子是否明晰了我說的意思-----個性化的匹配模板

====修正完畢=======抱歉大嘴巴不負責任亂說=====

怎麼說呢,類似於,你和一個非常熟悉的人聊天,有時候甚至會有我知道你要說什麼的感覺,在吵鬧的環境中也是如此,我想這種感覺就是所謂的心有靈犀一點通。

而陌生人,則經常會發生疑惑,納悶,不了解,等等等等,甚至不得不經常性的進行重複:你說啥?是不是說:XXXXXXX?


最主要的是要將語音有效的分離出來。


看了些paper,語意粘連現在warp已經能處理的很好了 ,瓶頸應該是在去噪音吧,模型對於用時序比如gru或者lstm之類來推理噪音和聲音還是會有不小的錯誤.


推薦閱讀:

如何理解小米MIX2的雙ADC高清錄音?
科大訊飛一直漲啊,語音就這麼有未來嗎?
關於 EM(Expectation Maximization)演算法有哪些書、論文或博客推薦?
深度學習時代,數字信號處理的前端已經過時了嗎?

TAG:人工智慧 | 語音識別 |