編者註:這是微信派《技術盒子》第一期,希望以趣科技,輕科普的方式來跟大家聊聊微信產品背後的故事。極客公園已獲得轉載授權。
原標題:《語音識別揭秘,如何讓微信「聽懂」你的心?》
從 1972 年,一個孤獨程式設計師對著電腦敲下第一句「hello world」開始,人類與人工智慧的溝通與對話,便從未停止。
人類真能教會冰冷的 AI,讓它聽懂我們的話語和呼喚嗎?
我們始終憧憬與暢想,技術也正逐漸打破科幻與現實的分野。史匹柏的《人工智慧》裡,機器人小男孩戴維被一位母親領養回家。通過與人類的朝夕相處,他稚嫩的聲音裡逐漸有了溫情、勇氣與愛。
《生化危機》裡的頂級人工智慧系統「紅色皇后」,以天真小女孩的全息影像出現,但與女主角愛麗絲對話時的冷漠與殘酷,令人不寒而慄。
《三體》中,智子以綿裡藏針的溫柔語調,與兩位執劍人那段字字蘊含深意的「茶道會談」,直接左右了整個人類社會的命運。
一位山東大漢想用車載語音打電話,只用三分鐘就被系統逼瘋了……
芭妖扒拔(8188)!俺是說芭妖扒拔!你聾了嗎!
再比如,遊戲中的你帶隊與敵軍激烈廝殺,和戰友語聊時,竟收到一條這樣的命令:
Excuse me?
被暴打一頓後才得知,老大的原話是「去殺 1 到 5 boss」。
團滅……友誼的小船說翻就翻。
人機溝通的基礎之一,是語音識別。
人與人說話都容易誤解,更何況是人與機器?
也許你會覺得,微信的語音聊天和識別體驗都還不錯。其實,幕後的技術團隊,微信技術架構部語音技術組花了整整 4 年的時間來「教會」微信,如何更好地聽懂人話。
對人工智慧而言,微信語音識別團隊猶如專業而威嚴的老師,讓微信從上線之初的「小學生水平」,成長進化為一個善解人意、能說會道的尖子生:語音識別準確率達到業內領先的 95% 以上,能聽懂英語,普通話和粵語等多種語言。
我們先不講複雜的技術,回到前面鬧笑話的「五泡屎」問題——
別誤會,這不是說你有沒有大舌頭、不識字或重口方言,而是你說話的語氣。
舉個例子,蘋果 Siri 挺聰明吧?通常我們在跟 siri 說話時,會下意識採用朗讀化語音。這種情況下,我們的聲音會將近標準,大大降低了識別難度。
而在遊戲對戰、對話聊天時,因為環境比較輕鬆,語速,口音,吞字,疊字的現象就會非常多,比如「哎臥槽,快快快我快沒血了,奶媽快來加血撒」,這些則大大影響了識別率。
對於中文口語化識別的難題,全世界的科技公司都很頭疼。一旦脫離朗讀化環境,把「布萊恩」聽成「睪丸炎」、「久石讓」聽成「就是了」的案例比比皆是。
微信語音識別團隊解釋,由於隨意性較大,音頻質量參差不齊、語速快,這種情況下,目前較好的語音識別系統也會有將近 25% 左右的字錯誤率。
也許有人拍案而起,我普通話一級甲等,也做到吐字清晰精準了,為啥語音識別起來還是有誤差?
這就要看,你說話時的環境是否嘈雜,另外距離話筒是不是過遠?
比如車載場合,具有回聲或者室外噪音,會導致性能急劇下降;再比如我們如今移動網際網路的使用方式一般叫近景識別,也就是麥克風和聲源距離較近,但是在室內如果距離 1 米以上的應用場景中,仍然距離實用較遠,信號在路徑傳遞中會衰減,也會導致性能的降低。
如何讓人工智慧更懂事?兩個字,做作業!
語音識別來說,讓機器「聽到」更多的數據,可以讓它越來越聰明。但是我們在讓機器學習的時候,必須要告訴他這句話說的是什麼字(即所謂的有監督學習),這樣做數據的積累是緩慢的。
所以,如何讓老師不用一天到晚拿著皮鞭監督,實現無監督訓練或者半監督訓練,讓機器自己能進化,不斷提高自己的性能,也將是技術發展的重要方向。
當程序把一段語音變成文字以後,它並不知道這句話哪裡對,哪裡錯,更不知道這句話是不是一句通順的人類語言。
實際使用中,人們說話的語速、吐字、頻率、音強都不一樣,而且還有方言、周邊環境等問題。總而言之,達到一定的識別率比較容易,但要達到較高標準的識別準確率卻並不是件容易的事情。識別率越往上走,就越難。
不過,微信在介入語音識別領域之後,短短的幾年時間即躋身行業的領先水平,而且還在不斷優化和提升中。
既然無法左右天南海北的用戶怎麼說,那就好好教導微信如何「洗耳恭聽」。
2012 年,微信團隊悄悄開始投入語音系統的研究。
不過,當時的嘗試也僅僅是「謹慎」地上線了個語音提醒的公眾號,並未過多發揮。
直到 2013 年,微信推出的語音輸入在業界獲得了巨大成功,隨後在 2014 年,正式上線了語音轉文字功能。
有意思的是,如此實用的功能,入口卻被微信「藏」的極深,但用戶量越來越多。
你發現了嗎?
語音輸入是在附加菜單裡,語音轉文字必須長按語音消息才能看到。
微信團隊解釋說,微信每一個接口和功能都是極為「克制」的,所有的設計都是跟隨用戶實際需求,而非炫耀技術。入口藏的深一點,可以避免騷擾那些不需要使用該功能的用戶。
回到技術——
首先,微信採用了深度學習法。
簡單而言,語音識別系統的輸入是語音,輸出的是漢字,機器要學習從語音到語言的映射關係。
先說語音,我們要教會微信怎麼聽。人的發聲從聲帶的震動,要經過聲道,口腔,受到其中很多肌肉組織運動的影響,類似原始信號要經過複雜函數的變換,深度學習框架由於具有多層結構,能很好的模擬這種複雜函數。
再說語言,我們要教會微信怎麼懂。通常我們說的話是要符合句法的(組合性),而且要符合搭配習慣(因果性),我們要讓機器學習到這種規律。其中的難點是詞義,比如「知道」和「了解」讀音截然不同,但詞義有時是差不多的。
「研表究明,漢字的序順不影閱響讀。」
「比如當看你完這話句後,會發這現裡的字全是都亂的。」
——小派
你看,很多時候,我們可能不會百分百聽清楚一句話,但是我們還是能夠根據語境和詞語的組合發音方式明白它的意思。
機器深度學習的方式模仿了人類大腦的神經元,當處理的語言越來越多時,這種網絡就可以逐漸理解語言。簡單點說,語音識別系統就好比一個人學一門語言,同等聰明的情況下,聽到的話(訓練數據)越多,越容易識別出好的結果。
微信採用深度學習技術,並且微信擁有龐大的用戶基礎,有天然的語音交互場景,也擁有大量的語音資源積累,這也成為微信語音交互技術迅速發展的重要原因之一。
同時,瘋狂的技術團隊一直在知難而上。
除了深度學習以外,微信還做過哪些努力讓語音識別更好用呢?
微信語音識別團隊一口氣舉了太多例子,小派深思熟慮後,挑了自己能聽懂的來說……
比如,針對口語風格(比如電話)下的性能問題,微信採用了一個良好的分段斷句引擎,融合了音頻屬性,說話人以及部分語義信息,能夠良好的斷句;
為克服噪聲的影響,微信通過模擬真實場景的算法,可以把過去的無噪數據轉換成包含多種不同場景噪聲數據,讓模型在學習內容的同時也學習到了不同的環境幹擾。
對大數據下的難題,由於每個用戶個體的聲音都不一樣,通用模型的長尾問題是導致錯誤發生的重要原因。微信不拘一格,通過算法讓聲學模型在學習的過程中將說話人的信息抹去,這樣的做法也對提升識別率有了一定的幫助。
隨著微信的語音識別技術不斷發展。當識別率越高,就越能給實際場景運用中的用戶帶來更好體驗,甚至會徹底改變玩法,也讓用戶對語音的依賴大大提升。
等 AI 能真正聽懂了,對話還會遠嗎?
開頭那些科幻電影裡的人機語音交互場景,已經看得見摸得著。
正如人有五感一樣,手機也有相應的圖像識別、語音識別、NFC 通訊等等「感官」。尤其語音作為一個重要的入口,蘋果的 siri、微軟的 cortana、google now 等等應用紛至沓來。
很多人都沒留意到,去年底,微信團隊和香港科技大學宣布成立人工智慧聯合實驗室,研究的主要方向是:數據挖掘、機器人對話、機器視覺、語音識別。有龐大的用戶基礎,有天然的語音交互場景,如果將不斷智能化的語音助手作為微信的入口之一,微信的生態會進一步進化。
智能家居、網際網路汽車、智慧醫療、在線教育、自動電話客服、機器同聲傳譯等等領域都將充斥著語音交互技術。想像一下,當你不僅僅可以語音聊天及輸入,而是可以告訴你的鬧鐘晚個 10 分鐘再叫,用語音搜索要去吃飯的餐廳,或者開車的時候隨口發個簡訊或者郵件。甚至,你的機器人助手完全可以聽明白你隨口說的每一句話,像一個擁有智慧的人一樣跟你互動,那會是多麼讓人激動的事情。
這一切必將發生在未來,也許就是不久的未來。
頭圖來自華蓋創意