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

9 評論 16975 瀏覽 56 收藏 18 分鐘

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

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

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

一、什么是語音喚醒

語音交互前,設(shè)備需要先被喚醒,從休眠狀態(tài)進入工作狀態(tài),才能正常的處理用戶的指令。

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

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

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

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

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

二、語音喚醒的應(yīng)用有哪些

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

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

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

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

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

三、語音喚醒的工作原理是什么

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

喚醒模型主要負責(zé)在聽到喚醒詞后馬上切換為工作狀態(tài),所以必須要實時監(jiān)測,才能做到聽到后及時反饋。由于需要實時響應(yīng),以及喚醒模型對算力要求不高等方面原因,一般喚醒模型是做在本地的(區(qū)別于云端的ASR識別)。

這就是我們即使沒有聯(lián)網(wǎng),你叫“小愛同學(xué)”,她也會答應(yīng)你的原因。

喚醒模型的算法經(jīng)過了三個階段的發(fā)展:

1. 基于模板匹配

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

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

簡單理解就是找到喚醒詞的特征,根據(jù)特征制定觸發(fā)條件,然后判斷音頻內(nèi)容是否滿足觸發(fā)條件。

2. 基于隱馬爾可夫模型

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

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

3. 基于神經(jīng)網(wǎng)絡(luò)

用神經(jīng)網(wǎng)絡(luò)來做喚醒模型,可以分為多種:

  1. 有將模版匹配中的特征提取,改為神經(jīng)網(wǎng)絡(luò)作為特征提取器;
  2. 也有在隱馬爾可夫模型中,某個步驟使用神經(jīng)網(wǎng)絡(luò)模型的;
  3. 還有基于端到端的神經(jīng)網(wǎng)絡(luò)方案。

凡是用到神經(jīng)網(wǎng)絡(luò)原理的,都可以說是基于神經(jīng)網(wǎng)絡(luò)的方案。

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

四、如何訓(xùn)練一個喚醒模型

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

1. 定義喚醒詞

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

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

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

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

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

2. 收集發(fā)音數(shù)據(jù)

然后就需要收集這個喚醒詞的發(fā)音,理論上來說發(fā)音人越多、發(fā)音場景越豐富,訓(xùn)練的喚醒效果越好。

一般按照發(fā)音人數(shù)和聲音時長進行統(tǒng)計,不同的算法模型對于時長的依賴不一樣?;诙说蕉松窠?jīng)網(wǎng)絡(luò)的模型,一個體驗良好的喚醒詞可能需要千人千時,就是一千個人的一千個小時。

收集喚醒詞發(fā)音的時候,一定要注意發(fā)音的清晰程度,有時候甚至要把相近的音也放到訓(xùn)練模型中,防止用戶發(fā)音問題導(dǎo)致無法進行喚醒。

如果用戶群體龐大,甚至考慮該喚醒詞在各種方言下的發(fā)音。

3. 訓(xùn)練喚醒模型

數(shù)據(jù)都準備好了,就到了訓(xùn)練模型的階段了,這里常見的算法有:

  1. 基于模板匹配的KWS
  2. 基于馬爾可夫模型的KWS
  3. 基于神經(jīng)網(wǎng)絡(luò)的方案

這三種方案對比如下:

4. 測試并迭代

最后就是測試并上線,一般分為性能測試和效果測試,性能測試主要包括響應(yīng)時間、功耗、并發(fā)等,這個一般交給工程師來解決。

產(chǎn)品會更關(guān)注效果測試,具體的效果測試我們會考慮喚醒率、誤喚醒率這兩個指標,后面的測試環(huán)節(jié)我們會詳細測試的流程和指標。

產(chǎn)品上線后,我們就可以收集用戶的喚醒數(shù)據(jù),喚醒詞的音頻數(shù)據(jù)就會源源不斷。我們需要做的就是對這些喚醒音頻進行標注、收集badcase,然后不斷的進行訓(xùn)練,再上線,就是這么一個標注、訓(xùn)練、上線的循環(huán)過程。

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

五、語音喚醒怎么測試

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

這里說到的場景主要包括以下幾點:周圍噪音環(huán)境、說話人聲音響度、以及說話距離等。

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

1. 喚醒率

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

在模擬用戶使用的場景下,多人多次測試,重復(fù)的叫喚醒詞,被成功喚醒的比就是喚醒率。喚醒率在不同環(huán)境下,不同音量喚醒下,差別是非常大的。

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

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

2. 誤喚醒率

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

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

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

3. 響應(yīng)時間

用戶說完喚醒詞后,到設(shè)備給出反饋的時間差,越快越好。

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

4. 功耗

喚醒系統(tǒng)的耗電情況,對于電池供電的設(shè)備,越低越好。

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

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

六、語音喚醒的其他內(nèi)容

1. 喚醒后的反饋

我們通過喚醒詞喚醒設(shè)備后,需要一個及時的反饋,來提醒我們喚醒成功,這就要考驗產(chǎn)品的設(shè)計功力了。

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

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

  1. 一種是語言回復(fù)
  2. 一種是聲音提示

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

聲音提示往往是在語音回復(fù)之后,提示用戶可以進行語音交互了,一般都是一個簡短的音效,之后就開始收音了。

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

  1. 一種是燈效反饋
  2. 一種是屏幕反饋

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

屏幕反饋可以做的事情就比較多了,可以根據(jù)自己產(chǎn)品的需求,設(shè)計提示的強度,是彈出浮窗,還是彈出頁面,根據(jù)不同的應(yīng)用場景來設(shè)計,這里就不展開討論了。

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

2. 自定義喚醒詞

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

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

  1. 喚醒詞要有明確的字數(shù)限制,比如3-6個字;
  2. 需要檢測填寫的喚醒詞是否含有多音字,并進行提示,或支持注音修改;
  3. 是否替換默認喚醒詞,有時需要新加的喚醒詞替代默認喚醒詞,有時可能是并存的;
  4. 自定義喚醒詞的質(zhì)量要高,就是前面說過的,相鄰的音節(jié)要規(guī)避,音節(jié)要清晰。

3. 功耗和喚醒率的權(quán)衡

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

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

4. 喚醒模型的動態(tài)調(diào)整

之前就聽說過亞馬遜音箱半夜被周圍噪音誤喚醒,然后給一些莫名其妙的回復(fù)。想想晚上睡著了,然后音箱突然自言自語,想想就比較恐怖。

為了應(yīng)對這種問題,我們可以動態(tài)調(diào)整音箱的喚醒閾值,比如正常的閾值是0.9以上進行喚醒,那么晚上可以根據(jù)應(yīng)用場景,設(shè)置為0.8以上喚醒,具體還要看場景和模型的效果。

七、總結(jié)

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

隨著產(chǎn)品的用戶越來越多,訓(xùn)練數(shù)據(jù)越來越大,整個喚醒模型進入一個正向循環(huán),再考慮支持自定義喚醒詞的能力。

語音喚醒作為語音交互的前置步驟,主要負責(zé)判斷什么時候切換為工作狀態(tài),什么時候保持休眠狀態(tài),而這個判斷依據(jù)就是語音信息。

 

本文由 @我叫人人 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 技術(shù)轉(zhuǎn)的產(chǎn)品嗎?作者大人

    來自北京 回復(fù)
  2. 你好,能加個微信交流嗎

    來自上海 回復(fù)
  3. 我說的方言它能聽懂?

    回復(fù)
    1. 哈哈哈哈,兄嘚那兒的人呀

      來自北京 回復(fù)
  4. ??

    回復(fù)
  5. 優(yōu)秀

    回復(fù)
    1. ????謝謝

      回復(fù)
    2. 有公眾號嗎

      來自北京 回復(fù)
    3. 沒有呢,就是把一些工作經(jīng)驗輸出,再總結(jié)

      來自北京 回復(fù)