【獨家揭秘谷歌語音助理Duplex技術背后運用的技術,真如外界傳聞吊打智障Siri嗎?】谷歌2018年度的開發者大會(GoogleI/O2018)介紹的AndroidP、Gmail、Gboard、TPUv3等眾多新產品和功能中,尤為亮眼的無疑是個人助理Google Assistant中新增加的Duplex,它可以自己給飯館、發廊等商業店面打電話,幫用戶預約時間。
這幾天媒體各種報道與驚嘆,甚至說起吊打智障Siri。小編找到了谷歌AIblog上來自谷歌的工程師首席工程師YanivLeviathan以及工程副總裁YossiMatias的博客,他們在博客中揭秘了Duplex用到的技術。
Google duplex是一種用于特定領域,通過撥打電話執行任務的工具。
特定領域是指比如預定一家餐館、預定一次理發等。Google duplex可以進行非常自然的人機對話,聽起來非常地自然,就像真實的人在進行電話撥打一樣。
Google duplex使用到的技術
借助語言理解、交互、時間控制、語音生成方面的最近技術發展,Google Duplex的對話聽起來相當真實自然。
為了處理上面提到的挑戰,Duplex的核心是一個RNN網絡,它是由TensorFlowExtended(RFX)構建的。為了達到高精度,谷歌用匿名的電話對話數據訓練了Duplex的RNN網絡。
這個網絡會使用谷歌自動語音識別(ASR)的識別結果文本,同時也會使用音頻中的特征、對話歷史、對話參數(比如要預訂的服務,當前時間)等等。
谷歌為每一種不同的任務分別訓練了不同的理解模型,不過不同任務間也有一些訓練語料是共享的。最后,谷歌還利用TFX的超參數優化進一步改進了模型。
輸入語音先經過自動語音識別系統(ASR)處理,生成的文本會與上下文數據以及其它輸入一起輸入RNN網絡,生成的應答文本再通過文本轉語音(TTS)系統讀出來。
總結,Google duplex使用到的技術包括:
1、使用Google自己的ASR(語音識別)技術,將對話方的語音轉化為文字;
2、使用Tensor Flow構建基于RNN(循環神經網絡)的模型,基于匿名電話會話數據語料庫,進行Duplex的訓練,訓練好的模型,可以根據對話方的語音轉化成的文字,生成相應的文字響應;
3、使用綜合TTS引擎(Tacontron和WaveNet),將深度學習模型生成的文字,轉化為語音,作為最終的對話響應;
4、duplex可以和Googleassistant配合使用,Googleassistant可以在后臺調用duplex,進行任務的執行。
Google duplex的對話非常自然的原因
谷歌聯合使用了一個級聯TTS引擎和一個生成式TTS引擎(其中使用了Tacotron和WaveNet),根據不同的情境控制語音的語調。
這個系統還可以生成一些語氣詞(比如“hmmm”、“uh”),這也讓語音變得更自然。當級聯TTS需要組合變化很大的語音單元,或者需要增加生成的停頓時,語氣詞就會被添加到生成的語音中,這就讓這個系統可以以一種自然的方式向對方示意“是的我聽著呢”或者“我還在考慮”(人類說話的時候就經常在思考的同時發出一些語氣詞)。谷歌的用戶調查也確認了人類覺得帶有語氣詞的對話更熟悉、更自然。
另一方面,系統的延遲也要能夠符合人類的期待。比如,當一個人在電話里講了“你好”這樣的簡單句子之后,他們會希望很快聽到一個簡短的回復,這種時候會對延遲更加敏感一些。當AI系統檢測到了需要短延遲的情境時,就會使用更快但精度也更低的模型來處理。在某些極端情況下,系統甚至都不會等待RNN運行,而是直接使用快速逼近模型(通常也會和更慢的正式回應搭配起來使用,就像人類不完全理解另一方的時候會猶豫一樣)。
這樣的做法就可以讓系統達到100ms之內的極短延遲。有趣的是,谷歌發現在某些情況下要增加一些延遲來讓對話聽起來更自然,比如回復一個很復雜的句子的時候。
總結而言:
1、Duplex被限制在特定的領域進行使用,這使得技術人員可以針對該領域進行詳細的技術設計,從而取得有針對性的非常自然的效果;
2、神經網絡模型的輸入不僅是ASR的文字結果,還包括對話的歷史記錄,使得模型可以更好地理解對話的上下文,生成更加準確的響應;
3、Duplex會使用“嗯”、“啊“等表示停頓、思考的語氣詞,或者延長某些詞,好像它正在花時間去思考一個答案,使得語音響應聽起來更加自然;由于人們在進行真實的對話時,有時會期待及時快速的響應,比如說“你好?”在類似的極端情況下,duplex甚至會不等待深度學習模型的響應結果,而是用更快的類似的響應,如此,便使得響應更加地自然。
據悉:今年夏天,谷歌就會開始基于Google Assistant測試Duplex,就從預訂餐館、預訂發廊、詢問節假日的營業時間這樣的事項開始。