語音識別 干擾抑制 揭秘語音系統裡的麥克風陣列

2021-10-18 10:57:29 字數 3711 閱讀 4210

就是「傳聲器陣列」,主要由一定數目的聲學感測器組成,用來對聲場的空間特性進行取樣並處理的系統。

麥克風陣列語音處理系統

而這裡講到的麥克風陣列是其中乙個狹義概念,特指應用於語音處理的按一定規則排列的多個麥克風系統,也可以簡單理解為2個以上麥克風組成的錄音系統。

麥克風陣列一般來說有線形、環形和球形之分,嚴謹的應該說成一字、十字、平面、螺旋、球形及無規則陣列等。

至於麥克風陣列的陣元數量,也就是麥克風數量,可以從2個到上千個不等。

這樣說來,麥克風陣列真的好複雜,別擔心,複雜的麥克風陣列主要應用於工業和國防領域,消費領域考慮到成本會簡化很多。

消費級麥克風陣列的興起得益於語音互動的市場火熱,主要解決遠距離語音識別的問題,以保證真實場景下的語音識別率。

麥克風陣列聲音定位

這涉及了語音互動使用者場景的變化,當使用者從手機切換到類似智慧型音箱或者機械人的時候,實際上麥克風面臨的環境就完全變了,這就如同兩個人竊竊私語和大聲嘶喊的區別。

前幾年,語音互動應用最為普遍的就是以siri為代表的智慧型手機,這個場景一般都是採用單麥克風系統。

單麥克風系統可以在低雜訊、無混響、距離聲源很近的情況下獲得符合語音識別需求的聲音頻號。

但是,若聲源距離麥克風距離較遠,並且真實環境存在大量的雜訊、多徑反射和混響,導致拾取訊號的質量下降,這會嚴重影響語音識別率。

而且,單麥克風接收的訊號,是由多個聲源和環境雜訊疊加的,很難實現各個聲源的分離。

這樣就無法實現聲源定位和分離,這很重要,因為還有一類聲音的疊加並非雜訊,但是在語音識別中也要抑制,就是人聲的干擾,語音識別顯然不能同時識別兩個以上的聲音。

顯然,當語音互動的場景過渡到以echo,機械人或者汽車為主要場景的時候,單麥克風的侷限就凸顯出來。

echo麥克風陣列

為了解決單麥克風的這些侷限性,利用麥克風陣列進行語音處理的方法應時而生。

麥克風陣列由一組按一定幾何結構(常用線形、環形)擺放的麥克風組成,對採集的不同空間方向的聲音頻號進行空時處理,實現雜訊抑制、混響去除、人聲干擾抑制、聲源測向、聲源跟蹤、陣列增益等功能,進而提高語音頻號處理質量,以提高真實環境下的語音識別率。

事實上,僅靠麥克風陣列也很難保證語音識別率的指標。

麥克風陣列還僅是物理入口,只是完成了物理世界的聲音頻號處理,得到了語音識別想要的聲音,但是語音識別率卻是在雲端測試得到的結果,因此這兩個系統必須匹配在一起才能得到最好的效果。

不僅如此,麥克風陣列處理訊號的質量還無法定義標準。因為當前的語音識別基本都是深度學習訓練的結果,而深度學習有個侷限就是嚴重依賴於輸入訓練的樣本庫,若處理後的聲音與樣本庫不匹配則識別效果也不會太好。

從這個角度應該非常容易理解,物理世界的訊號處理也並非越是純淨越好,而是越接近於訓練樣本庫的特徵越好,即便這個樣本庫的訓練訊號很差。

顯然,這是乙個非常難於實現的過程,至少要聲學處理和深度學習的兩個團隊配合才能做好這個事情,另外聲學訊號處理這個層次輸出的訊號特徵對語義理解也非常重要。

看來,小小的麥克風陣列還真的不是那麼簡單,另外也要提醒,語音識別率並非只有乙個wer指標,還有個重要的虛警率指標,稍微有點聲音就亂識別也不行,另外還要考慮閾值的影響,這都是麥克風陣列技術中的陷阱。

消費級的麥克風陣列主要面臨環境雜訊、房間混響、人聲疊加、模型雜訊、陣列結構等問題,若使用到語音識別場景,還要考慮針對語音識別的優化和匹配等問題。

為了解決上述問題,特別是在消費領域的垂直場景應用環境中,關鍵技術就顯得尤為重要。

雜訊抑制:

語音識別倒不需要完全去除雜訊,相對來說通話系統中需要的技術則是雜訊去除。

這裡說的雜訊一般指環境雜訊,比如空調雜訊,這類雜訊通常不具有空間指向性,能量也不是特別大,不會掩蓋正常的語音,只是影響了語音的清晰度和可懂度。

這種方法不適合強雜訊環境下的處理,但是應付日常場景的語音互動足夠了。

混響消除:

混響在語音識別中是個蠻討厭的因素,混響去除的效果很大程度影響了語音識別的效果。

我們知道,當聲源停止發聲後,聲波在房間內要經過多次反射和吸收,似乎若干個聲波混合持續一段時間,這種現象叫做混響。

混響會嚴重影響語音頻號處理,比如互相關函式或者波束主瓣,降低測向精度。

回聲抵消:

嚴格來說,這裡不應該叫回聲,應該叫「自雜訊」。

回聲是混響的延伸概念,這兩者的區別就是回聲的時延更長。

一般來說,超過100毫秒時延的混響,人類能夠明顯區分出,似乎乙個聲音同時出現了兩次,我們就叫做回聲,比如天壇著名的回聲壁。

回聲抵消就是要去掉其中的**資訊而只保留使用者的人聲,之所以叫回聲抵消,只是延續大家的習慣而已,其實是不恰當的。

聲源測向:

這裡沒有用聲源定位,測向和定位是不太一樣的,而消費級麥克風陣列做到測向就可以了,沒必要在這方面投入太多成本。

聲源測向的主要作用就是偵測到與之對話人類的聲音以便後續的波束形成。

聲源測向可以基於能量方法,也可以基於譜估計,陣列也常用tdoa技術。

聲源測向一般在語音喚醒階段實現,vad技術其實就可以包含到這個範疇,也是未來功耗降低的關鍵研究內容。

波束形成:

波束形成是通用的訊號處理方法,這裡是指將一定幾何結構排列的麥克風陣列的各麥克風輸出訊號經過處理(例如加權、時延、求和等)形成空間指向性的方法。

波束形成主要是抑制主瓣以外的聲音干擾,這裡也包括人聲,比如幾個人圍繞echo談話的時候,echo只會識別其中乙個人的聲音。

陣列增益:

這個比較容易理解,主要是解決拾音距離的問題,若訊號較小,語音識別同樣不能保證,通過陣列處理可以適當加大語音頻號的能量。

模型匹配:

這個主要是和語音識別以及語義理解進行匹配,語音互動是乙個完整的訊號鏈,從麥克風陣列開始的語音流不可能割裂的存在,必然需要模型匹配在一起。

實際上,效果較好的語音互動專用麥克風陣列,通常是兩套演算法,一套內嵌於硬體實時處理,另外一套服務於雲端匹配語音處理。

語音識別系統搭建

搭建語音識別實驗記錄 pip 快速安裝 國內清華源 命令 pip install i 庫名 阿里映象安裝tensorflow pip install i tensorflow gpu 1.13.1語音識別系統 別人的部落格中找到可能出現的問題所在,應該設定gpu按需分配,再看本系統的執行檔案。起初,...

從零開始語音識別(5) 端到端的語音識別系統

seq2seq 此模型長用於機器翻譯 語音識別。其優點是輸入輸出不需要等長,而且兩者長度不固定。此模型包含兩個rnn結構,分別用於編碼與解碼。decoder網路直到解碼的序列是end才停止,因此可以實現變長的輸出。encoder將輸入進行編碼,將整個輸入的隱狀態輸入給decoder,可以實現輸入的變...

PocketSphinx語音識別系統的程式設計

pocketsphinx語音識別系統的程式設計 zouxy09 qq.com 關於語音識別的基礎知識和sphinx的知識,具體可以參考我的另外的博文 語音識別的基礎知識與cmusphinx介紹 article details 7941585 pocketsphinx語音識別系統的編譯 安裝和使用 a...