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

9 評(píng)論 16869 瀏覽 56 收藏 18 分鐘

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

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

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

一、什么是語音喚醒

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

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

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

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

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

其實(shí)到底是否需要語音喚醒這個(gè)能力,也是看場景的,有些廉價(jià)的玩具,就是通過按住按鈕進(jìn)行語音交互的。

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

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

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

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

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

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

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

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

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

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

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

1. 基于模板匹配

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

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

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

2. 基于隱馬爾可夫模型

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

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

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

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

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

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

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

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

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

1. 定義喚醒詞

首先我們需要定義一個(gè)喚醒詞:

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

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

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

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

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

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

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

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

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

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

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

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

這三種方案對(duì)比如下:

4. 測試并迭代

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

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

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

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

五、語音喚醒怎么測試

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

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

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

1. 喚醒率

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

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

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

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

2. 誤喚醒率

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

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

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

3. 響應(yīng)時(shí)間

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

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

4. 功耗

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

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

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

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

1. 喚醒后的反饋

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

一般會(huì)有兩個(gè)可感知的層面上進(jìn)行提示,一個(gè)是聽覺方面,一個(gè)是視覺方面(暫不考慮震動(dòng))。

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

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

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

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

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

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

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

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

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

2. 自定義喚醒詞

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

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

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

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

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

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

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

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

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

七、總結(jié)

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

      來自北京 回復(fù)