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

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

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

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

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

一、什么是語(yǔ)音喚醒

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

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

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

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

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

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

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

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

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

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

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

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

三、語(yǔ)音喚醒的工作原理是什么

語(yǔ)音喚醒能力主要依賴(lài)于語(yǔ)音喚醒模型(下稱(chēng)“喚醒模型”),是整個(gè)語(yǔ)音喚醒核心。

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

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

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

1. 基于模板匹配

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

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

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

2. 基于隱馬爾可夫模型

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

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

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

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

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

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

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

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

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

1. 定義喚醒詞

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

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

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

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

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

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

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

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

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

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

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

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

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

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

4. 測(cè)試并迭代

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

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

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

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

五、語(yǔ)音喚醒怎么測(cè)試

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

這里說(shuō)到的場(chǎng)景主要包括以下幾點(diǎn):周?chē)胍舡h(huán)境、說(shuō)話人聲音響度、以及說(shuō)話距離等。

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

1. 喚醒率

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

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

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

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

2. 誤喚醒率

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

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

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

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

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

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

4. 功耗

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

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

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

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

1. 喚醒后的反饋

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

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

聽(tīng)覺(jué)方面的反饋,又分為兩種:

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

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

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

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

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

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

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

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

2. 自定義喚醒詞

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

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

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

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

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

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

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

之前就聽(tīng)說(shuō)過(guò)亞馬遜音箱半夜被周?chē)胍粽`喚醒,然后給一些莫名其妙的回復(fù)。想想晚上睡著了,然后音箱突然自言自語(yǔ),想想就比較恐怖。

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

七、總結(jié)

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

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

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

 

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

題圖來(lái)自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)品嗎?作者大人

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

    來(lái)自上海 回復(fù)
  3. 我說(shuō)的方言它能聽(tīng)懂?

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

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

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

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

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

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

      來(lái)自北京 回復(fù)