令人激動的語音UI背後

亞馬遜Echo和Echo Dot智能音箱獲得了成功,它已經使語音命令(通常稱爲語音UI或語音UI)出現在了新技術產品中。在每一部智能手機和平板電腦上,大多數新型汽車上,以及快速增長的音頻產品中,都有這個功能。最終,大多數家用電器,音頻和視頻產品,甚至像健身跟蹤器這樣的可穿戴設備,最終也都會有語音命令功能。

所需信號(用戶的聲音)與噪聲(任何其他聲音)的比率越好,語音UI系統越更可靠地工作。

現在,數以百萬計的語音UI產品已經出現,開始看到消費者對這些設備的預期——以及滿足這些期望的挑戰性。有限的成功以及更原始的語音命令產品表明,除了瞭解喚醒詞,比如"Alexa"或者"OK Google",消費者不願意適應這些產品可能對他們的其他要求,比如按下按鈕叫醒設備,或直接進入遠程控制。至少在家裏,消費者期望一個語音UI產品來響應來自房間的指令,如果可能的話,甚至是來自不同房間的指令。無論房間的聲學特性如何,不管產品放在房間的哪個位置,都期望可靠的聲音識別,希望語音UI即使在中等噪音的環境噪聲下也能工作。

雖然先進的語音識別系統依賴於基於互聯網的計算能力,但語音UI系統的大部分性能取決於系統接收的語音信號質量。"garbage in, garbage out",同樣適用於這些系統,就像它適用於任何其他技術一樣。對噪音(任何其他聲音)所需信號(用戶的聲音)的比例越好,語音UI系統就越可靠。

語音UI系統使用多個麥克風接收指令,聲音識別系統的準確性很大程度上取決於這些陣列是否能夠專注於用戶的聲音,以及拒絕不必要的刺激,如環境噪聲或設備本身發出的聲音。對於優化這些陣列和控制算法的大多數研究都是開發這些產品的公司密切關注的,這使得產品開發者較少。

讓事情變得複雜的是對麥克風陣列設計的不熟悉。 雖然無數的工程師擁有擴音器設計和應用方面的專業知識,但在麥克風上經驗要少得多——儘管大多數工程師的耳朵通常能夠對揚聲器的問題有一個粗略的概念,但是要評估麥克風的性能則要困難得多。 當一個陣列的麥克風數量成倍增加時,挑戰就變得越來越複雜。 現在,工程師必須確定哪些類型的麥克風最適合陣列使用,使用的麥克風數量,以及放置的物理配置。

然後需要一個處理算法,使麥克陣列能夠識別用戶聲音的方向,並在拒絕其他聲音的同時專注於這個聲音。許多這樣的算法都是可用的,但所有的算法都必須優化,以適應麥克風的性能,陣列的大小和配置,以及安裝外殼的聲學效果。

語音UI中使用的麥克風

在語音UI產品中使用的幾乎都是單音麥克風。MEMS(Micro Electrical Mechanical Systems)在設計語音UI產品的麥克風陣列中有許多優勢:

小尺寸: MEMS通常每邊不超過5毫米,因此可以在一個小的產品中安裝多達7個麥克風。表面安裝設計進一步減少了他們的痕跡。

低成本: 隨着產品中麥克風數量的增加,成本成爲一個重要的考慮因素。 MEMS集成電路往往是廉價的,它們也可以與具有PDM (脈衝數字調製)端口的處理器直接接口,而不需要昂貴的A/D轉換器。

一致性: 麥克風陣列的可預測功能要求陣列中的多個指標匹配良好。由於 MEMS麥克風的製造採用了一個完全自動化的過程,就像用來製造IC一樣,所以單元間的一致性通常是好的。

在語音UI產品中使用的大多數麥克風都是全向的,可以從各個方向接收聲音。 由於麥克風陣列的方向性是通過一種算法而不是通過麥克固有的方向性來構建的,所以使用全向麥克可以讓算法在處理各種麥克風信號時在拾取波束的方式上具有完全的靈活性。

全向麥克的另一個好處是,它們比定向麥克風更能滿足頻率響應。這種特性降低了算法的處理負載,因此,在產品組裝中的方向不再是問題。在可用的MEMS 麥克風選擇中,麥克風陣列設計師可以從敏感性、噪聲、頻率響應匹配以及數字和模擬輸出等一系列功能和特性中進行選擇。

語音UI算法的組件

語音UI產品中的算法實際上是幾種算法的集合,每個算法都有一個特定的功能,可以幫助麥克風陣列專注於用戶的聲音,忽略不需要的聲音。下面是語音UI中通常算法的簡要描述。

觸發/喚醒詞

語音UI系統使用一個指定的喚醒詞,如"Alexa"或者"OK Google"——用戶使用這個單詞來激活語音UI設備。這個喚醒詞會有挑戰的,因爲設備必須立即在設備上使用自己的算法進行識別,而使用互聯網資源會造成太多的延遲。設備必須在某種程度上保持活躍,因爲它必須不斷地監聽喚醒詞。

選擇一個合適的喚醒詞,對操作語音UI設備至關重要。喚醒詞必須足夠複雜,以便在麥克風輸出處產生一個獨特的波形,該算法可以很容易地區分出正常的語音,否則成功識別的百分比可能低得令人無法接受。喚醒詞不能是通常使用的單詞或短語,否則誤喚醒的頻率可能高得令人無法接受。它也不應該太長,因爲越長的短語,用戶就越有可能認爲這個設備很糟糕。通常,用三到五個音節的喚醒詞是最好的選擇。

在評估喚醒詞算法的性能時,需要考慮兩個主要因素。首先,當沒有喚醒時,算法多久會指示一個喚醒? 這被測量爲每小時誤喚醒。其次,算法在背景噪聲的存在下能否正確地檢測到喚醒詞?這是以識別率來衡量的。

大多數喚醒算法都有不同的尺寸。 小型的算法可以減少內存和CPU處理,但會有多一些的錯誤; 大型算法需要更多的資源,但是犯錯更少。模型也是可調整的,允許產品設計師使他們更嚴格(更少的誤喚醒但較難喚醒)或者更寬鬆(更多的誤喚醒但更容易喚醒)。大多數產品設計師選擇更加嚴格的調整,因爲當用戶在發佈命令時往往會接受偶爾重複自己的話,但他們對誤喚醒卻不那麼寬容。

"選擇一個合適的喚醒詞以納入算法,是喚醒詞識別的關鍵,從而操作語音UI設備。"

假喚醒是通過播放數小時的口語內容並計算誤喚醒的頻率來衡量的。在這個測試中,不同的模型大小在性能上的差異變得很明顯。圖1比較了用於不同調優的小型、中型和大型喚醒詞模型的性能。 在這種情況下,每小時不超過一次的錯誤觸發是一個合理的目標。 這個小模型只能通過圖左邊兩個最嚴格的調整來實現這一點。 中型和大型模型在更廣泛的操作範圍內實現這一目標。


圖1: 用小型、中型和大型算法模型測試每小時誤喚醒,左邊更嚴格,右邊更寬鬆

在測量噪聲喚醒算法的性能時,研究表明,在環境噪音的存在下,決定喚醒識別率的主要因素是在麥克風上測量的信噪比(SNR)。"信號"表示人的聲音對着麥克風的聲音有多大,而"噪音"是背景噪音的水平。 在測試中,使用"babble"噪音來模擬家庭中典型的噪音和波形。 圖2顯示了三個模型大小的圖形,所有模型已經調整到每小時不到兩個錯誤的誤喚醒。X軸代表 SNR,其較高的信噪比向右。 Y軸是識別的概率。 在大多數情況下,算法在1或2分貝內有相同的性能。

我們應該注意到,相對於大多數音頻播放設備的SNR爲80至120分貝,10分貝左右的信噪比似乎是不可接受的。 然而,在語音UI應用程序中,用戶的聲音通常只比周圍噪音大幾分貝,如下圖所示,10到20分貝的 SNR 可以在語音UI應用程序中提供的結果。 因此,儘管在音頻播放系統中同樣的增長在主觀上是不易察覺的,但SNR增加2分貝可以顯著提高語音UI的性能,。

"... SNR 增加2分貝可以顯著提高語音UI的性能,即使同樣的增長在主觀上在音頻播放系統中是不明顯的。"


圖2: 觸發單詞檢測作爲 SNR 函數的性能。 三種不同模式測試,模型越大,性能越好。

DOA 波達方向

一旦喚醒詞被識別,下一步就是確定用戶聲音的到達方向。 一旦確定了方向,DOA算法就會告訴beamformer算法把注意力集中在哪個方向。

DOA算法的核心功能是檢查陣列中不同的麥克風發出信號的相位或時延關係,並利用這些信息確定哪一個麥克風首先接收聲音。 然而,這個任務比看起來要複雜得多。 由於房間裏的牆壁、地板、天花板和其他物體的反射,用戶的聲音也會從其他方向傳來,而不僅僅是直接從用戶的嘴裏傳來。 最初的聲音是所有的 DOA確定所需要的,後來的反射必須被過濾掉。 爲此,DOA 算法包括優先邏輯,它將較大聲音的初始到達和較爲安靜的反射分開。這個功能通過電子方式消除了房間內的聲音反射,如果仔細調整,這個算法甚至能夠拒絕附近表面的反射,比如在一個智能音箱的後面有一堵牆。

通過對環境噪聲水平的自動調整,增強了 DOA 算法的運算效果。該算法測量房間內的平均噪音水平,並且只有當輸入的信號至少超過環境噪聲一定的分貝時,纔會重新計算用戶的發聲位置。 這樣,系統就可以鎖定一個特定的方向,而不會被相對較低的噪音分散注意力。

測量 DOA 算法的準確性,需要通過將麥克風陣列周圍的8個揚聲器均勻地分佈在半徑1米的圓上,以此來測量 DOA 算法的準確性。 所有8個揚聲器都播放漫反射場背景噪音,而一個揚聲器除了發出噪音之外還有喚醒詞。聲音水平固定在60 dBa, 測量的麥克風和漫反射場噪音的水平是不同的,如圖3所示。


圖3: 矩陣顯示波達方向測試的結果。 

行索引對應聲音來自的實際方向; 列索引表示 DOA 算法返回的方向。 

將矩陣壓縮成一個數字,代表算法在特定噪音水平上的整體精確性。 在 DOA 算法中,根據它們與正確值的距離來權衡錯誤,因此使用的單數結果是某個 SNR 的度數誤差。圖4顯示DOA算法在一個非常小的平均誤差下運行良好。


圖4: DOA 綜合結果。 

X軸代表了喚醒詞的信噪比,Y軸是偏差誤差。

 DOA算法在大於0 dB的SNR上開始提供有效性能,SNR的精確性能在5dB以上。

AEC 回聲消除

在一個集成了揚聲器或汽車音響系統的語音UI設備中,干擾語音指令的一種噪音來源是揚聲器本身,它可以播放聲音反饋、音樂、收音機等等。 語音UI設備必須在麥克錄音時減去揚聲器發出的聲音。

這看起來可能很簡單,就像將揚聲器的反相信號與來自麥克風的信號混合,稍加延遲,以彌補聲音從揚聲器傳到麥克風所需的時間。 然而,這個過程僅僅是一個 AEC 算法的起點; 它不足以處理現實世界應用程序所帶來的許多複雜問題。

第一個複雜因素是,揚聲器、用於平衡揚聲器的 DSP 和陣列中使用的麥克風可能被具體材料改變了波形。 幸運的是,可以將麥克的輸入信號與原(dsp)輸入信號進行比較,並計算出修正曲線。

然而,也受到聲波反射的影響。 這些反射可能數以千計,在一個大的起居室裏,他們可能在發言者發出直接聲音後一秒鐘內後到達麥克風。根據房間模式和房間傢俱的吸收效果,反射譜含量將不同於說話者直接聲音的內容。 這些影響在每個環境中都會有所不同,而且隨着人們和寵物在房間裏走動,或者隨着車內乘客數量的變化而改變。

爲了從麥克風信號中減去足夠多的聲學回波以達到可接受的信噪比,AEC 算法必須在一定誤差範圍內尋找與材料相匹配的聲音(以彌補聲學引起的波形變化) ,並且在一個定義的時間窗口上對應於預期的混響時間。 由於陣列中的麥克風之間的距離,每個麥克風接收到一組略微不同的回聲和來自揚聲器的不同直接聲音,所以實現最大的信噪比需要對每個麥克風進行單獨的 AEC 處理。

回波消除器的性能通常由其"回波返回損耗增強"或 ERLE 來定義。 這是增益的減少,回波消除器能夠減少在麥克風上的揚聲器信號。 回波消除器一般可以取消至少25分貝,具有良好的性能,最好的可以取消超過30分貝。

AEC尋找反射的時間被稱爲"回聲尾長" 回波尾長度越長,可以取消的反射越多,算法的性能就越好。 然而,更長的波尾需要更多的內存和CPU。圖5顯示了回波返回損失作爲尾長的函數。 這種測量是在一個半消聲室中進行的。可以看到,大部分都是通過200毫秒的尾長和較長的波尾來實現的。


圖5: 回波消除器的性能作爲尾長的函數。

 測量是在一個半回聲的聲音室進行,表明200毫秒之後幾乎沒有改善。

半回聲的房間是相當容易處理,但不代表真實世界的使用。 圖6顯示了回波消除器在逐漸增加的混響室中的性能。 現在對於更長聲尾的需求是顯而易見的,最大的反射空間可以從更長的回聲尾中受益。


圖5: 4個房間中的回聲消除測試

當揚聲器以線性方式執行時,AEC 算法的性能更好。 如果揚聲器在很大的程度上表現出失真,那麼將產生失真諧波,而 AEC 將不會認識到這些是原反射,因此不能取消它們。 揚聲器的總諧波失真(或 THD)是其線性程度的度量。 THD 佔信號水平的百分比越低,說話人的行爲就越靈活。 由於 AEC 無法取消,揚聲器的失真將出現在 AEC 的輸出中。

例如,如果揚聲器有1% 的 THD,那麼失真組件將比信號水平低40分貝。 如果回波消除器有30 dB 的 ERLE,那麼 THD 爲1% 是可以接受的。 現在考慮一下10% 的 THD。 在這種情況下,失真組件是低於信號水平20分貝,這將會淹沒 AEC。 3% 的 THD 將產生30分貝以下的失真,這仍然會影響 AEC。

重要的是要測量整個系統,包括揚聲器和麥克風。 僅僅測量揚聲器的聲學輸出是不夠的,因爲用於許多語音UI產品的外殼可以直接從揚聲器傳到麥克風上。 考慮下一頁圖7所示的圖。 這個圖表顯示了用外部參考麥克風測量揚聲器的 THD。 每一行代表一個不同的播放級別。 對於每一個回放級別,記錄測量的 SPL 和在整個音頻頻譜的多個頻率的 THD。 圖上的圓形氣泡表明,測量的 THD 只出現在 THD 高於3% 的水平。 揚聲器的行爲是線性的,只有在很大的程度時,纔會在較大的扭曲。


圖7: 利用外置麥克風測量揚聲器失真情況。 揚聲器是線性的,只有在高SPL時纔會扭曲。

這種測量方法現在正在重複使用機載語音接收麥克風,它位於一個典型的帶有語音UI的"智能揚聲器"的外殼頂部。 在這種情況下,如圖8所示,在500至800赫茲的範圍內,與500至800赫茲的麥克風結合在一起,這是不可接受的; 必須重新設計,以增加剛度和更好的隔音效果。


圖8: 用產品本身的麥克風測量同一個揚聲器的畸變,聲音會在500至800赫茲之間的失真。

Beamforming 成形

多麥克風陣列常用於語音UI系統的原因是,多個麥克風可以使陣列變得方向化ーー專注於來自特定方向的聲音。 這個過程被稱爲成形過程。 它有助於隔離用戶的聲音,同時拒絕來自其他方向的聲音,提高了 SNR。

例如,如果用戶在麥克風陣列的一邊,而另一邊是空調,空調器的聲音首先到達用戶對面的麥克風,然後到達用戶最近的麥克風。 算法使用這些時差來消除空調聲音,同時保留用戶的聲音。

陣列中的麥克風越多,有效的波束形成效果就越好。一個有兩個麥克風的陣列取消聲音的能力有限,但是一個有多個麥克風的陣列可以抵消來自更多方向的聲音。麥克風越少,性能就會隨着視角的變化而變化——用戶的聲音和語音UI產品之間的角度變化而變化。

可以通過動態調整其性能優化 SNR 以形成波束算法。 可以收緊波束寬度,以便更好地關注用戶的聲音,更有效地拒絕來自其他方向的聲音,但語音UI系統將需要評估和調整並確保波束集中在用戶身上。 這種努力增加了對系統的需求,因此大多數波束維持一個相當寬的光束。 例如,一個典型的七麥克風陣列的波束寬度相對於DOA而言大約爲60度。

圖9顯示了波束形成消除背景噪音的能力。 上面顯示了一個麥克風的頻譜。 底部的數字是一個7麥克風的輸出。 水平條紋是與語音信號相關的和聲,背景的橙色/紅色是嘈雜的噪音。 理想的結果將是被黑暗區域所包圍的條紋。 在前置波束的測量中,語音被保留下來,背景噪聲減少了6到7分貝。這在語音識別方面提供了明顯的改進。

圖9:  beamformer的實現來減少背景噪音, 暗段對應於較低的信號水平。

Noise Reduction減噪

雖然麥克風陣列系統使用方向拾取模式來過濾掉不想要的聲音(比如噪音) ,但是有些不想要的聲音還可以通過一種算法來減弱或消除,這種算法可以識別它們與所需信號分離的特性,然後去除不需要的聲音。 一個減噪算法可以運行在一個單一的麥克風或一個陣列,可以幫助喚醒詞識別和提高語音UI性能。 因此,減噪可以用於語音UI信號處理鏈的多個階段。

聲音命令是暫時的事件,而不是穩定的狀態。 任何存在的或重複的聲音,都可以從麥克風陣列發出的信號中被探測到並消除。 例如汽車的道路噪音,以及家庭中的洗碗機和暖通空調系統的噪音。 高於或低於人類聲音頻譜的聲音也可以被過濾。

減噪算法已經被廣泛使用了很多年,但是大多數都是針對手機應用而不是語音UI優化的。 它們傾向於強調對人類理解最重要的頻譜,而不是電子頻譜中最關鍵的聲音分離和理解語音指令的系統。 大多數用於手機的降噪算法實際上降低了語音UI的性能。 簡單地說,人類聽到的東西和語音UI系統不同。

一個衡量降噪算法工作效果的方法是看看它在回波消除器的輸出中提供了多少額外的dB信號。 圖10顯示了 DSP 在頻域降噪算法的性能,減少了多達12dB 的殘餘回波。


圖10: 減噪算法對 ERL 的影響。 曲線越高,衰減越大,效果越好。

聲音質量的主觀提高立即得到了認可,但是它能改善語音識別算法的性能嗎? 這需要額外的測量來量化。 圖11重現了圖2中的那些曲線, 與原始內容相比,噪聲減小使曲線向左移動了2分貝。 實驗結果表明,該算法提高了語音識別的整體性能。


圖11: 減噪算法對 ERL 的影響。 曲線越高,衰減越大,效果越好

這就是對語音UI系統基本原理的理解。 進一步,可以研究不同的麥克風陣列配置和不同的麥克風選擇的影響。 在檢查了這些效果之後,工程師和產品設計團隊可以爲產品獲得更可靠的性能。

(本文編譯自 www.dspconcepts.com的白皮書FUNDAMENTALS OF VOICE UI



瞭解了這些語音UI背後的技術之後,來看看我們的產品吧。



ps

官網購買地址: https://dumall.baidu.com 

京東購買地址: https://item.jd.com/7344084.html


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章