1. 程式人生 > >聊一聊麥克風陣列技術:語音互動應該選用怎樣的方案?(轉載)

聊一聊麥克風陣列技術:語音互動應該選用怎樣的方案?(轉載)

雷鋒網(公眾號:雷鋒網)按:本文作者陳孝良,工學博士,聲智科技創始人。雷鋒網獨家文章。

亞馬遜Echo和谷歌Home爭奇鬥豔,除了雲端服務,他們在硬體上到底有哪些差異?我們先將Echo和Home兩款音箱拆開來看,區別最大的還是麥克風陣列技術。Amazon Echo採用的是環形6+1麥克風陣列,而Google Home(包括Surface Studio)只採用了2麥克風陣列。這種差異我們在文章《對比Amazon Echo,Google Home為何只採用了2個麥克風?》做了探討。但是好多朋友私信諮詢,因此這裡想稍微深入談談麥克風陣列技術,以及智慧語音互動裝置到底應該選用怎樣的方案。

什麼是麥克風陣列技術?

學術上有個概念是“傳聲器陣列”,主要由一定數目的聲學感測器組成,用來對聲場的空間特性進行取樣並處理的系統。而這篇文章講到的麥克風陣列是其中一個狹義概念,特指應用於語音處理的按一定規則排列的多個麥克風系統,也可以簡單理解為2個以上麥克風組成的錄音系統。

麥克風陣列一般來說有線形、環形和球形之分,嚴謹的應該說成一字、十字、平面、螺旋、球形及無規則陣列等。至於麥克風陣列的陣元數量,也就是麥克風數量,可以從2個到上千個不等。這樣說來,麥克風陣列真的好複雜,別擔心,複雜的麥克風陣列主要應用於工業和國防領域,消費領域考慮到成本會簡化很多。

1.jpg

為什麼需要麥克風陣列?

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

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

前幾年,語音互動應用最為普遍的就是以Siri為代表的智慧手機,這個場景一般都是採用單麥克風系統。單麥克風系統可以在低噪聲、無混響、距離聲源很近的情況下獲得符合語音識別需求的聲音訊號。但是,若聲源距離麥克風距離較遠,並且真實環境存在大量的噪聲、多徑反射和混響,導致拾取訊號的質量下降,這會嚴重影響語音識別率。而且,單麥克風接收的訊號,是由多個聲源和環境噪聲疊加的,很難實現各個聲源的分離。這樣就無法實現聲源定位和分離,這很重要,因為還有一類聲音的疊加並非噪聲,但是在語音識別中也要抑制,就是人聲的干擾,語音識別顯然不能同時識別兩個以上的聲音。

顯然,當語音互動的場景過渡到以Echo、機器人或者汽車為主要場景的時候,單麥克風的侷限就凸顯出來。為了解決單麥克風的這些侷限性,利用麥克風陣列進行語音處理的方法應時而生。麥克風陣列由一組按一定幾何結構(常用線形、環形)擺放的麥克風組成,對採集的不同空間方向的聲音訊號進行空時處理,實現噪聲抑制、混響去除、人聲干擾抑制、聲源測向、聲源跟蹤、陣列增益等功能,進而提高語音訊號處理質量,以提高真實環境下的語音識別率。

事實上,僅靠麥克風陣列也很難保證語音識別率的指標。麥克風陣列還僅是物理入口,只是完成了物理世界的聲音訊號處理,得到了語音識別想要的聲音,但是語音識別率卻是在雲端測試得到的結果,因此這兩個系統必須匹配在一起才能得到最好的效果。不僅如此,麥克風陣列處理訊號的質量還無法定義標準。因為當前的語音識別基本都是深度學習訓練的結果,而深度學習有個侷限就是嚴重依賴於輸入訓練的樣本庫,若處理後的聲音與樣本庫不匹配則識別效果也不會太好。從這個角度應該非常容易理解,物理世界的訊號處理也並非越是純淨越好,而是越接近於訓練樣本庫的特徵越好,即便這個樣本庫的訓練訊號很差。顯然,這是一個非常難於實現的過程,至少要聲學處理和深度學習的兩個團隊配合才能做好這個事情,另外聲學訊號處理這個層次輸出的訊號特徵對語義理解也非常重要。看來,小小的麥克風陣列還真的不是那麼簡單,為了更好地顯示這種差別,我們測試了某語音識別引擎在單麥克風和四麥克風環形陣列的識別率對比。另外也要提醒,語音識別率並非只有一個WER指標,還有個重要的虛警率指標,稍微有點聲音就亂識別也不行,另外還要考慮閾值的影響,這都是麥克風陣列技術中的陷阱。

2.jpg

麥克風陣列的關鍵技術

消費級的麥克風陣列主要面臨環境噪聲、房間混響、人聲疊加、模型噪聲、陣列結構等問題,若使用到語音識別場景,還要考慮針對語音識別的優化和匹配等問題。為了解決上述問題,特別是在消費領域的垂直場景應用環境中,關鍵技術就顯得尤為重要。

噪聲抑制:語音識別倒不需要完全去除噪聲,相對來說通話系統中需要的技術則是噪聲去除。這裡說的噪聲一般指環境噪聲,比如空調噪聲,這類噪聲通常不具有空間指向性,能量也不是特別大,不會掩蓋正常的語音,只是影響了語音的清晰度和可懂度。這種方法不適合強噪聲環境下的處理,但是應付日常場景的語音互動足夠了。

混響消除:混響在語音識別中是個蠻討厭的因素,混響去除的效果很大程度影響了語音識別的效果。我們知道,當聲源停止發聲後,聲波在房間內要經過多次反射和吸收,似乎若干個聲波混合持續一段時間,這種現象叫做混響。混響會嚴重影響語音訊號處理,比如互相關函式或者波束主瓣,降低測向精度。

3.jpg

回聲抵消:嚴格來說,這裡不應該叫回聲,應該叫“自噪聲”。回聲是混響的延伸概念,這兩者的區別就是回聲的時延更長。一般來說,超過100毫秒時延的混響,人類能夠明顯區分出,似乎一個聲音同時出現了兩次,我們就叫做回聲,比如天壇著名的回聲壁。實際上,這裡所指的是語音互動裝置自己發出的聲音,比如Echo音箱,當播放歌曲的時候若叫Alexa,這時候麥克風陣列實際上採集了正在播放的音樂和使用者所叫的Alexa聲音,顯然語音識別無法識別這兩類聲音。回聲抵消就是要去掉其中的音樂資訊而只保留使用者的人聲,之所以叫回聲抵消,只是延續大家的習慣而已,其實是不恰當的。

聲源測向:這裡沒有用聲源定位,測向和定位是不太一樣的,而消費級麥克風陣列做到測向就可以了,沒必要在這方面投入太多成本。聲源測向的主要作用就是偵測到與之對話人類的聲音以便後續的波束形成。聲源測向可以基於能量方法,也可以基於譜估計,陣列也常用TDOA技術。聲源測向一般在語音喚醒階段實現,VAD技術其實就可以包含到這個範疇,也是未來功耗降低的關鍵研究內容。

波束形成:波束形成是通用的訊號處理方法,這裡是指將一定幾何結構排列的麥克風陣列的各麥克風輸出訊號經過處理(例如加權、時延、求和等)形成空間指向性的方法。波束形成主要是抑制主瓣以外的聲音干擾,這裡也包括人聲,比如幾個人圍繞Echo談話的時候,Echo只會識別其中一個人的聲音。

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

模型匹配:這個主要是和語音識別以及語義理解進行匹配,語音互動是一個完整的訊號鏈,從麥克風陣列開始的語音流不可能割裂的存在,必然需要模型匹配在一起。實際上,效果較好的語音互動專用麥克風陣列,通常是兩套演算法,一套內嵌於硬體實時處理,另外一套服務於雲端匹配語音處理。

麥克風陣列的技術趨勢

語音訊號其實是不好處理的,我們知道訊號處理大多基於平穩訊號的假設,但是語音訊號的特徵引數均是隨時間而變化的,是典型的非平穩態過程。幸運的是語音訊號在一個較短時間內的特性相對穩定(語音分幀),因而可以將其看作是一個準穩態過程,也就是說語音訊號具有短時平穩的特性,這才能用主流訊號處理方法對其處理。從這點來看,麥克風陣列的基本原理和模型方面就存在較大的侷限,也包括聲學的非線性處理(現在基本忽略非線性效應),因此基礎研究的突破才是未來的根本。希望能有更多熱愛人工智慧的學生關注聲學,報考我們中科院聲學所。

4.jpg

另外一個趨勢就是麥克風陣列的小型化,麥克風陣列受制於半波長理論的限制,現在的口徑還是較大,聲智科技現在可以做到2cm-8cm的間距,但是結構佈局仍然還是限制了ID設計的自由性。很多產品採用2個麥克風其實並非成本問題,而是ID設計的考慮。實際上,借鑑雷達領域的合成孔徑方法,麥克風陣列可以做的更小,而且這種方法已經在軍工領域成熟驗證,移植到消費領域只是時間問題。

還有一個趨勢是麥克風陣列的低成本化,當前無論是2個麥克風還是4、6個麥克風陣列,成本都是比較高的,這影響了麥克風陣列的普及。低成本化不是簡單的更換晶片器件,而是整個結構的重新設計,包括器件、晶片、演算法和雲端。這裡要強調一下,並非2個麥克風的陣列成本就便宜,實際上2個和4個麥克風陣列的相差不大,2個麥克風陣列的成本也要在60元左右,但是這還不包含進行回聲抵消的硬體成本,若綜合比較,實際上成本相差不大。特別是今年由於新技術的應用,多麥克風陣列的成本下降非常明顯。

再多說一個趨勢就是多人聲的處理和識別,其中典型的是雞尾酒會效應,人的耳朵可以在嘈雜的環境中分辨想要的聲音,並且能夠同時識別多人說話的聲音。現在的麥克風陣列和語音識別還都是單人識別模式,距離多人識別的目標還很遠。前面提到了現在的演算法思想主要是“抑制”,而不是“利用”,這實際上就是人為故意簡化了物理模型,說白了就是先拿“軟柿子”下手,因此語音互動格局已定的說法經不起推敲,對語音互動的認識和探究應該說才剛剛開始,基礎世界的探究很可能還會出現諾獎級的成果。若展望的更遠一些,則是物理學的進展和人工智慧的進展相結合,可能會顛覆當前的聲學訊號處理以及語音識別方法。

如何選用麥克風陣列?

當前成熟的麥克風陣列的主要包括:訊飛的2麥、4麥和6麥方案,思必馳的6+1麥方案,雲知聲(科勝訊)的2麥方案,以及聲智科技的單麥、2麥陣列、4(+1)麥陣列、6(+1)麥陣列和8(+1)麥陣列方案,其他家也有麥克風陣列的硬體方案,但是缺乏前端演算法和雲端識別的優化。由於各家演算法原理的不同,有些陣列方案可以由使用者自主選用中間的麥克風,這樣更利於使用者進行ID設計。其中,2個以上的麥克風陣列又分為線形和環形兩種主流結構,而2麥的陣列則又有Broadside和Endfire兩種結構,限於篇幅我們以後的文章再展開敘述。

如此眾多的組合,那麼廠商該如何選擇這些方案呢?首先還是要看產品定位和使用者場景。若定位於追求價效比的產品,其實就不用考慮麥克風陣列方案,就直接採用單麥方案,利用演算法進行優化,也可實現噪聲抑制和回聲抵消,能夠保證近場環境下的語音識別率,而且成本絕對要低很多。至於單麥語音識別的效果,可以體驗下采用聲智科技單麥識別演算法的360兒童機器人。

但是若想更好地去除部分噪聲,可以選用2麥方案,但是這種方案比較折衷,主要優點就是ID設計簡單,在通話模式(也就是給人聽)情況下可以去除某個範圍內的噪音。但是語音識別(也就是給機器聽)的效果和單麥的效果卻沒有實質區別,成本相對也比較高,若再考慮語音互動終端必要的回聲抵消功能,成本還要上升不少。2麥方案最大的弊端還是聲源定位的能力太差,因此大多是用在手機和耳機等裝置上實現通話降噪的效果。這種降噪效果可以採用一個指向性麥克風(比如會議話筒)來模擬,這實際上就是2麥的Endfire結構,也就是1個麥克風通過原理設計模擬了2個麥克風的功能。指向性麥克風的不方便之處就是ID設計需要前後兩個開孔,這很麻煩,例如叮咚1代音箱採用的就是這種指向性麥克風方案,因此採用了周邊一圈的懸空設計。

若希望產品能適應更多使用者場景,則可以類似亞馬遜Echo一樣直接選用4麥以上的麥克風陣列。這裡簡單給個參考,機器人一般4個麥克風就夠了,音箱建議還是選用6個以上麥克風,至於汽車領域,最好是選用其他結構形式的麥克風陣列,比如分散式陣列。

多個麥克風陣列之間的成本差異現在正在變小,估計明年的成本就會相差不大。這是趨勢,新興的市場剛開始成本必然偏高,但隨著技術進步和規模擴張,成本會快速走低,因此新興產品在研發階段倒是不需要太過糾結成本問題,使用者體驗才是核心的關鍵。

不久前,雷鋒網(mooc.ai)已推出了遠場語音互動技術的實戰特訓班,由語音互動專家、聲智科技 CTO 馮大航主講,馮大航老師的介紹如下:

1.jpg

馮大航

馮大航:2007年開始從事語音訊號處理,麥克風陣列訊號處理,語音識別方向研究,在語音互動領域已經積累10年經驗。2007年畢業於中國科學技術大學電子資訊工程系,2007-2012年在中國科學院聲學研究所讀博士,博士期間在陣列訊號處理方向發表多篇SCI、EI論文,2012年獲得中國科學院院長獎學金,畢業後在中國科學院聲學研究所任助理研究員,工作期間獲得國家自然科學基金專案,同時參與了多個國家重大專案;2015年曾任職於雲知聲負責遠場語音識別前端演算法,2016年5月聯合建立聲智科技。

該課程共分四章24個課時,主要講解語音訊號處理,麥克風陣列訊號處理,語音識別中的關鍵技術及實用技巧,通過該課程的學習,可以瞭解目前AI裝置(智慧音響、機器人、車載裝置等)中語音互動的關鍵技術,根據一些開源軟體及硬體裝置可以搭建一套遠場語音識別系統,同時語音訊號處理中的回聲消除、噪聲抑制技術也是VOIP的核心,廣泛應用於各類直播平臺、即時通訊等應用軟體中。

除了在課程中深度的剖析和講解外,馮老師還在課後的評論區和同學們互動交流,探討技術細節。

2.jpg

現將部分探討精選如下:

問題一:

學生:馮老師好!您講到Echo是實時估計說話人方向的,這個比較難,那麼Echo是怎樣做到的呢?

馮大航:其實實時估計說話人的方向技術上難度不大,可以利用語音端點檢測檢測到語音,然後將這段語音分成多段,每段進行DOA估計,最後可以將這些DOA估計結果進行卡爾曼濾波,就可以實現對說話人的跟蹤。但實際中,情況比較複雜,比如旁邊可能突然有人說話,那doa估計可能就會算錯了,現實當中主要是這種方法魯棒性不夠好,你實際使用echo的時候就會發現,如果旁邊放一個干擾源,它的doa也經常會出錯。叮咚音響,已經我們的音響採取的策略就是隻計算一次說話人的方向,增加魯棒性。

問題二:

學生:請問實際工程中麥克陣列和單路回聲消除有哪些差異?麥克風陣列回聲消除的優勢有哪些?

馮大航:麥克風陣列回聲消除有很多種做法,是先每一路做回聲消除,然後再做波束形成,還是先做波束形成,再做回聲消除,再或者是先做一部分回聲消除,做波束形成,做回聲消除。取決於你係統的計算能力,以及波束形成採用什麼結構,這裡很難給出一個定性的結論。一般來說先做回聲消除,再做波束形成效果最好,但計算量最大。

麥克風陣列對回聲消除的作用主要體現在後面的波束形成,去混響等演算法上,因為波束形成也會對回聲有抑制作用。所以總體上看麥克風陣列的回聲消除效果要好於單麥克的回聲消除。

問題三:

學生:在真實環境中,不可避免地會出現多源、混響等情況。請問如何判斷MUSIC演算法中360°beamscan DOA得到峰值的真實性。比如在單源+混響的情況下,麥克風陣列會收到來自不同方向的源和混響訊號,MUSIC的聲源數量引數是否可以取大些,如4。這樣會同時估計到信源方向和混響方向而不影響演算法的魯棒性。

馮大航:這個涉及信源數估計問題,這個問題學術上研究很多,比如最簡單的判斷自相關矩陣的特徵值大小,但實際中效果都不好。MUSIC信源數取的大,會導致有些資訊沒用上,比如原本有3個噪聲向量,你只取了一個,效果肯定不如用3個計算的好。所以music演算法最大的問題是需要預先對信源數估計,而信源數估計又很難,是一個死迴圈。演算法帶來好處的同時,一定有壞處,就看你使用的場景能否忍受這個壞處。

類似這樣學員與老師的問答還有很多,作為學員福利,在7月1日上午10點,雷鋒網特邀請馮大航老師對於課程內容進行直播答疑。為了讓更多對語音、聲學感興趣的童鞋參與進來,我們放出部分參與名額,但為了保證答疑質量,一旦人數達到限制,將關閉報名入口。

本直播直播地址為:http://www.mooc.ai/course/109,可免費觀看,請同學們設好鬧鐘,提前準備好問題前排就坐。也可以加助教微信:mooccai,自報家門和來意。