技術(shù)
導(dǎo)讀:當(dāng)我得知,《向往的生活》第四季的贊助商名單里又有小度音箱時(shí),我就知道,有趣的事情又要發(fā)生了。
愉快的周五晚上10點(diǎn),我打開芒果臺(tái),依照節(jié)目的廣告植入設(shè)定,何炅他們每一期都會(huì)命令小度音箱做點(diǎn)什么事,而每當(dāng)電視里的何炅喊“小度小度”,我家的小度音箱就跟著響應(yīng):“在呢!”
那感覺(jué),像家里養(yǎng)了一條會(huì)看電視的狗……
想想都覺(jué)得魔幻,小度在國(guó)內(nèi)市場(chǎng)份額排前三,《向往的生活》收視率在綜藝?yán)镉峙徘叭?。掐指一算,每周五的晚上,?jié)目里的人一喊,世界各地少說(shuō)也得有幾十萬(wàn)個(gè)小度音箱一起被喚醒,場(chǎng)面感人。
類似的情況,在我的蘋果設(shè)備上也發(fā)生過(guò)。
我用電腦開著功放,刷一個(gè)數(shù)碼博主的視頻,只聽視頻里喊了一聲“嘿Siri”,我桌上的手機(jī)就蹦出一個(gè)女聲:“請(qǐng)講……”
我的Siri就這么被別的男人給嘿了,這讓我感到不爽,當(dāng)時(shí)還發(fā)了一條微博吐槽。
印象中,Siri 能用聲紋識(shí)別功能來(lái)辨認(rèn)它的主人,怎么會(huì)出現(xiàn)這種情況?我跑去網(wǎng)上查原理,發(fā)現(xiàn)早些年,華為手機(jī)也被類似吐槽過(guò)。
(沒(méi)有黑華為的意思,這是2016年的帖子,當(dāng)年市面上的語(yǔ)音助手都這個(gè)德行,我不是針對(duì)誰(shuí),在座的各位都……)
還有我公司的那臺(tái)天貓精靈,有時(shí)我們正開會(huì)聊得火熱,它莫名奇妙就蹦出一句話,空氣突然安靜……
我就挺納悶:百度、蘋果、華為、阿里……這些都是科技公司里的扛把子,人工智能領(lǐng)域的佼佼者,為什么還會(huì)出現(xiàn)這種情況,語(yǔ)音喚醒技術(shù)就這么難嗎?
答案:是的。
我甚至找到2017年的一則舊新聞:
一個(gè)值得用收購(gòu)公司的方式來(lái)解決的問(wèn)題,一定值得考究。
智能音箱為何半夜說(shuō)夢(mèng)話,語(yǔ)音助手為何頻頻插嘴?是機(jī)性的喪失還是道德的淪喪?歡迎收看本期淺黑科技之“語(yǔ)音喚醒技術(shù)背后的小秘密”。
Let's Rock!
1.世上本沒(méi)有“語(yǔ)音喚醒”
1952年,計(jì)算機(jī)第一次聽“懂”人類說(shuō)話。
貝爾實(shí)驗(yàn)室里,一個(gè)名叫Audrey的語(yǔ)音識(shí)別系統(tǒng)降生,像個(gè)牙牙學(xué)語(yǔ)的孩子,它只能識(shí)別單個(gè)數(shù)字0~9的英文發(fā)音,而且非常“認(rèn)生”——對(duì)熟人的準(zhǔn)確度超過(guò)90%,對(duì)陌生人則大打折扣。
之后的20年里,語(yǔ)音識(shí)別系統(tǒng)雖然有很大進(jìn)步,但依然停留在孤立單詞識(shí)別的階段,沒(méi)法識(shí)別一整個(gè)句子。
1971年,美國(guó)國(guó)防部研究所(DARPA)開始贊助語(yǔ)音理解研究項(xiàng)目,希望將語(yǔ)音識(shí)別系統(tǒng)的詞匯量提到1000。
參與項(xiàng)目的既有IBM這樣的企業(yè),又有卡內(nèi)基梅隆大學(xué)、斯坦福大學(xué)之類頂尖高校的研究機(jī)構(gòu)。
卡內(nèi)基梅隆大學(xué)研發(fā)的“哈批”(harpy)語(yǔ)音識(shí)別系統(tǒng)拔得頭籌,不僅能識(shí)別1011個(gè)單詞,還能識(shí)別整句話。
從此,計(jì)算機(jī)語(yǔ)音識(shí)別從“單詞時(shí)代”邁入“句子時(shí)代”。
知道了這個(gè)發(fā)展過(guò)程,你就會(huì)明白:從一開始,“關(guān)鍵詞檢測(cè)”就是語(yǔ)音識(shí)別的一部分,或者說(shuō)是“最初形態(tài)”。
有了關(guān)鍵詞檢測(cè),計(jì)算機(jī)聽到“我們?nèi)コ钥系禄?!?/strong>才能檢測(cè)到你吃的究竟是肯德基,而不是肯德,或者別的……
而語(yǔ)音喚醒在學(xué)術(shù)上就叫“關(guān)鍵詞檢測(cè)”(Keyword Spotting),即檢測(cè)一段音頻里是否有特定的詞匯。
我們?cè)谟谜Z(yǔ)音助手時(shí),看起來(lái)是我們說(shuō)出喚醒詞之后,它才開始工作,其實(shí)它每時(shí)每刻都在監(jiān)聽周圍的聲音,檢測(cè)其中是否包含喚醒詞。
20世紀(jì)90年代,人們開始把語(yǔ)音識(shí)別技術(shù)用于消費(fèi)級(jí)產(chǎn)品,也就是賣給普通人用,語(yǔ)音助手一類的產(chǎn)品也開始出現(xiàn),“語(yǔ)音喚醒”變得越來(lái)越重要。
1992年,蘋果對(duì)外演示了一個(gè)名叫Casper的語(yǔ)音識(shí)別系統(tǒng),從形態(tài)上來(lái)看,和如今我們用的語(yǔ)音助手、智能音箱已經(jīng)非常類似,甚至和晚它26年的產(chǎn)品“TNT工作站”有著異曲同工之妙。/狗頭
從上面這段視頻可以看出,每次對(duì)著它說(shuō)話時(shí),都以“Casper”為命令的開頭。顯然,Casper就是它的“喚醒詞”,計(jì)算機(jī)會(huì)嘗試執(zhí)行單詞Casper之后的那一句話。
細(xì)心的觀眾朋友已經(jīng)發(fā)現(xiàn)了,視頻里那個(gè)亞洲面孔是李開復(fù),他是世界上第一個(gè)“非特定人連續(xù)語(yǔ)音識(shí)別系統(tǒng)”的發(fā)明者。視頻里的Casper正是他在蘋果時(shí)期的作品。
關(guān)于Casper,李開復(fù)的自傳里記錄著一個(gè)小故事。
由于種種原因,Casper 語(yǔ)音識(shí)別系統(tǒng)有不小的概率死機(jī),在飛往紐約的飛機(jī)上,蘋果CEO斯卡利憂心忡忡,問(wèn):“開復(fù),有沒(méi)有辦法讓死機(jī)的概率降到1%?”
收看他們直播的觀眾至少有2000萬(wàn),如果死機(jī),那真是出大丑了。李開復(fù)咬了咬嘴唇,說(shuō),“那好吧,約翰?!?/p>
演示當(dāng)天非常順利,節(jié)目播出后,蘋果的股票從60美元漲到63美元。斯卡利問(wèn)李開復(fù):“你到底怎么把死機(jī)率降到1%的?”
李開復(fù)笑著說(shuō):“老板,這很簡(jiǎn)單啊,我?guī)Я藘膳_(tái)電腦,連在一起,如果一臺(tái)出了問(wèn)題,立馬切換到另一臺(tái)。根據(jù)概率原理,一臺(tái)失敗的可能性是10%,兩臺(tái)同時(shí)失敗的概率就是10%×10%=1%,成功的概率自然就是99%了!”
之所以引用這個(gè)故事,我是想說(shuō)明語(yǔ)音識(shí)別需要不少計(jì)算機(jī)資源。當(dāng)時(shí)有新聞報(bào)道說(shuō),這個(gè)語(yǔ)音識(shí)別系統(tǒng)在運(yùn)行時(shí)幾乎會(huì)占用所有計(jì)算機(jī)資源。
這也是為什么,我們?nèi)缃竦闹悄苷Z(yǔ)音助手和智能音箱大多要聯(lián)網(wǎng)才能用,因?yàn)楸镜氐挠?jì)算機(jī)資源帶不動(dòng)(或者功耗大而不適合跑在本地),要把你的聲音傳到云端服務(wù)器,處理完再把結(jié)果傳回來(lái)。
沒(méi)聯(lián)網(wǎng),Siri決定罷工
語(yǔ)音喚醒詞就像一個(gè)開關(guān),告訴機(jī)器什么時(shí)候開始執(zhí)行指令,什么時(shí)候處于待命狀態(tài),不必處理這些聲音。
就像你去餐廳吃飯,如果服務(wù)員無(wú)限多,且很閑,當(dāng)然可以專門安排一位站在桌子旁,你一摘下眼鏡,擦拭布就遞過(guò)來(lái),你一喝完飲料,立刻就給滿上,都不需要你張嘴。
但實(shí)際情況是,餐廳人很多,有幾桌還鬧哄哄的,服務(wù)員就那么幾個(gè),站著待命,誰(shuí)吆喝一聲喚醒詞“服務(wù)員!”他們就立刻過(guò)來(lái)。
到了移動(dòng)時(shí)代,雖然單臺(tái)設(shè)備的計(jì)算力上去了,手機(jī)性能秒殺二十年前的電腦,完全可以滿足離線語(yǔ)音識(shí)別的計(jì)算力需要,但又遇到另一個(gè)問(wèn)題:電池不夠用了。
2.語(yǔ)音喚醒的背后發(fā)生了什么
講到這里,就引出了語(yǔ)音喚醒的四個(gè)關(guān)鍵指標(biāo):功耗、喚醒率、誤喚醒率、響應(yīng)時(shí)間(速度)。
這幾個(gè)指標(biāo),本質(zhì)上是相互制約的。
語(yǔ)音助手表示“我太難了”——既要我“豎起耳朵”努力聽,不漏過(guò)每一個(gè)喚醒詞,又不能太敏感聽錯(cuò),既要反應(yīng)速度快,又不能耗費(fèi)太多力氣。
魚與熊掌不可兼得,怎么辦?答曰:砸錢攀科技。小孩子才做選擇,魚和熊掌我全都要!
細(xì)心的觀眾朋友也許會(huì)發(fā)現(xiàn),2011年的iPhone4s已經(jīng)能嘿Siri,但用起來(lái)很別扭,得手機(jī)插上電源才能嘿。
這個(gè)問(wèn)題在4年后的iPhone6s上怎么解決的呢?得感謝它的好朋友:高通。
2013年,高通公司給他家的CPU芯片加了一個(gè)新功能:即使在休眠狀態(tài)也可以檢測(cè)到用戶的聲音并根據(jù)聲音進(jìn)行相應(yīng)的操作。
大致原理說(shuō)起來(lái)也簡(jiǎn)單,加了一個(gè)功耗特別小的協(xié)處理器,專門負(fù)責(zé)在熄屏狀態(tài)下監(jiān)聽聲音,檢查里面有沒(méi)有喚醒詞。如果沒(méi)有,就讓聲音從左耳朵進(jìn)右耳朵出,一旦發(fā)現(xiàn),就叫醒它的大哥——主處理器。
從此我們終于可以不插電,隨時(shí)隨地嘿Siri了。其他芯片廠基本也是在同一時(shí)期解決的這個(gè)問(wèn)題。
和手機(jī)相比,插著電源用的智能音箱不必?fù)?dān)心電池問(wèn)題,但如果功耗太高,即便放著不用,一天也得浪費(fèi)不少電。
發(fā)展到現(xiàn)在,各大廠商的語(yǔ)音喚醒基本都有“多級(jí)喚醒”(非專業(yè)叫法)的機(jī)制。
你可以簡(jiǎn)單理解為:聲音喚醒的流程就像是工廠里的一道流水線,旁邊依次站著葫蘆七兄弟,大娃時(shí)時(shí)刻刻醒著,檢查其中有沒(méi)有喚醒詞“葫蘆兄弟”。
通常情況下,其他幾個(gè)都在睡覺(jué),節(jié)省體力。
大娃聽到稍微有點(diǎn)像“喚醒詞”的聲音,就趕緊叫醒二娃,錄音給它確認(rèn)。
二娃仔細(xì)一聽,說(shuō)的是“福祿兄弟”,心想莫非主人是弗蘭人?
二娃打了個(gè)電話喊醒云上的三娃,三娃一聽,好像是兩個(gè)人在聊天,一個(gè)人說(shuō):“麻麻,我作業(yè)做完納!可以看會(huì)兒福祿兄弟啵?”
三娃有聲紋識(shí)別的能力,聽出來(lái)是家里小孩在嚷嚷要看動(dòng)畫片,而不想喚醒音箱,便不再繼續(xù)喊醒四娃,轉(zhuǎn)身對(duì)大娃二娃三娃說(shuō)了句:“兄弟們,撤!”幾人扭頭又回去睡覺(jué)了,留大娃繼續(xù)看守。
就這樣,葫蘆兄弟明確分工,每次都在1秒鐘左右完成整個(gè)流程,只有當(dāng)所有人都確認(rèn)是喚醒詞,才開始執(zhí)行命令。
如此一來(lái),既可以降低誤喚醒率,又可以盡可能降低功耗。
我們一起來(lái)看一個(gè)實(shí)際案例:蘋果的Siri。
2017年10月前后,蘋果專門發(fā)過(guò)一篇文章來(lái)講“嘿Siri”是怎么做的。
有興趣的淺友可以自行搜索讀讀這篇原文,沒(méi)興趣的接著往下讀。
iPhone的麥克風(fēng)以每秒1.6萬(wàn)次的速度,把聽到的聲音,切成0.2秒的音頻,丟進(jìn)聲學(xué)模型。
這個(gè)聲學(xué)模型是用深度神經(jīng)網(wǎng)絡(luò)做的,它會(huì)把聲音數(shù)據(jù)轉(zhuǎn)換成概率分布,計(jì)算這個(gè)聲音是“嘿Siri”的可信度。
iPhone6s 以上的機(jī)型都有一個(gè)名叫“始終在線”(Always On Processor)的小型低功耗輔助處理器。也就是前文提到2013年高通做的那個(gè)。
這個(gè)處理器顧名思義,“始終在線”,里面始終跑著一個(gè)很小的,基于深度神經(jīng)網(wǎng)絡(luò)的聲學(xué)模型。
它每次給聲音打個(gè)分,如果分?jǐn)?shù)“及格”,它就會(huì)叫醒主處理器,主處理器再運(yùn)行一個(gè)更大一些的聲學(xué)模型,進(jìn)入更復(fù)雜的評(píng)判流程。
“及格分”并不是一個(gè)固定的值,會(huì)根據(jù)聲音條件自動(dòng)調(diào)整。在“惡劣的聲音條件”下會(huì)更低,Siri 更容易被激活。
深度神經(jīng)網(wǎng)絡(luò)有五層 ,每一層有32或128、192個(gè)單元,具體用多少,根據(jù)內(nèi)存和電源的情況來(lái)分配,以節(jié)省資源。
如果分?jǐn)?shù)及格了,但是不高不低,可能是有點(diǎn)口音,或者有干擾,這時(shí)設(shè)備就進(jìn)入“敏感模式”,持續(xù)幾分鐘,如果再次重復(fù)“嘿Siri”,即便并沒(méi)有比之前更清晰,Siri也會(huì)更容易被激活。
這也許可以解釋為什么“長(zhǎng)沙小燕子”女士(主持人李維嘉的媽媽)用她可愛的塑料普通發(fā)說(shuō)“稀米、稀味”也能喚醒Siri。
需要著重說(shuō)明的是,Siri的大部分工作都在云端,手機(jī)設(shè)備只占很小的一部分。
本地的兩個(gè)處理器都通過(guò)之后,聲波會(huì)被傳送到云端服務(wù)器,進(jìn)行更縝密的確認(rèn)。
比方說(shuō),如果發(fā)現(xiàn)發(fā)音有點(diǎn)像“syria”(敘利亞)、“serious”(嚴(yán)肅的)之類的詞,就會(huì)對(duì)一整句進(jìn)行分析,結(jié)合上下文來(lái)判斷是不是喊“嘿Siri”。
如果最終發(fā)現(xiàn)不是嘿Siri,服務(wù)器就會(huì)向手機(jī)發(fā)送一個(gè)取消信號(hào):“兄弟們,撤!”讓手機(jī)重新進(jìn)入睡眠狀態(tài)。
除了手機(jī)以外,像智能手表、智能音箱、智能無(wú)線耳機(jī)等等也都有類似的“多級(jí)喚醒”思路。
比方說(shuō)國(guó)內(nèi)有一家聲音技術(shù)公司思必馳,阿里巴巴的“天貓精靈”、小米的“小愛同學(xué)”等都有用他們的技術(shù)方案。
在思必馳的技術(shù)方案里,通常情況下,初始語(yǔ)音喚醒的算法運(yùn)行在一個(gè)名叫DSP的小型芯片里,通過(guò)之后,再把緩存的聲音數(shù)據(jù)輸送到一個(gè)叫AP的芯片里。
如果設(shè)備正在播放音樂(lè),就會(huì)切換到“闖入模式”,語(yǔ)音數(shù)據(jù)會(huì)直接傳輸給AP芯片。這樣一來(lái),播放音樂(lè)時(shí)就可以直接說(shuō)“下一首”、“切歌”、“聲音小一點(diǎn)”之類的命令,而不必再反復(fù)地說(shuō)喚醒詞。
除了喚醒驗(yàn)證、聲紋驗(yàn)證之外,思必馳還有一個(gè)名叫“骨導(dǎo)特征檢測(cè)”的奇特功夫,專門給智能耳機(jī)用,據(jù)說(shuō)可以分辨聲音是由空氣傳導(dǎo)還是骨傳導(dǎo),以此分辨是耳機(jī)主人還是周圍的人在說(shuō)話,降低干擾。
所以,一部手機(jī)、一臺(tái)智能音箱擺在桌子上,表面上看起來(lái)風(fēng)平浪靜,也沒(méi)被喚醒,實(shí)則內(nèi)部風(fēng)起云涌,天翻地覆,跟外界產(chǎn)生了千絲萬(wàn)縷的連接。
3.為什么會(huì)被電視機(jī)喚醒?
也許有淺友要問(wèn)了,既然技術(shù)這么溜,為什么到頭來(lái)還是會(huì)被電視節(jié)目里的聲音喚醒?
其實(shí)這是個(gè)玄學(xué)問(wèn)題。
語(yǔ)音識(shí)別分成近場(chǎng)和遠(yuǎn)場(chǎng)兩種,簡(jiǎn)單理解,近場(chǎng)就是說(shuō)話人離麥克風(fēng)很近,遠(yuǎn)場(chǎng)就是離得很遠(yuǎn)。
雖然概念只差一個(gè)字,難度卻相隔十萬(wàn)八千里。
為什么1992年李開復(fù)就做出來(lái)Casper,而2015年智能音箱才真正流行起來(lái)?一個(gè)很重要的原因就是解決不好遠(yuǎn)場(chǎng)識(shí)別的諸多噪音、干擾等問(wèn)題。
還是李開復(fù)的自傳里的一個(gè)故事,有一年愚人節(jié),蘋果的同事把他做的語(yǔ)音識(shí)別系統(tǒng)做進(jìn)電梯,用話說(shuō)控制電梯,很酷吧,可大家走到電梯里,沒(méi)人敢打招呼了,一說(shuō)“Fine thank you and you?”五樓的電梯燈就亮起來(lái)——Fine被識(shí)別成了Five。
遠(yuǎn)場(chǎng)識(shí)別會(huì)帶來(lái)太多不太可控的因素。
聲學(xué)領(lǐng)域有個(gè)概念叫“信噪比”,簡(jiǎn)單理解就是,你要聽的那個(gè)聲音,和噪聲的比例。
近場(chǎng)識(shí)別時(shí),信噪比很高,你要聽的那個(gè)聲音是鶴,噪音是一群雞,當(dāng)然一眼就能把它拎清。
遠(yuǎn)場(chǎng)識(shí)別時(shí),信噪比很低,你要聽的那個(gè)聲音是雞,噪音還是雞,再要從中間挑出來(lái)就很難。
為了解決低信噪比的問(wèn)題,智能音箱除了在算法模型層面下功夫,還得在硬件上下功夫,比如,用多個(gè)麥克風(fēng)組成一個(gè)麥克風(fēng)陣列。
你應(yīng)該有過(guò)類似體驗(yàn):當(dāng)你認(rèn)真聽一個(gè)聲音時(shí),大腦會(huì)自動(dòng)調(diào)集資源,辨別聲音的方位,然后集中處理這個(gè)方向上的聲音,抑制其他方向傳來(lái)的噪音。
麥克風(fēng)陣列的作用類似,每個(gè)麥克風(fēng)只負(fù)責(zé)一個(gè)方向的聲音,它們先對(duì)聲音進(jìn)行“聲源定位”,再用“波束形成”技術(shù)集中收聽這一個(gè)方向的聲音,抑制其他方向的聲音,從而達(dá)到降噪的目的。
雖然這個(gè)方法能解決一部分環(huán)境噪音,但如果有多個(gè)人同時(shí)說(shuō)話,還離得很近,這種技術(shù)就會(huì)大打折扣。
此時(shí),又需要一種叫“語(yǔ)音分離”的技術(shù)來(lái)把重疊在一起的聲音分開。
遠(yuǎn)場(chǎng)識(shí)別需要處理的情況太多太復(fù)雜,所以它是一個(gè)細(xì)活,需要一點(diǎn)一點(diǎn)慢慢打磨。
文章前面,我把語(yǔ)音識(shí)別比作一個(gè)工廠,里頭有一個(gè)長(zhǎng)長(zhǎng)的流水線,旁邊站著葫蘆七兄弟。按照真實(shí)的處理流程之復(fù)雜,葫蘆七兄弟恐怕遠(yuǎn)遠(yuǎn)不夠,得梁山一百單八將都出動(dòng)才行。
4.再給它一些時(shí)間
回過(guò)頭來(lái)一想,我就覺(jué)得其實(shí)沒(méi)必要對(duì)智能音箱太苛刻。畢竟,即便是你,聽見電視里好像有人提到自個(gè)兒名字,也會(huì)一愣神。
人類已經(jīng)進(jìn)化了幾十萬(wàn)年,而動(dòng)物聽覺(jué)誕生的時(shí)間更久遠(yuǎn)。
據(jù)說(shuō),當(dāng)人類“還是一條魚”的時(shí)候,聽覺(jué)就已經(jīng)產(chǎn)生。聲波沖擊魚鰾,引起魚鰾擴(kuò)大或收縮,造成的震動(dòng)刺激內(nèi)耳的靈敏感覺(jué)細(xì)胞,產(chǎn)生聽覺(jué)。
相比之下,計(jì)算機(jī)的語(yǔ)音識(shí)別能力誕生不過(guò)百年,語(yǔ)音助手出現(xiàn)不過(guò)30年,智能音箱從2015年開始流行,如今才幾年?
也許我們應(yīng)該多給它一些時(shí)間。
在寫這篇文章時(shí),我想起2017年天貓精靈剛上市時(shí),我做過(guò)一期調(diào)戲天貓精靈的視頻。
和當(dāng)時(shí)相比,如今的天貓精靈已經(jīng)聰明太多太多,可我有時(shí)竟會(huì)懷念它當(dāng)年的蠢萌帶給我們的快落。
就像一個(gè)總是不分場(chǎng)合亂說(shuō)話的蠢萌朋友,多年以后,他變得成熟、深沉、冷靜,你竟有些懷念當(dāng)年的那個(gè)他。
也許幾十年以后,人工助手變得極度聰明,再也不犯錯(cuò)。那時(shí)我們也老了,也許會(huì)跟兒女、孫子吹牛:“當(dāng)年我們的智能音箱,可蠢可逗了,冷不丁就蹦出一句騷話,比段子還搞笑……哈哈哈哈?!?/p>