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