本文參考自 ?Machine Learning Journal:https://machinelearning.apple.com/2018/12/03/optimizing-siri-on-homepod-in-far-field-settings.html
關于HomePod
HomePod是蘋果推出的內置Siri智能音箱。當地時間2017年6月5日,蘋果開發者大會2017正式推出了Siri智能音箱HomePod。搭載6個麥克風陣列,4英寸低音炮,底部配有7個揚聲器陣列,內置Apple A8處理器。
首先看一下HomePod的內部結構及用途。Why?因為看了結構才能發現問題,發現了問題才有優化的必要。直接上圖:
圖片可能不是很清晰,這是網上能找到最清晰的了。。頂部是A8芯片,中間是6個麥克風陣列,底部是揚聲器陣列。發現問題了沒?揚聲器和麥克風離得太近了,試想一下,如果在你的耳朵上貼上兩個100分貝以上的揚聲器(如果現實的話),你自己說的話你還能聽見么?
再就是HomePod的使用場景,它是在室內使用的,如下圖:
室內可能有很多噪聲源,比如空調、電視等,再有就是聲音反射造成的回聲。在多個聲源之下去辨別一種聲源也不是很容易。
在以上情況下,按照常理你喊一句“Hey Siri”,這個智障應該是沒有反應的,但是我在入手HomePod以后測試了一下,HomePod正在播放音樂并且我的電視在運行的情況下,在接近房間對角線的距離我正常語速和語調喊了一聲“Hey Siri”,這家伙竟然識別出來了,我后面的語音指令也被正常的識別并執行。
中間肯定有優化的算法,查了查資料,蘋果處理的相當之專業。
HomePod遠場語音識別增強VS其它遠場語音識別增強
其實優化的目標很明確:刨除所有雜音,讓Siri識別器只接受來自指令發出者的語音信號。也就是所謂的語音增強。
HomePod內置了一個多通道信號處理系統,這個多通道信號處理系統主要使用了以下方法:
1)利用深度學習去除回波和背景噪聲的基于掩模的多通道濾波;
2)無監督學習分離同步聲源并觸發基于短語的流選擇以消除干擾語音。
先來看看其他的處理系統是怎么做的。以及HomePod為什么不能用這些技術。??????
1)其他的語音識別增強處理系統通常使用多麥克風處理來增強語音,但往往只關注了問題的一部分,諸如去除混響和噪聲抑制。回溯到上古時代,為了抑制不期望的信號成分,語音增強系統必須使用有監督或無監督的學習方法學習期望和不期望的信號特征。學習完了,這樣再來一段聲音,它就可以根據之前學習的經驗來判斷。近年來,由于深度學習的崛起,語音增強性能有了很大的提高。例如,最前沿的技術是用驅動多通道噪聲抑制濾波器的深度神經網絡(DNN)學習語音存在概率。然而,這些系統通常是建立在這樣的假設下:在運行時能獲取到完整的語音表達,并且系統執行批處理語音命令期間得能利用所有的語音樣本。但是一旦涉及全部,就必定會增加延遲,并且不適用于家庭助理設備(像HomePod)上的以“始終監聽”(因為你不知道用戶什么時候會說“Hey,Siri”,所以你得實時監聽)為模式的語音增強技術。對于HomePod來說,批量語音增強系統的假設是不現實的,因為聲學條件是不可預測的,為啥?因為每個用戶的聲音事先蘋果在訓練模型時是不知道的,而且HomePod也不像iPhone X一樣自帶神經網絡引擎,像FaceID學習用戶面部一樣去學習用戶的聲音。
2)另外,當另一個活躍的談話者,如一個人或一臺電視,與目標談話者在同一個房間時,遠場語音識別變得更具挑戰性。在這種情況下,如果語音命令沒有與干擾的語音組件分離,則語音觸發檢測、語音解碼和端點指向可能會大大降低。傳統上,研究人員要么使用無監督的方法處理語音源分離,比如PCA和聚類,要么使用深度學習。不幸的是,這些理技術在遠程語音命令驅動接口(例如,HomePod的“Hey,Siri”)中的可用性非常有限。此外,聲源分離對語音觸發檢測的影響,以及和“Hey,Siri”一起使用的影響,以前從未被蘋果研究過,風險較大。
下面就說說HomePod的語音識別增強系統和語音信號模型。
HomePod語音識別增強系統和語音信號模型
首先說說語音信號模型吧,有以下式子:
看上去非常唬人,對不對?查了以下蘋果技術文檔中對于這個式子的描述,其實不難理解。
首先看等式左邊這個Yk[n],其中Yk代表麥克風接收的總信號,其中包括雜音、競爭談話者(上邊說的TV、其他人)、回聲、多頻道混響。這個n代表時間的索引,比如第一秒、第二秒等等。所以整個 Yk[n]代表在特定時刻的麥克風接收的總信號。
看了左邊的,是不是對等式右邊也有了一定了解了呢?因為是加法么,所以右面肯定是雜音+多頻道混合+...等等。第一個加數中參數解釋一下:NX代表NX個信號頻道,l代表響應時間的索引,Hk代表從揚聲器發送給麥克風的多頻道響應,Xk代表NX個頻道的音頻反饋信號。所以第一個加數代表著從揚聲器發送給麥克風的信號;第二個加數中Gk代表著從語音源發送給麥克風的多頻道響應,NS代表NS個語音源,p代表著響應時間的索引,Sk代表著NS個語音源。所以第二個加數代表著所有語音源發送給麥克風的信號。第三個加數就很簡單了,代表噪音信號。
所以HomePod這個增強信號系統的目標很明確了:
多通道信號處理系統的目標是提取S語言中的目標語音源。通過消除回聲、混響、噪音和相互競爭的談話者來提高清晰度。下圖顯示了系統的概述。
下面說說這個系統里面的細節(大部分翻譯自原文):
多通道回波抵消
由于揚聲器與HomePod上的麥克風的距離很近,因此在麥克風位置,尤其是當用戶離開設備時,播放信號可能比用戶的語音命令大得多。事實上,回聲信號可能比遠場語音信號大30-40分貝,從而導致在響亮的音樂播放過程中麥克風無法檢測到觸發短語(前文所說的耳朵上貼上兩個100分貝以上的揚聲器)。HomePod實現了多通道回波消除(MCEC)算法,該算法使用一組線性自適應濾波器來模擬揚聲器和麥克風之間的多個聲學路徑,以消除聲學耦合。實際上,有兩個問題限制了MCEC從麥克風中完全刪除設備自己的播放信號:
1)非線性耦合。由于揚聲器的非線性和設備的機械振動,線性系統模型無法捕獲整個回放信號。
2)非唯一解決方案。當從波束形成揚聲器陣列播放多聲道內容時,解決方案可能是非唯一的。
因此,在MCEC之后,需要一個殘余回波抑制器(RES)來去除剩余的回放內容。
基于掩模的回波抑制
在響亮的回放音量下,MCEC通常為成功的觸發短語檢測提供不充分的回波抵消,從而導致剩余的回波水平高于遠場語音10到20分貝。RES被設計用來抑制沒有被線性MCEC建模的回波信號的非線性分量。RES還能減輕殘余線性回波,特別是在存在雙音和回波路徑變化的情況下。
典型的數據驅動殘余回波抑制方法從參考信號和回波抵消信號中提取輸入特征,并使用網絡將抑制增益直接應用于回波抵消信號。在我們的RES方法中,一個DNN接受多個輸入特征并輸出一個語音活動屏蔽的估計值,該估計值被用作多通道維納濾波器(MCWF)的輸入語音存在概率(SPP)。從回波抵消信號中提取輸入特征,并由MCEC提供線性回波估計。
基于掩模的回波抑制方法有幾個好處:
由于對深神經網絡進行了實際回波記錄的訓練,它學會了抑制由揚聲器非線性和特定于HomePod的機械振動引起的殘余回波信號。使用傳統的統計方法,這些扭曲不容易跟蹤和抑制。
由DNN預測的SPP驅動MCWF控制方向零位,在引入低語音失真的同時顯著降低殘余回波。
蘋果還使用SPP驅動MCWF輸出的單通道抑制增益,進一步抑制MCWF未去除的殘余回波。
混響消除
當語音源遠離麥克風時,來自房間的多次反射會產生混響尾,從而降低目標語音的質量和清晰度。麥克風捕捉到的信號可以通過直接聲音(沒有任何反射的語音)、早期反射和后期混響來表征。后期混響會嚴重降低語音識別器的性能。HomePod持續監控房間特性,消除后期混響,同時保留麥克風信號中的直接和早期反射組件。
基于掩模的降噪
除了混響之外,遠場語音通常還受到來自家用電器、暖通空調、通過窗戶進入室外的聲音以及其他各種噪聲源的污染。基于掩模的MCWF是一個強大的工具,用于批量條件下的噪聲魯棒遠場語音識別。與傳統的單通道方法不同,MCWF是一種依賴于信號的波束形成器,它可以在不扭曲目標語音的情況下將空值導向空間局部噪聲源。當使用統計模型或由DNNS學習正確估計SPP時,這種能力是可能的。當批量處理時,這種方法假定噪聲源和語音源不會在活動語音段中移動。
這些最先進的語音增強方法為每個語音創建一個固定的過濾器,使用語音和噪聲的所有聚合估計來增強語音,然后將其輸入識別器。對于這種掩模估計問題,經過訓練識別語音和噪聲的頻譜特性的DNN可以更有效地降低噪聲。然而,為了應對不斷變化的聲環境,需要一個在線降噪系統來跟蹤低延遲的環境噪聲。蘋果建立了一個在線MCWF,只使用當前和過去的麥克風信號來估計語音和噪音統計。此外,蘋果還部署了一個DNN來預測SPP,并驅動MCWF將方向空值轉向干擾噪聲源。
蘋果使用擴散和定向噪聲以及難以統計建模的連續和離散噪聲對內部收集的數據進行了DNN培訓。綜合混合近端語音錄音和僅噪聲錄音,以產生語音加噪聲錄音。這種混合允許我們為SPP生成地面真值(ORACLE)目標。從去噪信號和混響估計中計算了DNN的輸入特性。輸出特征是根據近端語音和語音加噪聲混合計算出的語音活動屏蔽。
自上而下的知識以減輕競爭性語音的無監督學習
其他干擾者對目標語音的破壞對語音增強和識別都具有挑戰性。盲源分離(BSS)是一種能夠以無監督的方式將多個音頻源同時分離為單個音頻流的技術。然而,從多個輸出流中選擇正確的音頻流仍然是一個挑戰,需要自上而下的用戶語音命令知識。除了使用觸發短語“Hey,Siri”作為一個強有力的聲音提示來識別目標流之外,我們還開發了一個相互競爭的談話者分離方法和一個深度學習流選擇系統。
競爭性談話者分離
蘋果采用了一種計算量小的無監督盲源分離學習方法,將麥克風陣列信號分解成獨立的音頻流。所使用的方法利用了競爭源之間獨立性的統計特性和每個源的光譜成分的相關性,并且數值穩定且快速收斂。我們的BSS算法直接從麥克風信號中學習每個新輸入音頻幀處的音頻通道,并以O(m^2)的計算復雜度分離競爭源。
給定子波段的每個震源。它輸出NS給出的流M輸入通道。雖然該算法不受其它傳統方法(如獨立分量分析)所知的頻率排列模糊性的影響,但其輸出源的排列卻不能提前知道。然后需要額外的先驗知識來識別目標流。
基于深度學習的流選擇
噪聲加上殘余回波抑制和源分離算法在該系統中起著互補作用。他們共同學習了聲學環境,并解決了可以使用HomePod的各種條件,例如,安靜的環境、嘈雜的背景、響亮的回放和競爭的談話者。因為在運行時很難獲得有關聲場的先驗信息,而且由于NS的排列BSS的輸出流是任意的,蘋果開發了一個基于深度學習的流選擇系統,用語音觸發器來確定最佳的音頻流。系統基本上利用了設備上的DNN提供的“Hey,Siri”探測器,并持續監控NS+1個音頻流。當檢測到“Hey,Siri”時,每個流都被分配一個優度分數。選擇得分最高的流并發送到Siri進行語音識別和任務完成。
以上就是HomePod語音增強系統的基本原理,如果想細摳所用算法的原理,請自行百度。謝謝。