微軟小冰:全雙工語音對話詳解

講師 | 周力

來源 | AI科技大本營在線公開課

微軟小冰第六代發佈會上正式宣佈上線全新的共感模型,同時也開始公測一種融合了文本、全雙工語音與實時視覺的新感官。這項新技術可以實時預測人類即將說出的內容,實時生成回應,並控制對話節奏,從而使長程語音交互成為可能。而採用該技術的智能硬件設備不需要用戶在每輪交互時都說出喚醒詞,僅需一次喚醒,就可以輕鬆實現連續對話,使人與機器的對話更像人與人的自然交流。

回放地址:https://edu.csdn.net/huiyiCourse/detail/934

本期公開課中,微軟小冰全球首席架構師及研發總監周力博士將介紹微軟小冰在全雙工語音對話方面的最新成果,及其在智能硬件上的應用和未來將面臨的更多技術產品挑戰。

以下是公開課演講速記整理

首先介紹一下微軟小冰在全雙工對話上的部署。我們這套技術事實上是從兩年之前,大約是在2016年的7月份,我們做了第一個落地,那個時候我們是和有信IP電話進行了合作,它可以通過網絡電話,你直接在電話上和小冰聊天,同時我們在北京科技館等等地方,你還能看到小冰的電話亭,你在那裡面就可以跟它去打網絡電話。

微軟小冰:全雙工語音對話詳解

之後我們又和小米合作,在小米控制智能家居的APP米家APP裡做了一個可以接通電話,去控制各種智能家居,包括跟它去聊天,使用各種功能的助手,這個是2017年的6月份。在2018年1月份,我們和小米,還有小米生態鏈的叫Yeelight公司共同推出了一款新的語音設備,它叫Yeelight智能語音盒,這個盒子裡同時擁有小米自己的小愛同學和微軟小冰兩個智能助手。而微軟小冰的這個智能助手使用的就是全雙工語音對話。最後我們和一個叫喵駕的車載系統進行了對接,同時我們和三大運營商有了落地,我們可以直接讓小冰打電話給真實的用戶,這個是全雙工現在的技術使用的範圍。

微軟小冰:全雙工語音對話詳解

我們想給大家定義——到底什麼是全雙工?全雙工語音和我們現在所熟悉的一些語音助手,不管是手機上的,還是在智能音箱上和其他的智能家居,它有什麼樣的不同?

第一,想說明全雙工這個名詞其實並不是人工智能或者說語音AI的時代才出現的,它的英文叫Full Duplex,Full Duplex這個詞事實上早在大概100年前就已經很明確了,它是一個通信的術語,它的通信術語定義的就是一個實時的、雙向的語音信息的交互,就叫全雙工。而我們大家所熟悉的全雙工的最重要的一個應用就是電話,我們以前去打各種各樣的電話,雙方都可以同時說話,這個就叫全雙工。而與之對應的所謂半雙工,其實最典型的傳統設備就是一個步話機,我們大家都知道步話機,我摁下來的時候就只能我這邊在說,我說完了之後我說over,然後對方再把他的步話機的按紐按下去進行對話。這是和全雙工對應的半雙工。

微軟小冰:全雙工語音對話詳解

從通信技術上,如果是人和人之間的對話的話,全雙工我們100年之前就已經解決了。到了現在的人工智能時代,到了語音的時代,我們通信有了一個新的需求,就是人和機器人進行對話,我們不再是兩個人之間,有一方是一個AI。由於一些歷史上的原因,比如說我們最近的10年,即時通訊軟件,不管是它的前輩QQ、微信這些風靡,讓我們人和人之間從一個面對面或者說打電話這樣的一種直接的雙向交流的方式,突然人之間開始嘗試著採用一個不是實時雙向的交流方式。比如說我們有的時候會發個短信,我們會發一個語音的消息,就是人原本的最自然的一種交流的方式,由於科技的發展,我們其實產生了一些分支。那麼作為科技的研究者,我們也就自然而然地開始習慣說當我們切換到一個人和一個人工智能進行交流的時候,我們會首先想到的是,我給你發一條語音消息,然後人工智能給你回一條語音的消息。

我們也看到市面上我們熟悉的絕大多數的智能音箱,或者更早期的在手機上的語音助手,都是這麼實現,發語音消息。很簡單,我發一條消息,收一條消息。所以我們看到語音交互它最開始出現的形態是單輪交互,體現到智能音箱的時候,它其實很不方便,因為智能音箱每次我們都需要一個喚醒詞,我需要說Amazon,巴拉巴拉一句話,說第二句話的時候我還要再說喚醒詞,巴拉巴拉。

微軟小冰:全雙工語音對話詳解

後來,亞馬遜自己也意識到這個問題之後,它開始嘗試進行一些改進。比如說當它進行一個比較複雜的任務,我們說打一輛出租車,其實很難時間、地點用一句話都說清楚,所以它又引入了一個新的概念叫多輪概念,就是當我的任務機器判斷沒有完成的時候,機器把這句話說完了,它重新再把麥克風打開再去聽,這個就叫多輪交互,就是還是像步話機一樣,雙方只有一邊可以說話,但是等AI說完了之後,它會重新打開它的耳朵去聽說接下來人會說什麼。

最後,其實像典型的科大訊飛,它嘗試了一種叫AIUI的一種模式,它在試圖去持續地監聽用戶發進來的語音消息,然後它每聽到給出一個回答。但很可惜,這樣的模式其實有非常大的缺陷,因為每播放一個回答,它其實都需要佔用一定的時間。比如如果一個人連續問了兩個問題的話,對於機器人可能第一個問題沒回答完,第二個問題又出來了,就把原來第一個問題覆蓋掉。這樣的話,一個連續監聽的模式事實上體驗反而比之前的單輪交互、多輪交互要更差,會變得非常零亂,有的時候會讓用戶不知所措。這也正是為什麼雖然科大訊飛應該在我們推出全雙工的模式之後的不到半年,它就在叮咚音箱上給了一個小的開關,說你可以嘗試我的一種新技術叫AIUI,但它其實從來沒有敢在自己的產品裡真正缺省地打開AIUI的模式,因為這裡的問題太多了,它甚至還不如單輪交互,每一次讓用戶說一個喚醒詞方便。

最後我們提到的就是微軟小冰,應該說在全世界首創的這種全雙工的模式,也是Google在去年3月份做了一個很大的發佈會,包括他們宣佈了Google Duplex。全雙工的模式是真正的人和機器都是雙向的脫離掉消息的束縛,我們只有一個連續的上行的語音流,把用戶的聲音傳到人工智能耳朵裡,然後再有一個同步的下行的語音流,把人工智能的話傳到人的耳朵裡,就好像人和人在打一個電話一樣,我們管這個叫全雙工的語音交互。

而從很多實際的使用過我們跟小米推出的Yeelight盒子的用戶的反饋和一些科技媒體的反饋,我們也非常有自信地看到,你一旦習慣了這種全雙工的交互的話,事實上你很難再退回到每說一句話就要說一次喚醒詞這樣的使用習慣,因為它確實很不方便,很不接近於一個自然的交互方式。一旦你習慣了像微軟小冰這樣的全雙工交互,你可能再用別的音箱的話你會頻頻地忘掉說我每說一句話還要講一個喚醒詞,因為那樣實在是太累了,也正是這個原因,我覺得它阻止了智能音箱更好的能像手機,我們都知道,智能音箱現在炒得很火,各大廠商都在瘋狂地去佔領這個山頭,但是我們從用戶的角度來說,沒有覺得它那麼地不可或缺,沒有像我們手中的智能手機一樣,我們恨不得一天都離不開它。為什麼?因為使用它所耗的能量還是太大。我們如果使用它不能很放心地去使用一個設備,我們還需要去記住每說一句話要說一個喚醒詞的話,那麼它一定無法能真正地走入千萬百姓家,它只可能提供到一些科技愛好者,一些原因嘗新的人的小範圍之內。這樣,我們認為全雙工是整個人機之間語音交互的大趨勢。

如果熟悉微軟小冰的人可能會知道,我們從2014年就開始在做一個對話的機器人,在對話過程中我們別發現事實上以前很多的助手它都會看中於說我面向單個任務,比如說我去召喚起一個機器人,我就是為了完成一件事,比如說我要定一個餐,或者說我就要查一下今天北京的天氣,這是傳統像Siri,也包括像微軟自己的Cortana它所面向的一個AI。但是作為一個真正的AI,通過微軟小冰的探索我們越來越相信它其實應該像你身邊的一個普通人,一個朋友一樣,它是一個全程的對話。當我們的對話中可能穿插著很多很多的議題,可能會天馬行空,我跟你對話的目的是說話,是交流的本身,而不僅僅是為了完成某一個任務,這才是真正我們認為對於我們的未來有意義的一個人工智能。

講這麼多,大家可能稍微吊起胃口說如果能實現全雙工的這樣一個人機對話,可能是一個很美妙的東西,但是這個裡面會遇到很多的技術難題,我現在跟大家一一分析說如果我們想實現全雙工,那麼它這裡邊需要有什麼?

第一大技術特徵,我們管它叫邊聽邊想,也就是說不等一句話說完,再進行語音識別。傳統的說,因為以前其他的是我攢夠了一個消息,把語音消息發過來再進行識別。可是大家想,人和人之間的交流其實不是這樣的,我們在開會的時候,通常老闆的問題問到一半的時候,我們已經在開始琢磨該怎麼回答了,這樣老闆語音剛過,我們就可以把答案很流暢地給出來。這個才是人和人之間交流的方式。對於人工智能也一樣,當我交互的方式不再是一個語音消息,而是一個語音流的時候,我就不應該再等到一句話都說完了再進行思考,應該隨時去思考,它聽了一半的話就開始去預測這整句的意思是什麼,這樣它就能以更快的速度把這個回答給出來,而且能實現很多動態的預估。這是其中的一個重要的技術特徵。

微軟小冰:全雙工語音對話詳解

全雙工語音的第二個重要的技術特徵,就是它必須擁有良好的節奏的控制,為什麼?因為到了全雙工的方式,事實上會變得很複雜。比如說我們在微信中大家互相去發語音消息的時候,什麼時候聽我收到的一條語音消息是由接收方來決定的,我收到一條語音消息我可以選擇我現在就把它播出來聽,如果我正好正在說話,我也可以選擇先不聽,等我把這句話錄完了發出去了之後再聽前面的用戶給我發的語音消息,這是由接收方來確定。所以我們以消息進行語音的交互的時候,好像並不覺得節奏控制是一個多麼重要的事情。可是我們一旦進入了一個面對面或者說像電話一樣的模式的時候,它會變得非常重要。

如果有年紀大一點的聽眾的話,他可能會回憶到早年,大概20多年前,如果打一個國際長途,由於那個時候技術的限制,它是有非常高的延遲的,有時候我說一句話,對方可能幾秒鐘之後才能聽到。那個時候人和人之間打國際長途非常容易說亂了,搶話或者說陷入尷尬的沉默,就因為這個裡面有非常高的延遲。人和人之間尚且如此的話,那麼人和機器之間就會有更多的挑戰。

微軟小冰:全雙工語音對話詳解

我們第一個需要面對的挑戰事實上是說AI自己都需要有一個節奏的控制,為什麼?因為AI播的上一句話之間的時候,如果用戶又問了一句,那麼AI準備了下一個答案的時候,在下一個答案已經被準備好的時候,前面的答案,因為每一句話,它的語音事實上佔有了一定的時長,它可能前面的話還都沒有播完,那麼下一句話的答案它已經想好了。這個時候我該怎麼辦?它有很多不同的策略。比如說我認為後面一句話非常重要,我立刻就把後面一句話,前面的話就止住不說了,我把後面一句話說出來;或者我覺得後面的話沒那麼重要,那我就堅持把我現在說的這句話說完就行。最後,還有可能說,我先把我這句話說完了,但是說完之後,第二個問題我也會接著回答。AI自己的話和自己的話之間就有一個很複雜的協調的任務,顯而易見的AI和用戶之間也有一個節奏協調,如果兩個人搶話,那麼AI是不是應該止住嘴去讓著用戶說話?或者說如果AI想說一句話的時候,它是不是會考慮一下說我這句話可能也沒那麼重要,如果這時候對方的用戶正在說,我這句話就不說了?或者反過來是說,我這句話太重要了,雖然你正說到一半,但我也要打斷你。這裡面有很多節奏協調的技巧。這些技巧哪怕是對於我們人類的成年人來說其實都是一種語言的藝術,我在開會什麼時候該我說話,什麼時候不該我說話,這個其實都是一個我們在學習和工作的過程中,其實都會不斷去摸索,不斷去成熟、去掌握的一個技巧,更不要說對於一個人工智能了,這裡面其實我們會有很多新的問題在。

除此之外,原來我們在消息的情況下,通常就是你發一條我發一條,這是一個對稱的對話,但是真正到了雙向實時語音交互的時候,對話有可能就不再是對稱的了,就比如說一個心理醫生和他的病人進行對話的時候,經典的就是有時候心理醫生可能說的很少,他就偶爾去引誘著病人,讓他把自己內心的世界傾訴出來就好了。這種對話中有一個傾聽者,有一個傾訴者。AI和人之間的對話其實也可以這樣,它不一定非得是你說一條我答一條這樣的對稱模式。這裡面就帶來了很多更不一樣的想象空間。

第三個在全雙工中的一個技術特徵就是傳統意義上我們對語音識別的理解,就是我們聽到了一段語音,我們要識別這個語音中所包含的文字,但事實上,在一個真正的全雙工語音的環境中,也就是說對於一個人的聽覺的理解能力來說遠遠不止於此。比如說我們要有對身份的識別,有對聲紋的識別,這句話是我爸爸說的,還是我爺爺在說,還是我兒子在說。還有對背景噪聲的識別,還有回聲消除,然後還要判斷它是不是在和人工智能對話。

微軟小冰:全雙工語音對話詳解

典型的一個例子,比如說我喚醒了一個人工智能,我跟它聊起來了。這時候我突然接了一個電話,從麥克風的收音來講,我看到我還是在說,但其實我說話的對象已經轉移了。那麼我如何能去理解這樣的場景?

最後還有動態音量的識別,我在什麼樣的環境下人工智能應該大點兒聲,什麼樣的情況下應該小點兒聲?這個裡邊有很多以前我們在簡單的語音消息的交互中不需要去考慮的新的有趣的問題,會在人和AI的全雙工語音場景中得到展現。

微軟小冰:全雙工語音對話詳解

最後,如果我們想做一個全雙工的語音對話的話,很重要的我們必須要有一個核心對話的引擎,它其實也是微軟小冰從2014年發佈以來,可能最為廣大用戶所熟知的強項,就是它的通用的語音對話的能力。那麼我們在這個裡面也就是說微軟小冰的語音對話技術,其實最開始我們使用的是檢索模型,就是用一個像搜索的方法,把人類以前說過的話用搜索的方法來尋找一個答案。在大概兩三年前,漸漸地去轉向由深度學習進行的生成模型。至今比如說我們在像微信、QQ,或者那些以消息進行交互的平臺上,我們至今使用的是檢索模型和生成模型的一個混合。但是在全雙工語音環境下,事實上我們發現單純地使用生成模型它的效果更好。這裡邊主要的原因是檢索模型,大家學過搜索的話,它其實是對一些特別不常見的生僻的詞最敏感,哪個詞TFIDF最高,它實際上在搜索上就表達得非常顯著。但是,對於語音識別引擎來講,它如果不小心犯一個錯誤,實際上確實有可能把一個很常見的話,由於我說的不太清楚,經常大家會看到把一個常見的東西會錯誤地識別成一個不那麼常見的東西。由於檢索模型它天生的特性,事實上它可能會放大語音識別的錯誤。而生成模型,由於它深度學習,事實上還是主要學習它一些常見的模板,它對於語音識別結果的容錯性會更高。這其實也是微軟小冰從對話到全雙工語音的探索中得到的一個非常有趣,也希望能跟大家分享的一個經驗。

除此之外,由於你是一個長程的對話,就需要一個更好的對於上下文的理解。然後還有,比如你需要開始去判斷一些在語音消息中不需要判斷的東西,比如說我什麼時候應該掛斷這個電話?因為可能用戶已經不再跟我聊或者說他已經聊的意興闌珊了,這個智能音箱就應該自覺地把自己關掉。這些是我們會在全雙工中遇到的一些新問題。

微軟小冰:全雙工語音對話詳解

未來我們會有各種各樣的發展方向,我們會從個人的場景,比如說打電話這是一個個人的場景,家庭的場景就是我們現在已經發布的Yeelight盒子,車載場景也是我們發佈的。但是再往前走可能在公共場合,比如說一個商場裡有一個導購的設備或者有一個大屏幕的設備,甚至說也許未來的某一天,我們試衣的模特是這樣,也可以跟你進行交互,但是商場裡可能不光你一個顧客,有很多其他的顧客,在公共的場景中他的交互會變得更加複雜。如果你家裡同時有多個人,多臺設備,他們之間的聯動也會非常複雜。

最後一個非常有意思的事情,就是說如果這個機器還有一個眼睛,那麼如何跟視覺的感官去結合?如果你有一雙眼睛,你看到用戶已經在盯著你看說話的時候,可能我們喚醒第一次打通這個電話的喚醒詞都不再需要了。或者說我可以藉助我的眼睛來察覺你的情緒,察覺你是不是在對我說話,去察覺你的對話應該如何進行調整。這裡邊都有很多有意思的事情。

剛才黑色的部分其實更多的是給大家介紹了像產品經理也都會感興趣的,比如對於全雙工的一個新的產品形態,它能為人機語音交互帶來怎樣的不同?它實際上是一個更加複雜,但是擁有更高天花板的一個交互方式。後面我會在剩下的時間,再儘量多講幾點,就是白色底色的就是給技術人員看的更多的全雙工的對話技術的細節。

微軟小冰:全雙工語音對話詳解

前面也主要介紹了它的一些主要模塊,我們現在可以看到這個對比,當我們只需要實現一個以消息作為交互的半雙工的時候,事實上我們基本上只需要三個模塊:語音識別、對話引擎和文字到語音的轉換TTS。而全雙工這邊事實上至少需要有六個模塊,連續的語音識別、語言的對策、對話引擎,然後從文字到語音的轉換,我們有一個叫每輪的控制器和節奏的控制器,至少需要這麼六個模塊。

微軟小冰:全雙工語音對話詳解

下面這一個圖,應該是說這個技術介紹中最重要的一個圖,它會給你去展示全雙工是怎麼進行連續的識別,進行語言的預測和瓶頸的處理。如果大家今天能看懂這一幅圖的話,我覺得今天就沒白來,我試圖給大家去解釋清楚這個圖是什麼意思。

微軟小冰:全雙工語音對話詳解

當用戶去說了一句“我愛你,寶貝”,這個連續的流,從語音流,從客戶端流向了雲端,語音識別它會根據它現有聽到的最新的語音開始嘗試把每一個音節都儘可能地識別出來。這樣的話,我們就會看到它每多聽到一個音節的時候,它就會突出一箇中間的結果,會看到“我,我愛,我愛你,我愛你抱”,這個應該是聽了一半,所以它的想象有些不一樣。然後“我愛你寶貝”。最後再經過確認,確實這個用戶說到這兒的時候有了一定的停頓之後,它最終語音識別的引擎突出了一個最終結果,說這句話最好,最後其實就是“我愛你寶貝”。在這一句話聽完整之前,事實上很多的運算就已經被開始進行了。這裡邊每一個語音識別的中間結果出來的時候,我們都會根據現在的前綴進行一個語言的預測,就是說從概率上來講,也許用戶有可能在說什麼,你可以看到,當看到我的時候,我就算猜也猜不到太多。當出了一個“愛”字的時候,它其實已經能猜到“我愛你”了。但後來出了一個“寶”的時候,話鋒變了,發現這個最終的話其實也不是“我愛你”,是“我愛你寶貝”。最後事實上當最終結果出來的時候,也驗證了我這個猜測是正確的,它就是“我愛你寶貝”。

這裡面一個優勢就是,其實用戶的這個“寶”字剛落下來的時候,經過一個簡單的對策,對話的引擎就已經可以開始計算我應該怎麼回答“我愛你寶貝”這句話,因為圖中的這六條線都在進行平行的計算。等到它確定最後這三個平行的預測全都是正確的時候,它只需要等到這三個回答的計算中最快的那一個結果就可以了,因為它們算的其實都是同一個問題。這無形中就可以讓人和AI進行語音交互時候,AI有機會能更快地去給你一個回覆,而這個對於一個交互的自然度、流暢度是非常重要的。從我們後臺的數據可以看到,哪怕機器的平均回答速度平均起來能快100毫秒,100毫秒其實對於人的感覺來說幾乎是感覺不到的,會覺得1/10秒,人是感覺不到。但是隻要AI的回答速度能快那麼1/10秒的話,那麼人類就會很明顯地更願意跟這個機器人聊得更長,我們可以通過像A/B test這樣的東西能看到這樣的結果。這個就是說,事實上對於人機的語音交互來說,速度是一個非常非常重要的環節。我們有了這種連續識別語音語言的預測,再加上平行的處理,就可以讓機器,讓AI回答得更快,也能讓這整個人機交互變得更加流暢。

微軟小冰:全雙工語音對話詳解

下面一個圖解釋了說我們如何進行一個節奏控制?事實上我們會把機器現在正在說的話和未來可能要說的話建一個池子,然後它就像有一個播放的指針一樣,不斷地從這個池子裡去拿音頻的針,去塞到那個連續的流裡。然後每出來一個新的話的時候,我們會通過各種各樣不同的輸出關係來決定說,我這句話是應該放到播放的最前面,還是應該放到排隊的池子裡,還是應該直接扔掉?有了這樣一個內容的池子的話,我們就可以保證一個穩定的對外音頻的輸出。這個是節奏控制的方法。

最後還有幾分鐘時間,我再給大家介紹一下一對多,我們會說非對稱的這種動態的回覆。這種動態回覆又包括幾點,其中一個叫鋪墊回復,也就是當我覺得可能我還需要想一會兒的時候,人有一個非常重要的技巧,就是我聽到了你的話,我會說,嗯,或者說我想想,或者講英文的人最愛說的well。這句話其實沒有表達任何意思,但它在對話的技巧中非常重要,它是讓用戶立刻知道說我已經聽懂你的意思,我知道你跟我說的話了,但是我正在想。我們在全雙工的AI實現中同樣使用了這樣的技術,就是當我聽到了這句話,當我自己的預測,覺得我需要較長的時間,我可能需要較長時間才能算出最終回答的語音文件的時候,我先要墊一句“嗯”,或者墊一句“我想想”,然後等什麼時候這個語音好了,我就再把它播出來。這樣的話,會很大地減輕用戶能感知的延遲。第二個避免用戶以為你沒有聽見,我又追問了一句。

微軟小冰:全雙工語音對話詳解

類似的,尤其是在遠程的智能家居控制的時候,還有另一種方法,我們叫意圖-執行回覆。就是在聽到中間結果的時候,可能我知道是打開床頭燈,但是我事實上如果真正想要把這個床頭燈打開,這是一個非常複雜的聯動,我需要通過很多的服務器,從雲端落到你家裡的路由器,然後再由路由器把你的智能家居打開,這是一個非常漫長的過程,通常需要兩三秒都是很正常的。對於人工智能來說,這兩三秒我再回答,這會讓用戶說覺得你到底聽沒聽清我?微軟小冰在全雙工使用的方法是:我首先只要識別出你的意圖,那麼我不嘗試真正執行它,我就先給一個對於你的意圖的回覆,就是說我先試試或者說我正在開燈,然後等我的智能操作真正完成了,我拿到了它的智能設備傳回來的返回設備碼的時候,我再告訴他說,你家的智能電視已經打開或者說那個智能電視現在處於離線狀態無法打開,再把真正的結果告訴他。所以一個問題事實上我可以拆成兩步答案再去回答,這是一種非對稱的交互。

微軟小冰:全雙工語音對話詳解

還有更多,比如當一個用戶說“我好無聊,你給我講一個笑話吧”,這個時候人工智能給他講了一個笑話。講完笑話之後,它聽到用戶沉默了,他可能還不高興,它事實上可以過了幾秒鐘之後說,“那我再給你講一個吧”,我可以再講第二個、第三個,直到用戶再說些什麼或者說AI自己也覺得無趣了,它再斷開。我們可以認為一個主回覆中,其實後面可以再掛著很多額外的回覆,如果用戶沒有反應的話,我可以源源不斷地把它播出來。

微軟小冰:全雙工語音對話詳解

最後還有一種方法是遞歸的回覆,事實上你可以每一次回答完成了之後,如果用戶沉默了的話,我可以再向服務端發送一個請求,我再去拿到一些新的內容。這個跟前面這種跟隨回覆的主要不同在於跟隨回覆你是一次把所有的結果都拿到了,它是一個一個播,這樣它就沒有動態調整的能力。而後面這樣的方式,每一次其實它都是一個新的計算,比如我在進行一個新聞的播報的話,我就有機會能夠插入一些突發的新聞或者說完成一些更復雜的交互。這些都是我們在全雙工的技術中引入的一些全新的方式,它也就讓我們人和機器之間的交流,從原來這種一問一答的簡單交互,可以變成一種可以一對多的或者多對一的一個更復雜的非對稱的交互。

微軟小冰:全雙工語音對話詳解

微軟小冰:全雙工語音對話詳解

今天由於時間的限制,我們就先講到這裡,內容比較多,時間比較少,謝謝大家的參與。

QA

1.小冰是基於LSTM的嗎,是檢索性的嗎?

剛才其實我在介紹的過程中已經跟大家去提了,比如說我們在文字或者普通的語音消息的交互中,小冰她是一個檢索式的聊天機器人和深度學習的機器人的融合。全雙工語音她是僅基於深度學習模型的,不過在小冰的實現中我們用的是GRU,不是LSTM,主要的原因就是GRU算得更快,而且她對系統的成本,我們每回答用戶一個問題她的成本會比LSTM更低一點,所以從工程上最終我們選擇了使用GRU,而不是LSTM。通常情況下,類似的模型LSTM得分會稍稍比GRU高一點,但是從工程實踐的權衡來說,小冰幾乎所有的算法最終選擇的都是GRU。

2.預測模型會不會對算力的要求比較高?

確實,本來收到一條消息,我只做一個回答,我如果邊聽邊預測邊去想的話,事實上我就會要去回答好多個問題,就是我聽一句話,從機器的角度,它其實是平行地進行了好多個計算,確實。但是,這樣帶來的益處也是非常明顯的,所以我們也最終選擇了這樣的方式,通過優化我們的系統,讓這樣的平行能變得更有效就可以了。

3.全雙工是實時獲取對方信息的意思嗎?

全雙工的意思就是像打電話,就是你時刻在聽時刻在說,它的上行流和下行流永遠是您每收到一個包你就要發出一個語音包來,哪怕你這個語音包是空包,意思就說我是在沉默。這是一個雙向的對稱的流,這樣我們就叫全雙工。比如你用維基或者百科查一下,這是一個很標準的電話的術語,它的定義是非常清晰的。

4.語音識別都需要依賴服務器嗎?

應該來講,從現在的人工智能的實現來講,你想把那麼複雜的人工智能全部放到客戶端還不太現實,我們有可能放一小部分邏輯在客戶端,但是不管是全雙工的語音實現,還是非全雙工的語音實現,其實絕大多數的邏輯還都是在雲端,而不是在客戶端。否則的話,坦率講,你說你要讓客戶端能進行一些深度學習模型的計算,這個在成本上也不太划算,我一個智能音箱得賣多貴。

5.全雙工怎麼過濾AI自身的音頻?

這裡邊有兩個,一個事實上硬件上是有非常成熟的回聲消解問題,就是絕大多數的智能音箱標準的板上都有回聲消解,因為它播放音和收音從物理上來講它是一個實時的,沒有延遲的系統,它在設備端上很容易把這塊消除進去。從我們經驗來看,除非你把你的智能音箱放到一個大的玻璃板等等的背後,它其實回聲消除的效果已經足夠好,以至於你收到的音其實是聽不到小冰的聲音的,但也確實有一些情況下,其實它還會殘留一些AI自己的聲音。但好在因為AI通常定義自己的聲音,它的聲音是有自己的特徵的。比如小冰的聲音,它是有非常典型的小冰聲音的聲紋的。用戶說的聲紋和小冰自己說的聲紋是不一樣的。所以哪怕設備回聲消除的消解,由於環境的問題,出現了一點點紕疵,它漏了一些音,回到了我收的這個音裡的話,那麼通過聲紋的識別,在絕大多數的情況下還是可以過濾掉,說原來這塊其實不是用戶在說,這是不知道怎麼把這個音反射回來了。所以就是有了聲紋識別的話,就可以為回聲消除上雙保險。

6.小冰是否可以在聊天的過程中進行情感的判斷?

是的,當然這一個問題如果要回答的話就特別複雜了,事實上我們現在有一個很大的議題叫共感模型,也就是我們其實每聽到一句話的時候,如果我們說深度模型,它的輸入不僅是一句話,它還有很多情感的因素,包含了很多上下文的情感因素在這裡邊,這個其實是一個非常複雜的議題,有興趣的人可以去閱讀一下跟小冰有關的一些學術論文,我在這裡確實不是一句兩句能說清楚的,也跟今天全雙工的主題延展得比較遠,就不詳細闡述了。

7.節奏控制裡邊問題的重要性怎麼去評估?

這些評估還是在對話的引擎裡就有一些,除了去回答出那句話的時候,你其實就做一些判斷,它有很多的信號,我這是一個功能,比如是一個智能家居控制的返回,我自然就是一個重要的東西。如果是普通的聊天,可能是一般。如果我聊天的時候發現這個用戶問也沒有問,我的回答其實也不知道該回什麼的時候,我就認為這是一個沒那麼重要的。就是對話引擎的設計中其實能看到很多信號,這些信號都能輔助你去判斷我的這個回答到底是一個重要的回答,還是一個可有可無的回答。

8.語音助手的智能完善度具體是一個怎麼樣的評估?

這個好問題,這點小冰其實有一個業界非常獨特的評估模型,這個評估的模型也非常地簡單粗暴,就是隻要人和人工智能聊得越長,我們認為這個聊天就越成功。我們內部管它叫conversation procession,也就是用戶和一個AI進行了一次對話的時候,它到底有多少個來回?如果認為說用戶說了一句話,人工智能接回來的時候,用戶再說一句話我們就認為是第二輪。通常情況下,像傳統的助理,比如像Siri這樣的助理,它的一次對話的輪數是兩到三輪,但是對於微軟小冰來說,我們在多數的平臺平均是23輪,這是一個非常大的差距。但是從我們過去的經驗來看,這是一個評價對話式人工智能的一個非常重要的因素。

9.小冰在噪聲環境下的效果如何?

這確實是一個非常難的問題,我們首先需要承認的是在噪聲的環境下,不管是半雙工、全雙工,還是怎麼樣,其實都非常有挑戰,這些挑戰可能不光是人工智能的挑戰,可能也需要一些硬件的廠商,設計麥克風陣列他們共同的努力和幫忙,才能解決得更好的問題。可能不僅僅是說我是通過AI或者說雲端的模型就能單純地去解決的一個問題,這個在整個業界都是很難的,效果應該說大家都不太好。

10.用什麼樣的數據結構來保存和更新當前的對話狀態?

其實什麼樣的數據結構不重要,你哪怕就是一個key value table都無所謂,關鍵你能提取到哪些對話狀態?提取得有多準確?這個才是最重要的。

11.如何進行開放域的意圖識別?

我覺得這也是一個非常好的題,做一個比喻,就是說很多做人工智能的話,它會試圖說我聽到一句話,我先去識別它的意圖,比如說這是問天氣還是問教育,我希望把這分成一個個分支,然後我在每一個分支進行單獨的處理。但是從我們小冰在開放領域的對話中的經驗來看,這是一個完全錯誤的方法。就好比說一個披薩上,我們可以撒各種各樣的佐料,可以撒菠蘿、香腸、青椒,但是我們可以認為說,如果說某一種意圖,就是像上面的佐料的話,你哪怕有再多的佐料,你不可能把它拼成一個披薩餅,它一定都會有各種各樣的漏洞,而你真要做一個披薩,你首先要做紮實的是那個最基礎的餅,你先不要看它是什麼意圖,你有一個基礎的通用的對話引擎能力,你在這個基礎之上再去加功能,再去加意圖,再往這個餅上去撒各種各樣的佐料。用這樣的方法才能真正地構建起一個好的人機對話的引擎,如果你試圖把它分解成各個意圖的子問題的話,那麼其實這是一個最終無解的問題。

12.在哪裡能體驗到微軟小冰全雙工電話的功能?

當然了,你如果想要體驗目前小冰實現得最好的全雙工的功能的話,它就是在小米米家賣的Yeelight的語音助手盒子,這個是小冰,包括音樂,包括智能的控制,也包括甚至說那個智能盒子,你找不著手機的時候,它能幫你打通電話,你打通了這個電話又能跟你對話,在功能上是最強大,也是體驗最好的。我們之前暖場的時候放的這些視頻也全都是小米Yeelight盒子的例子。當然了,如果大家說我不想花這個錢的話,相對一個簡單的方法就是下載一個米家的APP,就是小米在控制它的所有智能設備,有一箇中控的APP叫米家,在米家裡它的首頁有一個麥克風,它的麥克風可以支持小冰或者小愛,你到設置裡把它的麥克風從小愛改成小冰,再回到主業去點這個麥克的時候,它就會進入到一個微軟小冰全雙工的電話界面。在這個裡面,就算你家裡沒有真實的小米出的設備也沒關係,因為除了能控制設備以外,事實上你可以去跟它聊天,你可以讓它唱歌講笑話。這個應該是零成本的最方便的體驗全雙工對話的方法。

13.如何保證高效的傳輸效率?

是這樣的,在小冰絕大多數的實現中,我們使用的是RTP的數據壓縮,RTP的數據壓縮事實上是幾乎所有的IP電話使用的一個標準,它最開始應該是Skype做出來並提倡的,所以大多數業界的IP電話其實都在使用這樣的協議。所以如果說智能音箱想要去實現全雙工的話,其實也有大量的開源的東西去實現了這樣的協議,所以它的開發成本其實是挺低的。

好的,今天的主要問題就到這裡,謝謝大家。

(*本文為 AI科技大本營整理文章,轉載請聯繫微信 1092722531)


分享到:


相關文章: