語音交互:從語音喚醒(KWS)聊起
編輯導(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ò)來做喚醒模型,可以分為多種:
- 有將模版匹配中的特征提取,改為神經(jīng)網(wǎng)絡(luò)作為特征提取器;
- 也有在隱馬爾可夫模型中,某個(gè)步驟使用神經(jīng)網(wǎng)絡(luò)模型的;
- 還有基于端到端的神經(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)練模型的階段了,這里常見的算法有:
- 基于模板匹配的KWS
- 基于馬爾可夫模型的KWS
- 基于神經(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))。
聽覺方面的反饋,又分為兩種:
- 一種是語言回復(fù)
- 一種是聲音提示
語音回復(fù)一般常見的有“在的”、“嗯嗯”、“來了”等,都是一些簡短的回復(fù),表示已經(jīng)聽到。這幾句TTS的內(nèi)容需要仔細(xì)打磨,反復(fù)調(diào)試,才能達(dá)到一個(gè)理想的效果,建議不要超過1秒。
聲音提示往往是在語音回復(fù)之后,提示用戶可以進(jìn)行語音交互了,一般都是一個(gè)簡短的音效,之后就開始收音了。
視覺方面的反饋,也可以分為兩種:
- 一種是燈效反饋
- 一種是屏幕反饋
燈效反饋常見于智能音箱的產(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):
- 喚醒詞要有明確的字?jǐn)?shù)限制,比如3-6個(gè)字;
- 需要檢測填寫的喚醒詞是否含有多音字,并進(jìn)行提示,或支持注音修改;
- 是否替換默認(rèn)喚醒詞,有時(shí)需要新加的喚醒詞替代默認(rèn)喚醒詞,有時(shí)可能是并存的;
- 自定義喚醒詞的質(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é)議
技術(shù)轉(zhuǎn)的產(chǎn)品嗎?作者大人
你好,能加個(gè)微信交流嗎
我說的方言它能聽懂?
哈哈哈哈,兄嘚那兒的人呀
??
優(yōu)秀
????謝謝
有公眾號(hào)嗎
沒有呢,就是把一些工作經(jīng)驗(yàn)輸出,再總結(jié)