專利名稱:程序、聲音交互設備、和聲音交互方法
技術領域:
本發明涉及程序、聲音交互設備、和聲音交互方法,尤其涉及使會話能夠以自然和像人那樣的方式進行的程序、聲音交互設備、和聲音交互方法。
背景技術:
傳統聲音交互設備的主要目的是執行諸如“通過電話預約空中走廊(booking passage by air by telephone)”之類的單一任務。
傳統聲音交互設備與忠實地按照單一腳本去做的用戶進行交談來完成任務。如果用戶輸入了沒有出現在腳本中的聲音,傳統聲音交互設備就輸出諸如“我不明白(I don′t understand it)”或“請回答‘是’或‘否’(Pleasereply in yes or no)”之類的應答消息,然后,在那里等待著,直到輸入下一個聲音。
當虛擬世界中諸如機器人或圖像對象(譬如,計算機游戲中的角色)之類的對象與用戶交談時,除了上述簡單任務所需的會話之外,這樣的對象需要以自然和像人那樣的方式,例如,通過漫無目的地和用戶聊天,與用戶交談。聊天可能包括返回含有玩笑話的回答。
即使把傳統聲音交互設備安裝在該對象上,該對象也不能以自然和像人那樣的方式與用戶交談。
由于如下三方面原因,使傳統聲音交互設備執行以自然和像人那樣的方式交互式地交談的處理不是一種有效的方法。
原因之一,“傳統聲音交互設備由利用狀態轉換模型描述的單一腳本構成,難以為模型配備自然和像人那樣會話的處理。”狀態轉換模型是等效于所謂自動機的模型,這種自動機是用諸如描述“如果在狀態A下輸入B,那么,輸出C和使狀態A過渡到狀態D(if B is inputin a state A,C is output and the state A is shifted to a state D)”之類的描述表達的。
為了使狀態轉換模型除了能夠進行面向目的的會話之外,還能夠進行諸如聊天和玩笑話之類的自然和像人那樣會話,設計者必須預測在所有狀態下可能發生的所有事件,并且在模型中描述對這些事件作出響應的規則。設計者完成這些工作是極其困難的,實際上是不可能的。
原因之二,“必須輸出多種類型或多種特征的應答句子來進行自然和像人那樣會話,取決于生成句子的類型和特征,存在多種生成這些應答句子的算法,在單一腳本中難以組織這些算法。”例如,像“Eliza”(“語言工程(Language Engineering)”,第226-228頁,作者Makoto NAGAO,出版者SHOKODO)那樣的簡單應答句子生成算法是預先確定定義對輸入字符串作出應答的輸出應答句子的規則,和通過與輸入句子的匹配處理生成輸出應答句子的算法。
在諸如“B CLASS MACHINE”(“AERA”,第80頁,2001年2月12日發表,出版者Asahi Shinbun Sha),或“BOKE”(文章“BOKE日文雙關謎語發生器(BOKEA Japanese punning riddle generator)”,作者KimBins tead和Osamu Takizawa)之類的玩笑句子生成算法中,根據關鍵字運行預定字符串處理算法,和通過修正輸入句子生成玩笑話。
在單一腳本中難以組織完全不同的句子生成算法。
原因之三,“即使在單一腳本中可以實現自然和像人那樣會話的處理,如果實現方法被當作軟件開發方法,那么,從系統靈活性的角度來看,該實現方法也不是有效方法。”發明內容因此,本發明的目的是有效地制造和提供以自然和像人那樣的方式與用戶會話的聲音交互設備。
本發明的第一計算機程序包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于將在第一應答候選者生成步驟中計算的第一得分與在第二應答候選者生成步驟中計算的第二得分相比較,并且根據比較結果,選擇在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
根據第一程序,第一和第二應答候選者生成步驟可以分別包括根據事先記錄的內部狀態數據,計算第一和第二應答候選者數據,和計算第一和第二得分,并且,應答選擇步驟包括根據內部狀態數據,選擇應答數據。
在應答選擇步驟中,可以根據內部狀態數據重新計算第一和第二得分之一。
第一計算機程序還可以包括記錄步驟,用于記錄輸入聲音數據和在應答選擇步驟中選擇的應答數據,作為內部狀態數據。
第一計算機程序還可以包括內部狀態數據更新步驟,用于監視已經存儲的內部狀態數據,和隨著時間的流逝,當在記錄步驟中,聲音數據和應答數據之一被記錄成一個新內部狀態數據時,更新已經存儲的內部狀態數據的的預定數據。
在第一計算機程序中,應答選擇步驟可以包括當第一和第二得分的每一個低于預定閾值時,選擇預置應答數據。
本發明的第一存儲媒體存儲計算機可讀程序,該程序包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于將在第一應答候選者生成步驟中計算的第一得分與在第二應答候選者生成步驟中計算的第二得分相比較,并且根據比較結果,選擇在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
本發明的第一聲音交互設備包括第一應答候選者生成裝置,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成裝置,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇裝置,用于將第一應答候選者生成裝置計算的第一得分與第二應答候選者生成裝置計算的第二得分相比較,并且根據比較結果,選擇第一應答候選者生成裝置生成的第一應答候選者數據和第二應答候選者生成裝置生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
本發明的第一聲音交互方法包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于將在第一應答候選者生成步驟中計算的第一得分與在第二應答候選者生成步驟中計算的第二得分相比較,并且根據比較結果,選擇在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
在本發明的第一計算機程序、第一存儲媒體、第一聲音交互設備、和第一聲音交互方法中,按照相互獨立的規則,生成對輸入聲音數據作出應答的第一應答候選者數據和第二應答候選者數據,然后,計算第一和第二應答候選者數據的得分。將計算的得分相比較,然后,選擇第一和第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
本發明的第二計算機程序包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于按照具有優先級的、從第一到第二或從第二到第一應答候選者生成步驟的順序,確定在第一應答候選者生成步驟中計算的第一得分和在第二應答候選者生成步驟中計算的第二得分的每一個是否等于或大于預定閾值,并且,選擇具有被確定為等于或大于預定閾值的得分的、在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
本發明的第二存儲媒體存儲計算機可讀程序,該程序包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于按照具有優先級的、從第一到第二或從第二到第一應答候選者生成步驟的順序,確定在第一應答候選者生成步驟中計算的第一得分和在第二應答候選者生成步驟中計算的第二得分的每一個是否等于或大于預定閾值,并且,選擇具有被確定為等于或大于預定閾值的得分的、在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
本發明的第二聲音交互設備包括第一應答候選者生成裝置,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成裝置,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇裝置,用于按照具有優先級的、從第一到第二或從第二到第一應答候選者生成裝置的順序,確定第一應答候選者生成裝置計算的第一得分和第二應答候選者生成裝置計算的第二得分的每一個是否等于或大于預定閾值,并且,選擇具有被確定為等于或大于預定閾值的得分的、第一應答候選者生成裝置生成的第一應答候選者數據和第二應答候選者生成裝置生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
本發明的第二聲音交互方法包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于按照具有優先級的、從第一到第二或從第二到第一應答候選者生成步驟的順序,確定在第一應答候選者生成步驟中計算的第一得分和在第二應答候選者生成步驟中計算的第二得分的每一個是否等于或大于預定閾值,并且,選擇具有被確定為等于或大于預定閾值的得分的、在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
在本發明的第二計算機程序、第二存儲媒體、第二聲音交互設備、和第二聲音交互方法中,按照相互獨立的規則,生成對輸入聲音數據作出應答的第一應答候選者數據和第二應答候選者數據,然后,計算第一和第二應答候選者數據的得分。按照得分優先級的順序,作出得分的每一個是否等于或大于預定閾值的確定。如果確定得分等于或大于預定閾值,選擇具有那個得分的第一應答候選者數據或第二應答候選者數據,作為應答數據。
圖1是顯示實現本發明的聲音交互設備的硬件結構的方塊圖;圖2是顯示圖1所示的聲音交互設備的軟件程序的配置的方塊圖;圖3是顯示圖2所示的應答選擇模塊的處理的流程圖;圖4是顯示圖2所示的應答候選者生成模塊的處理的流程圖;圖5是顯示圖2所示的應答選擇模塊的處理與圖2所示的應答候選者生成模塊的處理之間的關系的流程圖;圖6列出了圖2所示的應答候選者生成模塊對輸入圖1所示的聲音交互設備中的聲音數據作出應答,生成的應答候選者數據的例子;圖7列出了圖2所示的應答候選者生成模塊對輸入圖1所示的聲音交互設備中的聲音數據作出應答,生成的應答候選者數據的另一個例子。
具體實施例方式
圖1是顯示實現本發明的聲音交互設備的硬件結構的方塊圖。
在如下的討論中,假設把聲音交互設備1安裝在機器人上。
參照圖1,CPU(中央處理單元)11遵照存儲在ROM(只讀存儲器)12中的程序或從存儲單元18裝入RAM(隨機訪問存儲器)13中的程序,執行各種各樣的處理。RAM(隨機存取存儲器)13在必要的時候,存儲CPU11需要的數據,以便執行各種各樣的處理。
CPU11、ROM12、和RAM13通過總線14相互連接。輸入/輸出接口15與總線14相連接。
與輸入/輸出接口15相連接的是包括安裝在機器人上的各種傳感器、和麥克風的輸入單元16、包括揚聲器的輸出單元17、和包括硬盤設備的存儲單元18。
驅動器19在必要的時候也與輸入/輸出接口15相連接。在必要的時候,把磁盤31、光盤32、磁光盤33、或半導體存儲器30裝入驅動器19中。在必要的時候,把從這些器件之一中讀取的計算機程序安裝到存儲單元18上。
圖2是顯示圖1所示的聲音交互設備的軟件程序的配置的方塊圖。軟件程序包括多個模塊。每個模塊含有它自己獨立的算法,并且,根據算法進行只有它自己才有的運算。具體地說,CPU11(圖1)讀取和執行每個模塊。
參照圖2,輸入模塊51通過應答選擇模塊52與應答輸出模塊53相連接。應答選擇模塊52與包括應答候選者生成模塊54a到54c的任意個模塊(在本例中,3個模塊)、和內部狀態記錄模塊55相連接。內部狀態記錄模塊55與輸入模塊51、應答輸出模塊53、應答候選者生成模塊54a到54c、和內部狀態更新模塊56相連接。
下面分別討論輸入模塊51到內部狀態更新模塊56每一個的功能。
輸入模塊51把輸入單元16(圖1)接收的輸入信號轉換成數據。當通過麥克風輸入聲音信號時,輸入模塊51把聲音信號轉換成聲音數據。當通過圖像傳感器輸入圖像信號時,輸入模塊51把圖像信號轉換成圖像數據。當通過傳感器輸入傳感器信號時,輸入模塊51把傳感器信號轉換成具有從傳感器信號中直接估計的含義的數據(譬如,人的名字和地位、或機器人正受到挨打的信息)。
輸入模塊51管理輸入信號的時間順序。例如,如果聲音信號和傳感器信號幾乎是同時輸入的,那么,輸入模塊51生成代表同一個動作生成兩個信號的數據。
然后,輸入模塊51分別把轉換數據和生成數據輸出到應答選擇模塊52和內部狀態記錄模塊55。
下文不僅把從上述聲音信號轉換而來的聲音數據,而且把從輸入模塊51輸出的數據統稱為聲音數據。
應答選擇模塊52選擇通過后面將要討論的應答候選者生成模塊54a到54c生成的應答候選者數據之一,作為對從輸入模塊51輸入的聲音數據作出應答的應答數據,并且把應答數據輸出到應答輸出模塊53。
應答輸出模塊53把應答選擇模塊52供應的應答數據轉換成應答信號,并且通過輸出單元17(圖1)把應答信號輸出到外界。如果輸出單元17是揚聲器,那么,揚聲器就把輸入的應答信號轉換成聲音,從而輸出應答聲音。
應答輸出模塊53把輸入的應答數據輸出到內部狀態記錄模塊55,以便記錄應答數據的歷史。
應答候選者生成模塊54(如果不需要區分應答候選者生成模塊54a到54c,把應答候選者生成模塊54a到54c統稱為應答候選者生成模塊54)與其它應答候選者模塊無關地對應答選擇模塊52供應的聲音數據作出應答,生成應答候選者數據,計算應答候選者數據的得分,并且,把生成的應答候選者數據和計算的得分輸出到應答選擇模塊52。
下面參照圖3和圖4所示的流程圖,詳細討論應答選擇模塊52和應答候選者生成模塊54的操作。
圖5是顯示應答選擇模塊52的處理與應答候選者生成模塊54的處理之間的關系的流程圖。參照圖3和圖5,討論應答選擇模塊52的處理,和參照圖4和圖5,討論應答候選者生成模塊54的處理。參照圖5所示的相應步驟,可以容易地理解這些模塊之間的關系。
當用戶講話發出聲音時,輸入模塊51通過麥克風(輸入單元16(圖1))接收作為信號的聲音,并且把聲音轉換成聲音數據。而且,輸入模塊51把轉換的聲音數據輸出到應答選擇模塊52。
在圖3中的步驟S71中,應答選擇模塊52接收輸入模塊51供應的聲音數據。
在步驟S72中,應答選擇模塊52把在步驟S71中輸入的聲音數據輸出到應答候選者生成模塊54a到54c的每一個。
在步驟S91中,把輸出的聲音數據輸入到應答候選者生成模塊54a到54c的每一個中。
應答候選者生成模塊54a到54c的每一個與其它應答候選者生成模塊無關地生成對應答選擇模塊52輸入的聲音數據作出應答的應答候選者數據(圖4和圖5中的步驟S93)。應答候選者生成模塊54a到54c的每一個根據它自己的判斷,計算生成應答候選者數據的得分(圖4和圖5中的步驟S94)。這里,得分指的是生成的應答候選者數據相對于輸入聲音數據和記錄在后面將要討論的內部狀態記錄模塊5 5中的內部狀態數據的合適程度的數據表示。應答候選者生成模塊54a到54c的每一個把對輸入聲音數據作出應答的應答候選者數據和應答候選者數據的得分輸出到應答選擇模塊52((圖4和圖5中的步驟S95)。
在步驟S73中,當應答候選者生成模塊54a到54c之一供應應答候選者數據和它的得分時,應答選擇模塊52接收應答候選者數據和它的得分。
在步驟S74中,應答選擇模塊52執行時間測量功能,從而確定是否已經經過了預定固定時間。
如果在步驟S74中確定還沒有經過預定固定時間,那么,應答選擇模塊52就循環回到步驟S73。當另一個應答候選者生成模塊54供應應答候選者數據和它的得分時,應答選擇模塊52接收它們。
如果已經經過了預定固定時間(如果在步驟S74中確定已經經過了預定固定時間),那么,在步驟S75中,應答選擇模塊52確定在步驟S73中接收的所有得分都低于預定閾值。
如果在步驟S75中確定所有得分都低于預定閾值,那么,在步驟S78中,應答選擇模塊52把事先存儲在存儲單元18(圖1)中的預定應答數據,例如,說出“是嗎(Do you)?”的消息數據,輸出到應答輸出模塊53。
正如已經討論的那樣,在步驟S78中,應答選擇模塊52輸出預定應答數據。步驟S78可以省略。明確地說,如果在步驟S75中確定所有得分都低于預定閾值,那么,應答選擇模塊52可以執行什么輸出也不提供的處理。
如果在步驟S75中確定至少有一個得分高于預定閾值(如果在步驟S75中確定并非所有得分都低于預定閾值),那么,在步驟S76中,應答選擇模塊52重新計算在步驟S73中輸入的應答候選者數據的得分當中,在步驟S75中被確定為高于預定閾值的得分(或者,可以重新計算所有得分)。
在步驟S77中,應答選擇模塊52從在步驟S73中輸入的應答候選者數據當中,選擇在重新計算的得分中得分最高的應答候選者數據,作為對在步驟S71中輸入的聲音數據作出應答的應答數據,并且把所選應答數據輸出到應答輸出模塊53。
應答數據是語言(譬如,后面要討論的圖6所示的“發生了什么事(Whathappened)?”、“是,風真大(Yes,it was)。”、“平靜的暴風雨(Calm storm)”等)數據、動作(譬如,后面要討論的圖7所示的“請打開電視(TV is turnedon)”等)數據、和語言和操作的組合(例如,后面要討論的圖7中(“打開電視(TV is turned on)”)和“好啦,我把電視打開了(OK,I turned on the TV)”的組合)的數據的組合。
步驟S76可以省略。明確地說,應答選擇模塊52利用應答候選者生成模塊54a到54c輸出的得分,選擇應答數據(在后面要討論的步驟S95中輸出的得分)。
如果按照含有聲音交互設備1的設備(例如,機器人)的特性,對應答候選者生成模塊54a到54c的每一個都預置了優先級,那么,應答選擇模塊52可以以如下方式選擇應答數據。
如果在步驟S74中確定已經經過了預定固定時間,那么,應答選擇模塊52不執行步驟S75到S78。應答選擇模塊52把優先級最高的應答候選者生成模塊54輸出的得分作為感興趣得分,并且,確定感興趣得分是否等于或大于預定閾值(與用在步驟S75中的預定閾值不同)。如果確定感興趣得分等于或大于預定閾值,那么,應答選擇模塊52選擇擁有感興趣得分的應答候選者數據(在這種情況下,由優先級最高的應答候選者生成模塊54生成的應答候選者數據),作為應答數據。如果確定感興趣得分小于預定閾值,那么,應答選擇模塊52把具有次高優先級的應答候選者生成模塊54輸出的得分作為感興趣得分,并且,確定感興趣得分是否等于或大于預定閾值。如此重復類似的計算,以選擇應答數據。
下面參照圖4和5所示的流程圖詳細討論與圖3所示的應答選擇模塊52的處理結合在一起執行的應答候選者生成模塊54a到54c的操作。由于應答候選者生成模塊54a到54c的操作彼此基本相同,下面代表性地討論應答候選者生成模塊54c的操作。
正如已經討論過的那樣,在圖3和5所示的步驟S72中,應答選擇模塊52把輸入聲音數據輸出到應答候選者生成模塊54c。
在步驟S91中,應答候選者生成模塊54c接收應答選擇模塊52供應的聲音數據。
在步驟S92中,應答候選者生成模塊54c根據記錄在后面要討論的內部狀態記錄模塊55中的內部狀態數據,確定應答候選者生成模塊54c是否能夠生成對在步驟S91中輸入的聲音數據作出應答的應答候選者數據。
如果在步驟S92中確定不可能生成應答候選者數據,那么,應答候選者生成模塊54c就結束處理。明確地說,應答候選者生成模塊54c什么也沒有輸出到應答選擇模塊52。
如果在步驟S92中確定有可能生成應答候選者數據,那么,應答候選者生成模塊54c在步驟S93中,根據記錄在內部狀態記錄模塊55中的內部數據(后面要作詳細討論),生成對在步驟S91中輸入的聲音數據作出應答的應答候選者數據。
假設在步驟S91中把說出圖6所示的“今天過得真難受(I had a roughday)”或“哦,太糟糕了(Oh,that′s awful)”的聲音數據輸入應答候選者生成模塊54c中。應答候選者生成模塊54c在步驟S92中確定不可能生成開玩笑句子(應答候選者數據),并且什么也不輸出。
如果假設在步驟S91中把說出圖6所示的“今天風真大,不是嗎(Windyday,wasn′t)”的聲音數據輸入應答候選者生成模塊54c中。應答候選者生成模塊54c在步驟S92中確定有可能生成開玩笑句子(應答候選者數據)。在步驟S93中,應答候選者生成模塊54c生成說出“平靜的暴風雨(calm storm)”的開玩笑句子數據(應答候選者數據)。
如果在步驟S91中輸入說出圖6所示的“我的毯子被風吹走了(Myblanket blew away)”的聲音數據,那么,應答候選者生成模塊54c在步驟S92中確定有可能生成開玩笑句子(應答候選者數據),然后,在步驟S93中,生成說出“我希望你還蓋著毯子(I hope you have blanket coverage)”的開玩笑句子數據(應答候選者數據)。
在步驟S94中,根據記錄在后面要討論的內部狀態記錄模塊55中的內部狀態數據,應答候選者生成模塊54c計算在步驟S93中生成的應答候選者數據的得分。
例如,應答候選者生成模塊54c根據記錄在內部狀態記錄模塊55中的玩笑話的應答歷史的數據、和保存在應答候選者生成模塊54c中據此確定玩笑話的幽默程度的確定準則,計算得分。
例如,根據幽默程度計算對說出“今天風真大,不是嗎(Windy day,wasn′t)”的輸入聲音作出應答說出“平靜的暴風雨(calm storm)”的玩笑話的得分、和對說出“我的毯子被風吹走了(My blanket blew away)”的輸入聲音作出應答說出“我希望你還蓋著毯子(I hope you have blanketcoverage)”的玩笑話的得分,并且,計算出這兩句玩笑話具有“50”分。把每個玩笑話的分數設置成得分的基本分數。如果在第二次會話之前沒有輸出開玩笑應答,那么,把另外的“40”分加入玩笑話的分數,即,得分的基本分數之中。
在這個例子中,當沒有把另外的“40”分加入其中時,玩笑話的分數變成它的得分。當把另外的“40”分加入其中時,加了“40”分的玩笑話的分數變成它的得分。
在圖6所示的例子中,說出“平靜的暴風雨(Calm storm)”的應答是用于第二次會話的應答候選者數據,沒有把另外的“40”分加入其中,得分相對于基本分數“50”保持不變。
盡管應答“我希望你還蓋著毯子(I hope you have blanket coverage)”出現在第3次會話中,但是,沒有輸出開玩笑應答。由于加入了“40”分,說出“我希望你還蓋著毯子(I hope you have blanket coverage)”的應答具有“90”分。
返回到圖4,在步驟S95中,應答候選者生成模塊54c向應答選擇模塊52輸出在步驟S93中生成的應答候選者數據和在步驟S94中計算的得分。
應答候選者生成模塊54c根據“生成開玩笑句子”的、只有它自己才有的規則,生成應答候選者數據,并沒有考慮與其它應答候選者生成模塊54a和54b的關系。
這對應答候選者生成模塊54a和54b也是同樣正確的。在這個例子中,應答候選者數據是根據它們自己的規則,譬如,“聊天”和“命令解釋和執行”生成的。
應答候選者生成模塊54a到54c的每一個僅僅考慮了單個狀態,而不是可能發生的所有狀態。
如上所述,應答選擇模塊52從應答候選者生成模塊54a到54c分別生成的數個應答候選者數據中,選擇適合于會話狀態的應答候選者數據,作為機器人作出應答輸出的應答數據。
為了使機器人(聲音交互設備1)能夠進行高級會話(更自然和像人那樣的會話),可以把含有與應答候選者生成模塊54a到54c的那些規則不同的規則的應答候選者生成模塊加入聲音交互設備1中。
圖6和7顯示了當聲音數據饋入應答候選者生成模塊54a到54c的每一個時,由應答候選者生成模塊54a到54c生成的應答候選者數據的例子。
參照圖6和7,用戶輸入的聲音的例子列在第1列中。圖6和7所示的第2列列出了來自應答候選者生成模塊54a的輸出例子,即,對輸入的聲音作出應答輸出的應答候選者數據和應答候選者數據的得分。類似地,圖6和7所示的第3列列出了來自應答候選者生成模塊54b的輸出例子,和圖6和7所示的第4列列出了來自應答候選者生成模塊54c的輸出例子。
在這些例子中,省略了在圖3和5所示的步驟S76中的處理,即,得分的重新計算。
如上所述,應答候選者生成模塊54a到54c的每一個根據它自己的規則,生成應答短語,并且輸出該應答短語,作為應答候選者數據。在這些例子中,應答候選者生成模塊54a輸出聊天的短語,作為應答候選者數據,應答候選者生成模塊54b輸出用于解釋和執行命令的命令解釋和執行短語,作為應答候選者數據,和應答候選者生成模塊54c輸出開玩笑短語,作為應答候選者數據。
如圖6所示,用戶現在對聲音交互設備1(圖1)說“今天過得真難受(Ihad a rough day)”。
聲音交互設備1通過麥克風(輸入單元16(圖1))接收說出“今天過得真難受(I had a rough day)”的聲音,并且,按照前面所述的那樣(參照圖2)通過輸入模塊51把聲音輸入應答選擇模塊52。應答選擇模塊52把接收的聲音數據輸入應答候選者生成模塊54a到54c的每一個中。
應答候選者生成模塊54a到54c的每一個生成對與說出“今天過得真難受(I had a rough day)”的輸入聲音相對應的聲音數據作出應答的應答候選者數據。
如圖6所示,應答候選者生成模塊54a生成說出“出了什么事(Whathappened)?”的應答候選者數據,計算出應答候選者數據的得分為“70”分,然后,把得分輸出到應答選擇模塊52。其它應答候選者生成模塊54b和54c沒有生成對“出了什么事(What happened)?”作出應答的應答候選者數據。
輸入到應答選擇模塊52中的應答候選者數據只是“出了什么事(Whathappened)?”。把說出“出了什么事(What happened)?”的應答選為對用戶的聲音作出應答的應答數據。
讓應答數據從應答選擇模塊52輸出,然后,通過應答輸出模塊53把它輸出到聲音交互設備1的外部。明確地說,聲音交互設備1對說出“今天過得真難受(I had a rough day)”的用戶聲音作出應答,通過揚聲器(輸出單元17(圖1))輸出說出“出了什么事(What happened)?”的聲音。
如圖6所示,對聲音交互設備1所說的應用“出了什么事(Whathappened)?”作出應答,用戶說“今天風真大,不是嗎(Windy day,wasn′tit)?”
類似地,應答候選者生成模塊54a和54c的每一個把對說出“今天風真大,不是嗎(Windy day,wasn′t it)?”的聲音數據作出應答的應答候選者數據和應答候選者數據的得分饋送到應答選擇模塊52。在圖6所示的例子中,應答候選者生成模塊54a向應答選擇模塊52輸入應答候選者數據“是,風真大(Yes,it was)”和它的得分“80”。應答候選者生成模塊54c把應答候選者數據“平靜的暴風雨(Calm storm)”與它的得分“50”一起輸入應答選擇模塊52。應答候選者生成模塊54b沒有把任何東西輸入應答選擇模塊52。
一旦接收到兩個應答候選者數據,應答選擇模塊52就根據兩個輸入得分,選擇一個應答候選者數據,作為對說出“今天風真大,不是嗎(Windy day,wasn′t it)?”的用戶聲音作出應答的應答數據。
說出“是,風真大(Yes,it was)”的應答的得分是“80”分,和應答“平靜的暴風雨(Calm storm)”的得分是“50”分。因此,選擇和輸出得分高的、說出“是,風真大(Yes,it was)”的應答,作為應答數據。
類似地,應答候選者生成模塊54c對說出用戶所說的“我的毯子被風吹走了(My blanket blew away)!”的聲音作出應答,生成說出“我希望你還蓋著毯子(I hope you have blanket coverage)”的應答候選者數據。應答候選者生成模塊54a對用戶所說的聲音“我的毯子被風吹走了(My blanket blewaway)!”作出應答,生成說出“你的毯子被風吹走(Did you blanket blowaway)?”的應答候選者數據。選擇具有比應答候選者數據“你的毯子被風吹走(Did you blanket blow away)?”的“70”分的得分高的“90”分的得分的、說出“我希望你還蓋著毯子(I hope you have blanket coverage)”的應答候選者數據,并作為應答數據輸出。
由于只有應答候選者生成模塊54a對說出“哦,太糟糕了(Oh,that′sawful)”的用戶聲音作出應答生成的、說出“真遺憾(Sorry)”的應答候選者數據輸入應答選擇模塊52中,因此,選擇和輸出應答“真遺憾(Sorry)”,作為應答數據。
如圖7所示,用戶現在對機器人說“我想要看電視(I want to watchTV)。”如圖所示,只有應答候選者生成模塊54a生成的、說出“是嗎(Do you)?”的應答候選者數據輸入應答選擇模塊52中。對說出“我想要看電視(I want towatch TV)”的用戶的聲音作出應答,選擇和輸出說出“是嗎(Do you)”的應答。
用戶可以說“請打開電視(Turn on the TV)。”選擇和輸出具有“100”分的最高得分和由應答候選者生成模塊54b生成的說出“(打開電視)好啦,我把電視打開了((TV is turned on)OK,I turnedon the TV)”的應答候選者數據,作為對說出“請打開電視(Turn on the TV)”的用戶的聲音作出應答的應答數據。這里,(打開電視(TV is turned on))是表示“使機器人按下電視上的電源開關”的動作執行命令的數據。對說出“請打開電視(Turn on the TV)”的用戶的聲音作出應答,機器人在按下電源的開關之后,通過說出好啦,我把電視打開了(OK,I turned on the TV)”作出應答。
對說出“哇,多有趣啊(Wow,that′s funny)”的用戶的聲音作出應答,應答候選者生成模塊54a生成說出“是,真有趣(Yes,it is)”的應答候選者數據。對說出“哇,多有趣啊(Wow,that′s funny)”的用戶的聲音作出應答,應答候選者生成模塊54c生成說出“狗頭是白的,狗尾巴也是白的(Whiteheaded dog also has white tail)”的應答候選者數據。選擇和輸出具有比說出“狗頭是白的,狗尾巴也是白的(White headed dog also has white tail)”的應答候選者數據的“50”分的得分高的“70”分的得分的、說出“是,真有趣(Yes,it is)”的應答候選者數據,作為應答數據。
用戶的聲音和機器人的應答依次列在下面。
列在圖6中的例子用戶“今天過得真難受(I had a rough day)。”機器人“出了什么事(What happened)?”用戶“今天風真大,不是嗎(Windy day,wasn′t it)?”機器人“是,風真大(Yes,it was)。”用戶“我的毯子被風吹走了(My blanket blew away)!”機器人“我希望你還蓋著毯子(I hope you have blanket coverage)。”用戶“哦,太糟糕了(Oh,that′s awful)。”機器人“真遺憾(Sorry)!”列在圖7中的例子用戶“我想要看電視(I want to watch TV)。”機器人“是嗎(Do you)?”
用戶“請打開電視(Turn on the TV)。”機器人“(打開電視)好啦,我把電視打開了((TV is turned on)OK,Iturned on the TV)。”用戶“哇,多有趣啊(Wow,that′s funny)。”機器人“是,真有趣(Yes,it is)。”應答選擇模塊52以這種方式選擇和輸出對用戶的聲音作出應答的適當應答數據,作為來自含有語音交互設備1的機器人的應答。從而,機器人以自然和像人那樣的方式與用戶會話。
在圖6和7所列的例子中,省略了步驟S76中的處理,即,得分的重新計算。可選地,可以不省略步驟S76,參照記錄在后面要討論的內部狀態記錄模塊55中的內部狀態數據重新計算應答候選者數據的得分。應答選擇模塊5 2選擇適合于會話和機器人的內部狀態的應答數據。
例如,在選擇列在圖7所列的第4列中的、對說出“哇,多有趣啊(Wow,that′s funny)”的用戶的聲音作出應答的應答數據的情況下,應答選擇模塊52通過參照內部狀態數據,確定作為應答,開玩笑比聊天更合適。
應答選擇模塊52重新計算得分,以便作為應答候選者數據的玩笑具有更高的得分。現在,假設把“25”分的得分加入作為應答候選者數據的玩笑中進行重新計算。
在重新計算之后,應答候選者數據54c的開玩笑應答數據,即,“狗頭是白的,狗尾巴也是白的(White headed dog also has white tail)”具有“75”分的得分。選擇說出具有“75”分的得分的“狗頭是白的,狗尾巴也是白的(White headed dog also has white tail)”應答,作為對說出“哇,多有趣啊(Wow,that′s funny)”的用戶的聲音作出應答的應答數據。
盡管沒有提供有關的流程圖,但是,現在假設正在進行嚴肅的交談,告訴機器人它正處在危險之中。應答候選者生成模塊54c生成開玩笑句子,作為應答候選者數據。那個開玩笑句子的得分是高分。把開玩笑句子和它的得分輸入應答選擇模塊52中。通過參照內部狀態數據,應答選擇模塊52確定正在進行嚴肅交談,并且重新計算得分,以便降低開玩笑句子的得分。這樣,就可以限制在嚴肅交談期間機器人用開玩笑句子應答的不合適狀況。
當機器人心情不好時,機器人可以通過拒絕或不理睬“打開電視”的命令作出應答。因此,通過參照后面要討論的“情感”的內部狀態數據,應答選擇模塊52可以容易地重新計算出得分。
在上述例子中,簡單地將得分的分數相互比較來選擇應答數據。基于得分的選擇不局限于任何特定的一種。
返回到圖2,內部狀態記錄模塊55構造存儲多個內部狀態數據的數據庫。
當應答選擇模塊52重新計算得分時(圖3和5中的步驟S76),引用記錄在內部狀態記錄模塊55中的內部狀態數據。
正如已經描述過的那樣,當應答候選者生成模塊54a到54c的每一個確定應答候選者生成模塊54a到54c的每一個是否能夠生成應答候選者數據時,當應答候選者生成模塊54a到54c的每一個生成應答候選者數據時,和當應答候選者生成模塊54a到54c的每一個計算得分時(圖4和5中的步驟S93到S95),引用記錄在內部狀態記錄模塊55中的內部狀態數據。
因此,內部狀態數據由列在下面的信息的數據構成。
(1)與機器人的本能有關的信息“欲望”、“想睡”或“想要接觸其他人”的程度(2)與機器人的情感有關的信息“憤怒”、“悲傷”或“幸福”的程度(3)與機器人的性格有關的信息“急臊的脾氣”或“溫柔”的程度(4)與到目前為止的會話的歷史有關的信息例如,“輸入到輸入模塊51中的語音數據的歷史”、“從應答輸出模塊53輸出的應答數據的歷史”、或“指示哪個應答候選者生成模塊54選擇和輸出應答候選者數據作為應答數據的應答數據的歷史”。
內部狀態更新模塊56不斷監視記錄在內部狀態記錄模塊55中的內部狀態數據。當任何內部狀態數據被更新時,或者,隨著時間的流逝,內部狀態記錄模塊55更新預定內部狀態數據。
內部狀態更新模塊56引起改變,例如,“若輸入語音數據包含‘不尊重成分’,那么,加強‘憤怒’的程度”,或者,隨著時間提高‘想睡的程度’”。
為了使每個模塊都能執行預定功能,可以通過網絡或從存儲媒體安裝構成用于每個功能的軟件的程序。
存儲媒體可以是與設備分開分配,把如圖1所示的軟件程序供應給用戶的插入式媒體。插入式媒體可以是磁盤31(譬如,軟盤)、光盤32(譬如,CD-ROM(只讀光盤存儲器)和DVD(數字多功能盤)、磁光盤33(譬如,MD(小型盤))或半導體存儲器34。存儲媒體也可以是ROM12或包含在存儲單元18中的硬盤,它們的每一種是以它們的安裝狀態配備在設備中的,并且含有存儲在其中的計算機程序。
沒有必要按照每個流程圖所指出的順序,按部就班地執行描述進行各種各樣處理的軟件程序的處理步驟。可以并行地或獨立地執行幾個處理步驟。
每個模塊不局限于任何特定的實施例。例如,每個模塊可以由硬件構成。
工業可應用性在本發明的第一計算機程序、第一聲音交互設備、和第一聲音交互方法中,按照相互獨立的規則,生成對輸入聲音數據作出應答的第一應答候選者數據和第二應答候選者數據,并且,根據第一和第二應答候選者數據的得分,選擇應答數據。因此,設備以自然和像人那樣的方式與用戶會話。
在本發明的第二計算機程序、第二聲音交互設備、和第二聲音交互方法中,按照相互獨立的規則,生成對輸入聲音數據作出應答的第一應答候選者數據和第二應答候選者數據,并且,根據優先級和第一和第二應答候選者數據的得分,選擇應答數據。因此,設備以自然和像人那樣的方式與用戶會話。
權利要求
1.一種計算機程序,包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于將在第一應答候選者生成步驟中計算的第一得分與在第二應答候選者生成步驟中計算的第二得分相比較,并且根據比較結果,選擇在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
2.根據權利要求1所述的計算機程序,其中,第一和第二應答候選者生成步驟分別包括根據事先記錄的內部狀態數據,計算第一和第二應答候選者數據,和計算第一和第二得分,和其中,應答選擇步驟包括根據內部狀態數據,選擇應答數據。
3.根據權利要求2所述的計算機程序,其中,應答選擇步驟還包括根據內部狀態數據重新計算第一和第二得分之一。
4.根據權利要求2所述的計算機程序,還包括記錄步驟,用于記錄輸入聲音數據和在應答選擇步驟中選擇的應答數據,作為內部狀態數據。
5.根據權利要求4所述的計算機程序,還包括內部狀態數據更新步驟,用于監視已經存儲的內部狀態數據,和隨著時間的流逝,當在記錄步驟中,聲音數據和應答數據之一被記錄成一個新內部狀態數據時,更新已經存儲的內部狀態數據的的預定數據。
6.根據權利要求1所述的計算機程序,其中,應答選擇步驟包括當第一和第二得分的每一個低于預定閾值時,選擇預置應答數據。
7.一種存儲計算機可讀程序的存儲媒體,該程序包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于將在第一應答候選者生成步驟中計算的第一得分與在第二應答候選者生成步驟中計算的第二得分相比較,并且根據比較結果,選擇在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
8.一種聲音交互設備,包括第一應答候選者生成裝置,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成裝置,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇裝置,用于將第一應答候選者生成裝置計算的第一得分與第二應答候選者生成裝置計算的第二得分相比較,并且根據比較結果,選擇第一應答候選者生成裝置生成的第一應答候選者數據和第二應答候選者生成裝置生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
9.一種聲音交互設備的聲音交互方法,包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于將在第一應答候選者生成步驟中計算的第一得分與在第二應答候選者生成步驟中計算的第二得分相比較,并且根據比較結果,選擇在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
10.一種計算機程序,包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于按照具有優先級的、從第一到第二或從第二到第一應答候選者生成步驟的順序,確定在第一應答候選者生成步驟中計算的第一得分和在第二應答候選者生成步驟中計算的第二得分的每一個是否等于或大于預定閾值,并且,選擇具有被確定為等于或大于預定閾值的得分的、在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
11.一種存儲計算機可讀程序的存儲媒體,該程序包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于按照具有優先級的、從第一到第二或從第二到第一應答候選者生成步驟的順序,確定在第一應答候選者生成步驟中計算的第一得分和在第二應答候選者生成步驟中計算的第二得分的每一個是否等于或大于預定閾值,并且,選擇具有被確定為等于或大于預定閾值的得分的、在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
12.一種聲音交互設備,包括第一應答候選者生成裝置,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成裝置,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇裝置,用于按照具有優先級的、從第一到第二或從第二到第一應答候選者生成裝置的順序,確定第一應答候選者生成裝置計算的第一得分和第二應答候選者生成裝置計算的第二得分的每一個是否等于或大于預定閾值,并且,選擇具有被確定為等于或大于預定閾值的得分的、第一應答候選者生成裝置生成的第一應答候選者數據和第二應答候選者生成裝置生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
13.一種聲音交互設備的聲音交互方法,包括第一應答候選者生成步驟,用于根據第一規則,生成對輸入聲音數據作出應答的第一應答候選者數據,并且計算生成第一應答候選者數據的第一得分;第二應答候選者生成步驟,用于根據與第一規則無關的第二規則,生成對輸入聲音數據作出應答的第二應答候選者數據,并且計算生成第一應答候選者數據的第二得分;和應答選擇步驟,用于按照具有優先級的、從第一到第二或從第二到第一應答候選者生成步驟的順序,確定在第一應答候選者生成步驟中計算的第一得分和在第二應答候選者生成步驟中計算的第二得分的每一個是否等于或大于預定閾值,并且,選擇具有被確定為等于或大于預定閾值的得分的、在第一應答候選者生成步驟中生成的第一應答候選者數據和在第二應答候選者生成步驟中生成的第二應答候選者數據之一,作為對輸入聲音數據作出應答的應答數據。
全文摘要
使與用戶的會話能夠自然進行的程序。應答候選者生成模塊(54a到54c)的每一個對通過輸入模塊(51)和應答選擇模塊(52)從外部輸入的語音數據作出應答,根據它自己的規則,生成應答候選者數據,根據應答候選者數據、語音數據和記錄在內部狀態記錄模塊(55)中的內部狀態數據,計算應答候選者數據的得分,然后,把得分供應給應答選擇模塊(52)。對供應的得分作出響應,應答選擇模塊(52)選擇一個應答候選者數據,作為對輸入語音數據作出應答的應答數據,并且通過應答輸出模塊(53)輸出這個應答候選者數據。本發明可應用于安裝在機器人等上的聲音交互設備。
文檔編號G10L15/22GK1473324SQ02802875
公開日2004年2月4日 申請日期2002年7月26日 優先權日2001年7月27日
發明者下村秀樹, 藤田雅博, 烏戈·D·普羅菲奧, D 普羅菲奧, 博 申請人:索尼公司