轉自:http://blog.csdn.net/jackytintin/article/details/62040823
對於沒有使用過智能音箱的讀者,可以觀看 Echo 的官方廣告,直觀地體驗下智能音箱。
目前的智能音箱多基於語音控制,其基本交互流程可以用圖1 概括:1)用戶通過自然語言向音箱提出服務請求或問題 2)音箱拾取用戶聲
音(音箱本地完成)並分析(一般在服務器端完成)3)音箱通過語言播報(音箱端)和 APP 推送(關聯的手機等)對用戶的請求進行反饋。
圖1. 智能音箱基本交互方式
智能音箱可以以自然的方式(自然語言),為用戶提供一些常用的服務,未來還可能成為為家庭的控制中樞。
從用戶的角度,可直觀感知硬件和功能(圖2)。其中,智能音箱的功能關系到產品設計和用戶體驗, 直接關系到產品的成敗,我們會在產品分析的文章中進行深入分析。本文對智能音箱的硬件及運行在硬件之上,作為音箱“大腦”的系列算法進行簡要介紹,希望讀者能對智能音箱有更全面的了解。
圖2. 智能音箱硬件組成和功能示意
1. 硬件
圖3展示了 Echo 拆解后的部件。可以看到,智能音箱的硬件並不算復雜(相對於無人駕駛等“重型”AI 產品)。但正如下面我們會反復強調的,智能音箱的各個模塊都需要結合生產工藝、算法設計、產品體驗等多個方面進行細致的打磨,才能達到比較滿足的效果,而這其中做出需要多“痛苦的”折衷。
圖3. Amazon Echo 拆解圖【來源】
1.1 外觀設計
智能音箱想要成為常駐案頭的“家庭成員”,其形態必然是經過精心設計,在形狀、大小、燈效甚至重量等因素要充分考慮在內。圖 4 展示了一些智能音箱,讀者可根據自己的審美,判斷下哪些是想要或不想要放在家里的。
圖4. 音箱ID設計(按閱讀順序依次為:Amazon Echo、Google Home、叮咚、若琪、若琪月石、聯想音箱)(僅圖示設計,不代表實際產品尺寸)
ID 設計除了出於美學和交互設計的考慮外,還要和音腔設計(影響音效)、麥列方案(影響語音交互)等相互耦合,需要通盤考慮。
1.2 揚聲器
智能音箱本質上還是一款音箱,因此,提供用戶認可的音質是產品存在的前提。但是智能音箱在揚聲器的選擇上,除了受到音箱尺寸限制,還要考慮麥列的拾間及后續的信號處理。
圖5. Echo 揚聲器及音腔設計【來源】
圖6. 若琪揚聲器及音腔設計【來源】
圖5和圖6分別展示了 Echo 和若琪的揚聲器設計,兩者對比可以看到在選擇揚聲器上的不同折衷和權衡。
-
Echo 采用封閉式揚聲器設計,高音和低音喇叭上下相對,聲音各個方向是對稱的,這有有利於前端信號處理,但音效會受到限制。若琪采用開口式設計,喇叭朝前,這樣音效可以設計的更好,但信號處理難度會大。
-
僅就音效而言,音腔越大越有利於設計,但這會導致最后智能音箱非常笨重。也因此,許多設計上都有音腔部分略微鼓起的外觀設計(如 Google Home,叮咚)。
-
為了支持雙工(例如,在播放音樂的同時可以對音箱下達命令),揚聲器的功率不能太大,這樣就限制了音箱的最大音量。反過來,如果要確保音箱有較大的音量,可能會限制雙工條件下的音箱理解用戶語音的靈敏度。
1.3 麥克風陣列(Microphone Array)
麥克風陣列(以下簡稱麥列),是由一定數目的麥克風組成,用來對聲場的空間特性進行采樣並處理的系統。簡單而言,使用麥列而非單個麥克風,是為了在用戶距離音箱較遠時,依然能夠正常的收聽用戶的語音指令。智能音箱多使用環狀麥列(圖7),目前以 6(+1)麥為主流方案,也有2、4和8麥的產品。
圖7. 6+1 麥列
麥列方案主要受成本和算法兩個因素限制。一方面,雖然麥克風本身成本並不是特別高,但增加麥克風數量需要配套的增加采樣等后續硬件的投入,會大大增加成本。另一方面,麥列涉及一系列算法(見下文),算法設計難度和計算復雜度都會隨着麥克風數量的增加而加大。
在選擇麥克風時,除了指向性、靈敏度、信噪比、頻響范圍、失真度等常規的參數要求,其安放位置、開口設計也要考慮ID設計和揚聲器的位置、功放等,需要全盤考慮。
1.4 主控板
本質上,和手機等移動設備的主板並無差別,包括主板、CPU、存儲器等(如圖8)。主控板的選擇要在滿足響應延遲的前提下,盡量壓縮成本和功耗。
圖8. 全志G102【來源】
1.5 藍牙/WIFI
智能音箱需要服務器提供大部分功能,因此,WiFi 是不可缺少的模塊。有些音箱會通過藍牙同手機通信。
1.6 電池
目前主要的智能音箱還是依賴電源線供電,但不排除隨着電源蓄電能力和成本的改善,智能音箱會向手機一樣,脫離成為可自由移動的設備。如果使用電池,還要結合 ID 設計、音腔設計等因素,合理選擇電池的大小和位置、充電方案等。圖 9 展示的是 Echo Tab 的電池方案。
圖 9. Echo Tab 電池方案設計【來源】
2. 算法
用戶在同音箱進行語音交互的時,后台有一系列算法在支撐的交互的正確進行。
如圖10所示,總體而言,音箱工作時,麥列始終處於拾音狀態(持續對聲音信號進行采樣、量化)。進過基本的信號處理(靜音檢測、降噪等),喚醒模塊會判斷是否出現喚醒詞,如果是,后續語音會進行更復雜的語音信號處理,(理想情況下)得到干凈的語音信號,開始真正的語音交互流程。
圖10. 智能音箱交互
2.1 前端信號處理
2.1.1 語音檢測(VAD)
語音檢測(英文一般稱為 Voice Activity Detection,VAD)的目標是,准確的檢測出音頻信號的語音段起始位置,從而分離出語音段和非語音段(靜音或噪聲)信號。由於能夠濾除不相干非語音信號,高效准確的 VAD 不但能減輕后續處理的計算量,提高整體實時性,還能有效提高下游算法的性能。
VAD 算法可以粗略的分為三類:基於閾值的 VAD、作為分類器的 VAD、模型 VAD。
- 基於閾值的 VAD:通過提取時域(短時能量、短期過零率等)或頻域(MFCC、譜熵等)特征,通過合理的設置門限,達到區分語音和非語音的目的。這是傳統的 VAD 方法。
- 作為分類器的 VAD:可以將語音檢測視作語音/非語音的兩分類問題,進而用機器學習的方法訓練分類器,達到檢測語音的目的。
- 模型 VAD:可以利用一個完整的聲學模型(建模單元的粒度可以很粗),在解碼的基礎,通過全局信息,判別語音段和非語音段。
VAD 作為整個流程的最前端,需要在本地實時的完成。由於計算資源非常有限,因此,VAD 一般會采用閾值法中某種算法;經過工程優化的分類法也可能被利用;而模型 VAD 目前難以在本地部署應用。
2.1.2 降噪
實際環境中存在着空調、風扇以及其他各種各樣的噪聲。降低噪聲干擾,提高信噪比,降低后端語音識別的難度。
常用的降噪算法有 自適應 LMS 和維納濾波等。
2.1.3 聲學回聲消除(Acoustic Echo Cancellaction, AEC)
AEC也是一種常見的技術,在語音通話中,AEC是必不可少的基礎技術。
圖11. AEC 示意【來源】
具體的,AEC 的目的是,在音箱揚聲器工作(播放音樂或語音)時,從麥克風中收集的語音中,去除自身播放的聲音信號。這是雙工模式的前提。否則,當音樂播放時,我們的聲音信號會淹沒在音樂聲中,不能繼續對音箱進行有效的語音控制。
2.1.4 去混響處理
在室內,語音會被牆壁等多次反射,麥克風采集到(圖12)。混響對於人耳完全不是問題,但是,延遲的語音疊加產生掩蔽效應,這對語音識別是致命的障礙。
圖12. 混響【來源】
對於混響,一般從兩個方面來嘗試解決:1)去混響 2)對語音識別的聲學模型加混響訓練。由於真實環境的復雜性,一定的前端去混響算法還是非常有必要的。
2.1.5 聲源定位(Direction of Arrival estimation, DOA)
聲源定位是根據麥列收集的聲音語,確定說話人的位置。DOA 至少有兩個用途,1)用於方位燈的展示,增強交互效果;2)作為波束形成的前導任務,確定空間濾波的參數。
聲源定位有如下常用方法有基於波束掃描的聲源定位、基於起分辨率率譜估計的聲源定位以及 基於到達時間差(Time Difference of Arrival, TDOA)的聲源定位。考慮到算法復雜性和延時,一般采用TDOA方法。
2.1.6 波束形成(Beam Forming, BF)
波束形成是利用空間濾波的方法,將多路聲音信號,整合為一路信號。通過波束形成,一方面可以增強原始的語音信號,另一方面抑制旁路信號,起到降噪和去混響的作用(圖13)。
圖13. 波形成示意圖【來源】
2.2 喚醒
出於保護用戶隱私和減少誤識別兩個因素的考慮,智能音箱一般在檢測到喚醒詞之后,才會開始進一步的復雜信號處理(聲源定位、波束形成)和后續的語音交互過程。
一般而言,喚喚醒模塊是一個小型語音識別引擎。由於目標單一(檢測 出指定的喚醒詞),喚醒只需要較小的聲學模型和語言模型(只需要區分出有無喚醒詞出現),聲學打分和解碼可以很快,空間占用少,能夠在本地實時。
也有喚醒做為關鍵詞檢索(key word search)或文本相關的聲紋識別問題來解決。
2.3 語音交互
語音交互的基本流程如圖16所示。下面分別對各個環節進行簡要介紹。
圖14. 語音交互基本流程
ICASSP’17 關於對話系統的 tutorial ,並附有系統性的參考文獻。
2.3.1 語音識別(Automatic Speech Recognition, ASR)
語音識別的目的是將語音信號轉化為文本。語音識別技術相對成熟。目前,基於近場信號的、受控環境(低噪聲、低混響)下的標准音語音識別能夠達到很的水平。然而在智能音箱開放性的真實環境,語音識別依然是一個不小的挑戰,需要接合前端信號處理一起來優化。
2.3.2 自然語言理解(Natural Language Understanding, NLU)
NLU 作為一個研究課題還遠沒有被解決。但是在限定領域下,結合良好的產品設計,我們還是能夠利用現有技術,做出實用的產品。
可以將基於框架的(frame-based) NLU 分為三個子問題去解決(圖15):
* 領域分類:識別出用戶命令所屬領域。其中,領域是預先設計的封閉集合(如產品設計上,音箱只支持音樂、天氣等領域),而每個領域都只支持無限預設的查詢內容和交互方式。
* 意圖分類:在相應領域,識別用戶的意圖(如播放音樂、暫停或切換等)。意圖往往對應着實際的操作。
* 實體抽取(槽填充):確定意圖(操作)的參數(如確定,具體是播放哪首歌或哪位歌手的歌曲)。
圖15. 基於框架的自然語言理解
2.3.3 對話管理(Diaglou Management, DM)
多輪對話對於自然的人工交互非常重要。比如,當我們詢問“北京明天的天氣怎么?”,之后,更習慣追問“那深圳呢?”而不是重復的說”**深圳明天的天氣怎么?**“
在 NLU 無有得到很好解決的情況下,對話管理似乎不可能。好在限范圍下,結合產品設計,還是能做的不錯。一般的作法是,將輪對話解析出的參數做為上下文(全局變量),帶入到下一輪對話;當前輪對話,根據一定的條件判斷,是否保持在上一輪的領域,是否清空上下文。
不同於純粹的聊天機器的對話管理,智能音箱的對話管理還有實際的操作功能(查詢信息、提供控制指令)。
2.3.4 自然語言生成(Natural Language Generation, NLG)
目前完全自動化的 NLG 方法還不成熟。實際產品中,多采用預先設計的文本模板來生成文本輸出。比如,播放歌曲時,生成語句為:“即將為您播放【歌手名】的【歌曲名】”。
2.3.5 語音合成(Speech Synthesis)
語音合成又叫做文語轉換(Text-to-Speech,TTS),更常見可能是 TTS 這一稱呼。TTS 的終極目標是,使機器能夠像人一樣朗讀任意給定的文本。
評價實用的語音合成系統的兩個主要的標准是1)可懂度(人能夠聽懂)和2)自然度(使人聽着舒服)。目前,可懂度的問題基本得到解決。參數合成和拼接合成是TTS的兩種主要合成方法,其中,參數計算量小,部署靈活,但自然較差;拼接接近真人發音,存儲和計算資源高,一般只能在線合成。例如,Echo 采用的基於單元選擇(unit selection)的拼接合成。
2.4 其他技術
最后,我們簡單列舉一些相對成熟,但還沒有廣泛應用於智能音箱的技術。
聲紋識別
聲紋識別是據語音波形反映說話人生理和行為特征的語音參數,自動識別說話人身份的一項技術。微信中的聲音鎖就是聲紋技術的一項具體應用。
通過聲紋識別,可以設計出更加個性化的服務。
人臉檢測
如果音箱配置為攝像頭,可以通人臉檢測,確定用戶的位置。一方面可以有更好的交互設計,另一方面可以輔助聲源定位。
人臉識別
同聲紋識別類似,人臉識別也可以用來確定用戶的身份。