語音交互:從語音喚醒(KWS)聊起

編輯導語:隨着手機的逐漸智能化,越來越多的手機只要聽到指令就會幫助主人完成一些任務,這就是語音喚醒功能。本文作者圍繞語音喚醒功能,從其應用有哪些、工作原理是什麼、怎樣訓練一個喚醒模型、如何測試等方面展開了詳細地討論。

語音交互:從語音喚醒(KWS)聊起

“Hi siri”、“天貓精靈”、“小愛同學”,我們生活中常常會叫到這些名字,讓她們來幫我們完成一些指令,這個過程就像叫某人幫你做某事的感覺。

而這個叫名字的過程,就是我們今天要聊的語音喚醒。

語音交互:從語音喚醒(KWS)聊起
一、什麼是語音喚醒

語音交互前,設備需要先被喚醒,從休眠狀態進入工作狀態,才能正常的處理用户的指令。

把設備從休眠狀態叫醒到工作狀態就叫喚醒,我們常見的有觸摸喚醒(鎖屏鍵),定時喚醒(鬧鐘),被動喚醒(電話)等,而語音喚醒就是——通過語音的方式將設備從休眠狀態切換到工作狀態。

語音喚醒(keyword spotting):在連續語流中實時檢測出説話人特定片段。

可能有長得好看的同學就要問了,我讓他一直保持工作狀態不可以嗎?

工作狀態的設備會一直處理自己收到的音頻信息,把不是和自己説話的聲音也當作有效信息處理,就會導致亂搭話的情況。而語音喚醒就成功的避開了這個問題,在只有用户叫名字的時候工作,其他時間休眠。

其實到底是否需要語音喚醒這個能力,也是看場景的,有些廉價的玩具,就是通過按住按鈕進行語音交互的。

二、語音喚醒的應用有哪些

語音喚醒目前的應用範圍比較窄,主要是應用在語音交互的設備上面,用來解決不方便觸摸,但是又需要交互的場景。

生活中應用的最好,就應該是智能音箱了,每個品牌的智能音箱都有自己的名字,我們通過音箱的名字喚醒她,和她進行交互,控制家電。

其次就是手機,目前大部分手機都配有手機助手,從蘋果最早的siri到現在的“小愛同學”,讓我們實現了即使不觸碰手機,也可以實現一些操作。

還有一些服務類型的機器人,也會用到語音喚醒。

不過一般機器人會採用多模態的喚醒能力,他會結合語音喚醒、人臉喚醒、觸摸喚醒、人體喚醒等多個維度的信息,在合適的時候進入工作狀態。

語音交互:從語音喚醒(KWS)聊起
三、語音喚醒的工作原理是什麼

語音喚醒能力主要依賴於語音喚醒模型(下稱“喚醒模型”),是整個語音喚醒核心。

喚醒模型主要負責在聽到喚醒詞後馬上切換為工作狀態,所以必須要實時監測,才能做到聽到後及時反饋。由於需要實時響應,以及喚醒模型對算力要求不高等方面原因,一般喚醒模型是做在本地的(區別於雲端的ASR識別)。

這就是我們即使沒有聯網,你叫“小愛同學”,她也會答應你的原因。

喚醒模型的算法經過了三個階段的發展:

1. 基於模板匹配

用模板匹配的方法來做喚醒模型,一般會把喚醒詞轉換成特徵序列,作為標準模板。

然後再把輸入的語音轉換成同樣的格式,使用DTW (dynamic time warping)等方法,計算當前音頻是否和模版匹配,匹配則喚醒,不匹配則繼續休眠。

簡單理解就是找到喚醒詞的特徵,根據特徵制定觸發條件,然後判斷音頻內容是否滿足觸發條件。

語音交互:從語音喚醒(KWS)聊起
2. 基於隱馬爾可夫模型

用隱馬爾可夫模型來做喚醒模型,一般會為喚醒詞和其他聲音分別建立一個模型,然後將輸入的信號(會對音頻信息進行切割處理)分別傳入兩個模型進行打分,最後對比兩個模型的分值,決定是該喚醒,還是保持休眠。

簡單理解就是分別對喚醒詞和非喚醒詞作了一個模型,根據兩個模型的結果對比,決定是否喚醒。

語音交互:從語音喚醒(KWS)聊起
3. 基於神經網絡

用神經網絡來做喚醒模型,可以分為多種:

  1. 有將模版匹配中的特徵提取,改為神經網絡作為特徵提取器;
  2. 也有在隱馬爾可夫模型中,某個步驟使用神經網絡模型的;
  3. 還有基於端到端的神經網絡方案。

凡是用到神經網絡原理的,都可以説是基於神經網絡的方案。

語音交互:從語音喚醒(KWS)聊起

其實喚醒模型工作原理很簡單,就是一直在等一個信號,等到這個信號就切換到工作狀態,只是判斷信號的內部邏輯不同而已。

四、如何訓練一個喚醒模型

一般訓練語音喚醒模型大概需要四個步驟,包括:

1. 定義喚醒詞

首先我們需要定義一個喚醒詞:

定義喚醒詞也是有講究的,一般會定義3-4個音節的詞語作為喚醒詞。像我們常見的“天貓精靈”、“小愛同學”、“小度小度”,全部都是4個音節,由於漢語的發音和音節的關係,你也可以簡單的把音節理解為字數。

喚醒詞字數越少,越容易誤觸發;字數越多,越不容易記憶——這也是一般定義在4個字的原因。

另外這3-4個字要避開一些常見的發音,避免和其他發音出現競合,要不然會頻繁的誤喚醒。

一般喚醒詞會做這樣一個處理,就是喚醒詞中的連續3個字也可以喚醒,比如你喊“小愛同”,同樣可以喚醒你的小愛同學。這是為了提高容錯率所做設定的規則。

2. 收集發音數據

然後就需要收集這個喚醒詞的發音,理論上來説發音人越多、發音場景越豐富,訓練的喚醒效果越好。

一般按照發音人數和聲音時長進行統計,不同的算法模型對於時長的依賴不一樣。基於端到端神經網絡的模型,一個體驗良好的喚醒詞可能需要千人千時,就是一千個人的一千個小時。

收集喚醒詞發音的時候,一定要注意發音的清晰程度,有時候甚至要把相近的音也放到訓練模型中,防止用户發音問題導致無法進行喚醒。

如果用户羣體龐大,甚至考慮該喚醒詞在各種方言下的發音。

3. 訓練喚醒模型

數據都準備好了,就到了訓練模型的階段了,這裏常見的算法有:

  1. 基於模板匹配的KWS
  2. 基於馬爾可夫模型的KWS
  3. 基於神經網絡的方案

這三種方案對比如下:

語音交互:從語音喚醒(KWS)聊起
4. 測試並迭代

最後就是測試並上線,一般分為性能測試和效果測試,性能測試主要包括響應時間、功耗、併發等,這個一般交給工程師來解決。

產品會更關注效果測試,具體的效果測試我們會考慮喚醒率、誤喚醒率這兩個指標,後面的測試環節我們會詳細測試的流程和指標。

產品上線後,我們就可以收集用户的喚醒數據,喚醒詞的音頻數據就會源源不斷。我們需要做的就是對這些喚醒音頻進行標註、收集badcase,然後不斷的進行訓練,再上線,就是這麼一個標註、訓練、上線的循環過程。

直到邊際成本越來越高的時候,一個好用的喚醒模型就形成了。

五、語音喚醒怎麼測試

語音喚醒測試最好是可以模擬用户實際的使用場景進行測試,因為不同環境可能實現的效果不一樣。比如:常見各個廠商説自己的喚醒率99%,很可能就是在一個安靜的實驗室環境測試的,這樣的數字沒有任何意義。

這裏説到的場景主要包括以下幾點:周圍噪音環境、説話人聲音響度、以及説話距離等。

測試的條件約束好,我們就要關心測試的指標了,一般測試指標如下:

1. 喚醒率

喚醒詞被喚醒的概率,喚醒率越高,效果越好,常用百分比表示。

在模擬用户使用的場景下,多人多次測試,重複的叫喚醒詞,被成功喚醒的比就是喚醒率。喚醒率在不同環境下,不同音量喚醒下,差別是非常大的。

用25dB的喚醒詞測試,在安靜場景下,3米內都可以達到95%以上的喚醒率,在65-75dB噪音場景下(日常交談的音量),3米內的喚醒率能夠達到90%以上就不錯了。

所以看到各家喚醒率指標的時候,我們要意識到是在什麼環境下測試的。

2. 誤喚醒率

非喚醒詞被喚醒的概率,誤喚醒率越高,效果越不好,常用24小時被誤喚醒多少次表示。

在模擬用户使用的場景下,多人多次測試,隨意叫一些非喚醒詞內容,被成功喚醒的比就是誤喚醒率。

如果誤喚醒率高,就可能出現你在和別人説話,智能音箱突然插嘴的情況。

語音交互:從語音喚醒(KWS)聊起
3. 響應時間

用户説完喚醒詞後,到設備給出反饋的時間差,越快越好。

純語音喚醒的響應時間基本都在0.5秒以內,加上語音識別的響應時間就會比較長,我們下章再討論。

4. 功耗

喚醒系統的耗電情況,對於電池供電的設備,越低越好。

一般插電使用的音箱還好,對功耗的要求不是很嚴格。但是像手機、兒童玩具等產品,由於是電池供電,對功耗的要求較高。

siri是iphone4s就有的語音助手,但直到iphone6s的時候,才允許不接電源下直接通過語音喚醒siri,當時就是考慮功耗的原因。

六、語音喚醒的其他內容1. 喚醒後的反饋

我們通過喚醒詞喚醒設備後,需要一個及時的反饋,來提醒我們喚醒成功,這就要考驗產品的設計功力了。

一般會有兩個可感知的層面上進行提示,一個是聽覺方面,一個是視覺方面(暫不考慮震動)。

聽覺方面的反饋,又分為兩種:

語音回覆一般常見的有“在的”、“嗯嗯”、“來了”等,都是一些簡短的回覆,表示已經聽到。這幾句TTS的內容需要仔細打磨,反覆調試,才能達到一個理想的效果,建議不要超過1秒。

聲音提示往往是在語音回覆之後,提示用户可以進行語音交互了,一般都是一個簡短的音效,之後就開始收音了。

視覺方面的反饋,也可以分為兩種:

燈效反饋常見於智能音箱的產品上面,他們沒有屏幕,但是也需要在視覺上提示用户,一般不同顏色的燈效,表示機器不同的狀態,是有明確的產品定義的。

屏幕反饋可以做的事情就比較多了,可以根據自己產品的需求,設計提示的強度,是彈出浮窗,還是彈出頁面,根據不同的應用場景來設計,這裏就不展開討論了。

還有一種情況,中間是不需要反饋的,比如“天貓精靈,打開燈”這樣一氣呵成的喚醒+交互,我們只需要執行相應的指令,並給出最後執行結果的反饋即可。

語音交互:從語音喚醒(KWS)聊起
2. 自定義喚醒詞

隨着語音交互的普及,逐漸衍生出一些個性化的需求,大家開始給自己的設備起一個專屬的名字,這就是自定義喚醒詞。

自定義喚醒詞一般會打包成一個輸入框提供給用户,用户只需要在框內按照我們的提示填寫內容即可,在這裏我們可能需要注意以下幾點:

  1. 喚醒詞要有明確的字數限制,比如3-6個字;
  2. 需要檢測填寫的喚醒詞是否含有多音字,並進行提示,或支持注音修改;
  3. 是否替換默認喚醒詞,有時需要新加的喚醒詞替代默認喚醒詞,有時可能是並存的;
  4. 自定義喚醒詞的質量要高,就是前面説過的,相鄰的音節要規避,音節要清晰。
3. 功耗和喚醒率的權衡

還有一個技術上面的問題,就是喚醒的效果要在功耗之間達到一個平衡。

一般在電池供電的產品上,需要有專門控制語音喚醒的獨立硬件,來平衡效果和功耗,達到一個相對理想的水平。

4. 喚醒模型的動態調整

之前就聽説過亞馬遜音箱半夜被周圍噪音誤喚醒,然後給一些莫名其妙的回覆。想想晚上睡着了,然後音箱突然自言自語,想想就比較恐怖。

為了應對這種問題,我們可以動態調整音箱的喚醒閾值,比如正常的閾值是0.9以上進行喚醒,那麼晚上可以根據應用場景,設置為0.8以上喚醒,具體還要看場景和模型的效果。

語音交互:從語音喚醒(KWS)聊起
七、總結

整個過程需要先定義喚醒詞,再根據實際場景選擇模型,收集數據,最後上線迭代。

隨着產品的用户越來越多,訓練數據越來越大,整個喚醒模型進入一個正向循環,再考慮支持自定義喚醒詞的能力。

語音喚醒作為語音交互的前置步驟,主要負責判斷什麼時候切換為工作狀態,什麼時候保持休眠狀態,而這個判斷依據就是語音信息。

本文由 @我叫人人 原創發佈於人人都是產品經理。未經許可,禁止轉載

題圖來自Unsplash,基於CC0協議

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 4329 字。

轉載請註明: 語音交互:從語音喚醒(KWS)聊起 - 楠木軒