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