IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 国立大学法人大阪大学の特許一覧

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2021-12-13
(45)【発行日】2022-01-13
(54)【発明の名称】エージェント対話システム
(51)【国際特許分類】
   G06F 3/16 20060101AFI20220105BHJP
   G10L 13/00 20060101ALI20220105BHJP
   G10L 15/22 20060101ALI20220105BHJP
【FI】
G06F3/16 670
G06F3/16 630
G06F3/16 650
G06F3/16 690
G10L13/00 100M
G10L15/22 300U
【請求項の数】 3
(21)【出願番号】P 2015207441
(22)【出願日】2015-10-21
(65)【公開番号】P2017079004
(43)【公開日】2017-04-27
【審査請求日】2018-10-16
【審判番号】
【審判請求日】2020-07-06
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成26-27年度、独立行政法人科学技術振興機構、戦略的創造研究推進事業/総括実施型研究ERATO「石黒共生ヒューマンロボットインタラクションプロジェクト」に係る委託業務、産業技術力強化法第19条の適用を受ける特許出願
(73)【特許権者】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】100090181
【弁理士】
【氏名又は名称】山田 義人
(72)【発明者】
【氏名】飯尾 尊優
(72)【発明者】
【氏名】吉川 雄一郎
(72)【発明者】
【氏名】石黒 浩
【合議体】
【審判長】▲吉▼田 耕一
【審判官】林 毅
【審判官】小田 浩
(56)【参考文献】
【文献】特開2009-061547(JP,A)
【文献】特表2015-524934(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F3/16
G10L13/00
G10L15/22
(57)【特許請求の範囲】
【請求項1】
それぞれが発話機能を有する2体のエージェントが対話場所においてスクリプトに従って対話し、対話場所に人が陪席するエージェント対話システムであって、
前記対話場所における前記人の行為や状態変化などのセンサ信号を、前記人の実際の意思の如何によらず、前記人が表明した意思として認定するセンサマネージャ
前記センサマネージャが認定した、承認すべき意思があるかどうか判断する第1判断手段、
前記第1判断手段が前記承認すべき意思があると判断したとき、前記スクリプトからダイアログキューにロードされた第1承認ダイアログに従って前記2体のエージェントに前記人の意思を承認する非言語動作を実行させる第1承認ダイアログ実行手段、
前記スクリプトに従って前記人の意思を確認するフェーズかどうか判断する第2判断手段、
前記第2判断手段で前記人の意思を確認するフェーズであると判断したとき、前記人の意思を確認できたかどうか判断する第3判断手段、および
前記第3判断手段が前記人の意思を確認できたと判断したとき、前記スクリプトから前記ダイアログキューにロードされた第2承認ダイアログに従って前記2体のエージェントに人の意思を承認する対話を実行させる第2承認ダイアログ実行手段を備え
前記第2承認ダイアログ実行手段は、前記2体のエージェントの1つに、前記人の意思に対して同調する発話または同調しない発話をさせ、前記2体のエージェントの他の1つに、前記人の意思に対して同調しない発話をさせる、エージェント対話システム。
【請求項2】
前記第2承認ダイアログ実行手段は、前記人の意思を拡大解釈したうえで、前記2体のエージェントに前記承認発話を実行させる、請求項1記載のエージェント対話システム。
【請求項3】
それぞれが発話機能を有する2体のエージェントが対話場所においてスクリプトに従って対話し、対話場所に人が陪席するエージェント対話システムのコンピュータによって実行されるプログラムであって、前記プログラムは前記コンピュータを、
前記対話場所における前記人の行為や状態変化などのセンサ信号を、前記人の実際の意思の如何によらず、前記人が表明した意思として認定するセンサマネージャ
前記センサマネージャが認定した、承認すべき意思があるかどうか判断する第1判断手段、
前記第1判断手段が前記承認すべき意思があると判断したとき、前記スクリプトからダイアログキューにロードされた第1承認ダイアログに従って前記2体のエージェントに前記人の意思を承認する非言語動作を実行させる第1承認ダイアログ実行手段、
前記スクリプトに従って前記人の意思を確認するフェーズかどうか判断する第2判断手段、
前記第2判断手段で前記人の意思を確認するフェーズであると判断したとき、前記人の意思を確認できたかどうか判断する第3判断手段、および
前記第3判断手段が前記人の意思を確認できたと判断したとき、前記スクリプトから前記ダイアログキューにロードされた第2承認ダイアログに従って前記2体のエージェントに人の意思を承認する対話を実行させる第2承認ダイアログ実行手段として機能させ、
前記第2承認ダイアログ実行手段は、前記2体のエージェントの1つに、前記人の意思に対して同調する発話または同調しない発話をさせ、前記2体のエージェントの他の1つに、前記人の意思に対して同調しない発話をさせる、エージェント対話システムのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、エージェント対話システムに関し、特にたとえば、複数のエージェントと少なくとも1人の人が参加する、新規なエージェント対話システムに関する。
【背景技術】
【0002】
ロボット分野の広がりとともに、ロボット研究は,日常的な場面で働くロボットの研究に焦点を移しつつあり、人間が生活する環境の中で、人と対話することができるロボットの開発が注目されている。
【0003】
近年の音声認識の技術の発展により、これまでにも人間と音声言語でやりとりをする機能を持つロボットが開発されてきているが、音声認識技術をいくら優れたものにしても、ロボットと人との対話において、人が人との対話に参加しているときに抱く「対話感(対話に参加しているという感覚)」と同等の感覚を、ロボットと対話する人に与え続けることは容易ではなかった。
【0004】
背景技術の一例である特許文献1には、ロボットと人との対話において、ロボットが人の感情を推測して応答文の発話とその発話に伴う動作を決定することが開示されている。
【0005】
特許文献2には、人とロボットとの対話システムにおいて、両者の同調を図ることで、持続的で自然なインタラクションを実現しようとするものである。
【先行技術文献】
【特許文献】
【0006】
【文献】特開2004-90109号公報[B25J 13/00…]
【文献】特開2012-181697号公報[G06F 3/16…]
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1の技術においても、特許文献2の技術においても、音声認識に基づく処理に限界があり、上述の「対話感」を人が持続することは容易ではない。
【0008】
それゆえに、この発明の主たる目的は、新規な、エージェント対話システムを提供することである。
【0009】
この発明の他の目的は、人に対話に参加している感覚を持続させることができる、エージェント対話システムを提供することである。
【課題を解決するための手段】
【0010】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために記述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
【0011】
第1の発明は、それぞれが発話機能を有する2体のエージェントが対話場所においてスクリプトに従って対話し、対話場所に人が陪席するエージェント対話システムであって、
対話場所における人の行為や状態変化などのセンサ信号を、人の実際の意思の如何によらず、人が表明した意思として認定するセンサマネージャ、センサマネージャが認定した、承認すべき意思があるかどうか判断する第1判断手段、第1判断手段が承認すべき意思があると判断したとき、スクリプトからダイアログキューにロードされた第1承認ダイアログに従って2体のエージェントに人の意思を承認する非言語動作を実行させる第1承認ダイアログ実行手段、スクリプトに従って人の意思を確認するフェーズかどうか判断する第2判断手段、第2判断手段で人の意思を確認するフェーズであると判断したとき、人の意思を確認できたかどうか判断する第3判断手段、および第3判断手段が人の意思を確認できたと判断したとき、スクリプトからダイアログキューにロードされた第2承認ダイアログに従って2体のエージェントに人の意思を承認する対話を実行させる第2承認ダイアログ実行手段を備え、第2承認ダイアログ実行手段は、2体のエージェントの1つに、人の意思に対して同調する発話または同調しない発話をさせ、2体のエージェントの他の1つに、前記人の意思に対して同調しない発話をさせる、エージェント対話システムである。
【0012】
第1の発明では、エージェント対話システム(10:実施例において相当する部分を例示する参照符号。以下、同様。)は、対話場所(12)に、それぞれが発話機能(46)を有する2体のエージェント(R1,R2)を配置し、その対話場所(12)に人(H)が陪席する。エージェントどうしはスクリプトに従って対話する。センサマネージャ(18)が、たとえば、マイク(14)が取得した音声信号、カメラ(16)が撮影した画像信号および意思表示デバイス(17)が検出した入力信号(肯定、否定)、さらには生体信号を検出する生体センサ、モーションキャプチャシステムによって検知された人の行為や状態変化などのセンサ信号を、人の実際の意思の如何によらず、人が表明した意思として認定する。第1判断手段(20、S75)は、センサマネージャ(18)が認定した、承認すべき意思があるかどうか判断する。この第1判断手段が承認すべき意思があると判断したとき、第1承認ダイアログ実行手段(20、S77)が、スクリプトからダイアログキューにロードされた第1承認ダイアログに従って2体のエージェントに人の意思を承認する非言語動作を実行させる。第1承認ダイアログ実行手段による非言語動作の後、第2判断手段(20、S79)が、スクリプトに従って人の意思を確認するフェーズかどうか判断する。第2判断手段で人の意思を確認するフェーズであると判断したとき、第3判断手段(20、S81)が、人の意思を確認できたかどうか判断する。そして、第2承認ダイアログ実行手段(20、S83)は、第3判断手段が人の意思を確認できたと判断したとき、スクリプトからダイアログキューにロードされた第2承認ダイアログに従って2体のエージェントに人の意思を承認する対話を実行させる。具体的には、第2承認ダイアログ実行手段は、2体のエージェントの1つに人の意思に同調する発話または同調しない発話をさせ、2体のエージェントの他の1つに人の意思に同調しない発話または同調する発話をさせることによって、承認対話を実行させる。たとえば、第2承認ダイアログ実行手段によって、たとえば2体のエージェントにそれぞれの承認発話をさせる。一例として、図16図18図20に示すように、1体のエージェント(R1およびR2の一方)には人(H)の意思に対して同調する発話(たとえば、「そうだよね」、「だよね」など)を行わせ、他の1体のエージェント(R1およびR2の他方)には人の意思表示に同調しない発話(たとえば、「そうかな」、「え、違う」など)を行わせる。それによって、人が表示した意思が「肯定または同意もしくは否定または不同意」のいずれであったかを認定することができる。
【0013】
第1の発明によれば、第1承認ダイアログ実行手段によって承認のための非言語動作を実行させ、第2承認ダイアログ実行手段によって承認対話を実行させるので、人にエージェントどうしの対話に参加している感覚(「対話感」)を生じさせるだけでなく、人にあたかもその承認対話の前提となる発話をしたような感覚を付与することができる。
【0016】
第2の発明は、第1または第2の発明に従属し、第2承認ダイアログ実行手段は、人の意思を拡大解釈したうえで、2体のエージェントに承認発話を実行させる、エージェント対話システムである。
【0017】
第2の発明によれば、第2承認ダイアログ実行手段によって、人の意思を拡大解釈したうえで、2体のエージェントに人の意思に対する承認対話を実行させるので、あたかもその承認の前提となる拡大解釈を伴う発話をしたような感覚を人に強く付与することができる。
【0018】
第3の発明は、それぞれが発話機能を有する2体のエージェントが対話場所においてスクリプトに従って対話し、対話場所に人が陪席するエージェント対話システムのコンピュータによって実行されるプログラムであって、プログラムはコンピュータを、対話場所における人の行為や状態変化などのセンサ信号を、人の実際の意思の如何によらず、人が表明した意思として認定するセンサマネージャ、センサマネージャが認定した、承認すべき意思があるかどうか判断する第1判断手段、第1判断手段が承認すべき意思があると判断したとき、スクリプトからダイアログキューにロードされた第1承認ダイアログに従って2体のエージェントに人の意思を承認する非言語動作を実行させる第1承認ダイアログ実行手段、スクリプトに従って人の意思を確認するフェーズかどうか判断する第2判断手段、第2判断手段で人の意思を確認するフェーズであると判断したとき、人の意思を確認できたかどうか判断する第3判断手段、および第3判断手段が人の意思を確認できたと判断したとき、スクリプトからダイアログキューにロードされた第2承認ダイアログに従って2体のエージェントに人の意思を承認する対話を実行させる第2承認ダイアログ実行手段として機能させる、エージェント対話システムのプログラムである。
【発明の効果】
【0023】
この発明によれば、エージェントどうしの対話においても、対話中の人の行為を人の実際の意思の如何にはよらず、人の意思表示として承認することによって、人に対話に参加している感覚(「対話感」)を生じさせ、さらにその承認を伴う発話をしたかのような感覚を人に付与する事ができる。
【0024】
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0025】
図1図1はこの発明の一実施例のロボット対話システムの概要を示す概略図である。
図2図2図1実施例におけるセンサマネージャの構成の一例を示すブロック図である。
図3図3図1実施例におけるグループマネージャの構成の一例を示すブロック図である。
図4図4図1実施例におけるロボットの一例を示す概略図である。
図5図5図4のロボットを制御するロボットコントローラの構成の一例を示すブロック図である。
図6図6図1に示すダイアログデータベースからグループマネージャに読み出されるスクリプトの一例を示す概略図である。
図7図7図1に示すグループマネージャの動作の一例を示すフロー図である。
図8図8図1に示すロボットコントローラの動作の一例を示すフロー図である。
図9図9図1実施例における対話シーケンスの一例を示す概略図である。
図10図10図1実施例における具体的な対話場面の一例を示す概略図である。
図11図11図1実施例における具体的な対話場面の他の例を示す概略図である。
図12図12図1実施例における具体的な対話場面の他の例を示す概略図である。
図13図13図1実施例における具体的な対話場面の他の例を示す概略図である。
図14図14図1実施例における具体的な対話場面の他の例を示す概略図である。
図15図15図1に示す人意思処理モジュールの動作の一例を示すフロー図である。
図16図16図1実施例において人の意思表示を処理する具体的な対話場面の一例を示す概略図である。
図17図17図1実施例において人の意思表示を処理する具体的な対話場面の他の例を示す概略図である。
図18図18図1実施例において人の意思表示を処理する具体的な対話場面の他の例を示す概略図である。
図19図19図1実施例において人の意思表示を処理する具体的な対話場面の他の例を示す概略図である。
図20図20図1実施例において人の意思表示を処理する具体的な対話場面の他の例を示す概略図である。
図21図21図1実施例において人の意思表示を処理する具体的な対話場面の他の例を示す概略図である。
図22図22図1実施例において人の意思表示を処理する具体的な対話場面の他の例を示す概略図である。
図23図23図1実施例において人の意思表示を処理する具体的な対話場面の他の例を示す概略図である。
図24図24図1実施例において人の意思表示を処理する具体的な対話場面の他の例を示す概略図である。
図25図25図1実施例において人の意思表示を処理する具体的な対話場面の他の例を示す概略図である。
【発明を実施するための形態】
【0026】
図1を参照して、この実施例のロボット対話システム10の対話場所12には、第1ロボットR1および第2ロボットR2と1人の人Hが存在する。ただし、ロボットの数は3以上でもよく、人の数は2以上でもよい。なお、以下において、第1ロボットR1および第2ロボットR2を特に区別する必要がないとき、単にロボットRと呼ぶことがある。
【0027】
人が発話するとき、その発話に応じる形で相手の発話が生成されなければ、対話を続けていくこと自体が困難になりやすいため、音声認識および自然言語処理の能力が完璧でないロボットは、人間の発話に対して適切な発話をし続けることは容易ではなく、対話は破綻しやすい。
【0028】
一方、人間は、他者どうしの対話を傍らで観察する際、その内容が完全に理解あるいは同意できるものでなくても、部分的に理解あるいは同意しながら、対話を聞き続けることができる。またそれにより、理解あるいは同意できなかった部分についても、後から理解あるいは同意できることがある。しかし、対話に参加している感覚(対話感)がなければ、その対話に集中し続けることは容易ではない。
【0029】
そこで、この実施例では、ロボットが発話する際に、必ずしも人間に返答させる形にするのではなく、その対話の場に別のロボットを陪席させ、ロボットの発話に対して適切な返答を、この陪席ロボットに発話させる、つまりロボットどうしに対話を行わせることで破綻を回避し、他方、そのロボットどうしの対話を人に聞かせ、時には人間の行為を意思表示、たとえば「同意」、「不同意」(「肯定」、「否定」)などを受けとみなし、その人の意思をロボットどうしの対話の継続あるいは複数のロボットによる非言語的な注意の表示等によって、承認して確定するなどして、人間に対話感を感じさせる。
【0030】
この実施例のようなロボット対話システムは、たとえば、独居生活者に対するコミュニケーションサービスロボット、情報提供サービスロボット、広告ロボットなどとして利用可能である。
【0031】
ロボット対話システム10の対話場所12の状況をセンシングするために、この実施例では、聴覚センサとしてのマイク14および視覚センサとしてのカメラ16が設けられる。マイク14は、ロボットRや人Hの発話による音声を含む環境音を取得するためのもので、必要なら2台以上設置されてもよい。カメラ16は、同じく対話場所12の状況、特に人Hの表情や動作を撮影するカメラであり、動画または静止画を撮影する。カメラ16も必要なら2台以上設置してもよい。
【0032】
さらに、上述のマイク14やカメラ16の他に、センサとして、図示はしないが、装着型の姿勢センサ、加速度センサ、心拍の状態、呼吸の状態、体動(体の動き)の状態などの生体信号を検知する生体センサ、モーションキャプチャシステムなどを設けてもよい。
【0033】
さらに、この実施例の対話システム10には、人Hの意思の表明のための手段として、意思表示デバイス17を設ける。この意思表示デバイス17は、一例として、肯定(Affirmation)または同意(Agree)を入力するための肯定ボタン17aと、否定(Negation)または不同意(Disagree)を入力するための否定ボタン17nを有する。ただし、肯定ボタン17aおよび否定ボタン17nは、たとえば押しボタンスイッチのようなハードウエアスイッチで構成されてもよいし、あるいはタッチスクリーン上のソフトウエアスイッチ(仮想ボタン)で構成されてもよい。また、肯定ボタン17aおよび否定ボタン17nがそれぞれ個別のスイッチないしボタンとして形成されてもよい。
【0034】
マイク14が取得した音声信号、カメラ16が撮影した画像信号および意思表示デバイス17が検出した入力信号(肯定、否定)さらには上述した生体信号を検出する生体センサ、モーションキャプチャシステムによって検知された人の行為や状態変化などのセンサ信号は、センサマネージャ18に入力される。センサマネージャ18は、これらのセンサ信号を取得して、対話場所12の状況を判定して、判定結果をセンシングデータとして、後述のグループマネージャ20および人意思処理モジュール23に出力する。
【0035】
図2を参照して、センサマネージャ18は、CPU(中央演算処理装置)18aを含み、CPU18aには、内部バス18bを介して通信装置18cが接続される。通信装置18cは、たとえばネットワークインタフェース(NIC)などを含み、CPU18aはこの通信装置18cを介してグループマネージャ20などと通信でき、それらの間でデータの授受を行うことができる。
【0036】
CPU18aにはさらに、内部バス18bを介して、メモリ18dが接続される。メモリ18dはROMやRAMを含む。たとえばDSP(Digital Signal Processor)で構成されるセンサI/F(インタフェース)18eを通して、マイク14(図1)からの音声信号やカメラ16(図1)からの画像信号を含むセンサ信号が入力される。そして、メモリ18dは、センサ信号を一時的に記憶する。
【0037】
センサマネージャ18は一種の判定器であり、CPU18aは、メモリ18dに記憶したセンサデータに基づいて、対話場所12の状態や人Hの意思を判定する。たとえば、マイク14が取得した音声信号、カメラ16が撮影した画像信号および意思表示デバイス17が検出した入力信号(肯定、否定)さらには上述した生体信号を検出する生体センサ、モーションキャプチャシステムによって検知された人の行為や状態変化などのセンサ信号を人Hの実際の意思の如何にはよらず、人Hが表明した意思が入力されたものとして認定し、処理してすることができる。そして、センサマネージャ18は、判定した状態を示すデータをグループマネージャ20および人意思処理モジュール23に送る。
【0038】
また、センサマネージャ18に必要なプログラム(OSやセンサ信号取得プログラムなど)は、メモリ18dに記憶される。センサマネージャ18はメモリ18dに記憶されたプログラムに従って動作する。
【0039】
なお、CPU18aにはさらに、(図示せず)キーボードやディスプレイが付属されてもよい。
【0040】
図3に示すグループマネージャ20は、たとえば後述の図7のフロー図に従って、2台のロボットRのそれぞれの発話動作(言語動作:Verbal operation)および振舞い(非言語動作:Nonverbal operation)を制御する。
【0041】
グループマネージャ20は、CPU20aを含み、CPU20aには、内部バス20bを介して通信装置20cが接続される。通信装置20cは、たとえばネットワークインタフェース(NIC)などを含み、CPU20aはこの通信装置20cを介してセンサマネージャ18やロボットRなどと通信でき、それらの間でデータの授受を行うことができる。
【0042】
CPU20aにはさらに、内部バス20bを介して、メモリ20dおよび入力装置20eが接続される。メモリ20dはROMやRAMを含む。メモリI/F20fを通してダイアログデータベース22から、スクリプト(ダイアログ)を読み込み、それをメモリ20dに一時的に記憶する。ただし、「ダイアログ」は、対話中に行うべき発話や非言語動作の指令の系列を意味し、ダイアログデータベース22は、ダイアログの集合(たとえば、バナナの何が好きという対話やロボット介護の何が大切かという対話など、各トピックの対話のための指令の系列が含まれる)である。そして、「スクリプト」は、その指令の系列を表す文字列のことであり、スクリプトデータは、その指令を表す文字列である。したがって、スクリプトデータの系列がスクリプトになる。このようなスクリプトは、グループマネージャ20によって、ダイアログキュー23cからロボットR1およびR2に送信される。ただし、スクリプトデータは、言語データだけでなく、非言語データも含む。言語データは、ロボットR1およびR2の発話を指示するスクリプトデータであり、非言語データは、たとえばロボットR1およびR2の動作、人Hを見る、頷く、首を横に振る、首をかしげるなどの、非言語動作を指示するスクリプトデータである。このようなスクリプトデータには、さらに、人Hの意思(明示的または非明示的)を確認するフェーズ(意思確認フェーズ)であることを示す記述が必要に応じて追加されている。
【0043】
また、グループマネージャ20に必要なプログラム(OSやセンサ信号取得プログラムなど)は、メモリ20dに記憶される。グループマネージャ20はメモリ20dに記憶されたプログラムに従って動作する。
【0044】
なお、このグループマネージャ20のCPU20aは、上述のように、各ロボットの動作つまり振舞いを制御するが、その振舞いの履歴は、上述のメモリ20dに蓄積され、必要に応じて、センサマネージャ18に提供する。
【0045】
さらに、図1に示すロボット対話システム10では、人意思処理モジュール23が設けられる。この人意思処理モジュール23は、独立したコンピュータであってもよいが、この実施例では、上述のグループマネージャ20の1つのプログラムとして構成されている。したがって、この人意思処理モジュール23は、CPU20aによって制御される。
【0046】
人意思処理モジュール23は、後に図15を参照して詳しく説明するように、センサマネージャ18が、必ずしも人Hの実際の意思の如何にはよらず、認定した人Hの意思、たとえば肯定または否定に応じて、その認定された人Hの意思に対処するためにロボットR1およびR2が発話するためのスクリプトデータ(ダイアログ)をダイアログデータベース22から読み出し、それぞれがメモリ20dの領域であるプール23aに記憶させる(ロードする)。
【0047】
文脈外応答ダイアログプール23bは、文脈すなわち次ダイアログ候補プール23aにロードした将来の一群のダイアログやダイアログキュー23cにロードされ、進行中であるダイアログでは予定していなかった例外的な、すなわち文脈外の人Hの意思表示があったときに対処するために発話しまたは非言語動作を実行すべき一群のスクリプトを記憶しておくための記憶領域である。文脈外の意思表示とは、たとえば、前述の意思表示デバイス17の肯定ボタン17aおよび/または否定ボタン17nを連打する、ロボットが人の意思表示を待つ発話をしたにも拘わらず無視していつまでも意思表示をしない、などが考えられる。
【0048】
ダイアログキュー23cもたとえばメモリ20dの中の一領域であるが、このダイアログキュー23cには、次ダイアログ候補プール23aにロードされているスクリプトデータや、文脈外応答ダイアログプール23bにロードされているスクリプトデータを、次にロボットR1および/またはR2が即座に実行できるように,待ち行列の形でロードすることができる。
【0049】
スクリプトには、たとえばヘッダとして、それに含まれるスクリプトデータの実行時間(tnext)が書き込まれていて、ダイアログキュー23cでは、その実行時間(tnext)によって常にスクリプトデータがソーティングされ、グループマネージャ20は、実行時間が同じスクリプトデータが同時に実行されるように、各ロボットコントローラ24にスクリプトデータを送る。したがって、たとえば、ロボットR1およびR2が同時に同じ動作、たとえば人Hを見るなどの動作ができるし、同じロボットR1またはR2が、たとえば、発話と同時に他方のロボットまたは人Hを見ることもできる。
【0050】
図4を参照して、この図4は実施例のロボットRの外観を示し、ロボットRは台30上に、台30に対して、前後左右に回転できるように、設けられる。つまり、胴体32には2自由度が設定されている。
【0051】
胴体32の人の肩に相当する左右位置からは、それぞれに、肩関節(図示せず)によって、右腕34Rおよび左腕34Lが、前後左右に回転可能に設けられる。つまり、右腕34Rおよび左腕34Lには、それぞれ、2自由度が設定されている。
【0052】
胴体32の上端中央部には首36が設けられ、さらにその上には頭部38が設けられる。首36すなわち頭部38は、胴体32に対して、前後左右に回転できるように、取り付けられている。つまり、首36すなわち頭部38には、ロール角(左右の傾げ)、ピッチ角(前後の傾げ)、ヨー角(左右の回転)の3自由度が設定されている。
【0053】
頭部38の前面すなわち人間の顔に相当する面には、右目40Rおよび左目40Lが設けられ、右目40Rおよび左目40Lには眼球42Rおよび42Lが設けられる。右目40Rおよび左目40Lは、まぶたを閉じたり開いたりでき、眼球42Rおよび42Lはそれぞれ上下左右に回転可能である。つまり、右目40Rおよび左目40Lすなわちまぶたには1自由度が、眼球42Rおよび42Lには2自由度が設定されている。
【0054】
顔にはさらに、口44が設けられていて、口44は、閉じたり開いたりできる。つまり、口44には1自由度が設定されている。
【0055】
胴体32の、人間の胸の位置には、対話システム10において人Hに聞かせるための発話を行うスピーカ46および環境特に人Hの発話音声を聞き取るマイク48が設けられる。
【0056】
なお、頭部38の顔の額に相当する部分には動画または静止画を撮影できるカメラ50が内蔵される。このカメラ50は、対面する人Hを撮影でき、このカメラ50からのカメラ信号(映像信号)は、環境カメラ16(図1)と同様に、センサマネージャ18のセンサI/Fを介してCPU18aに、入力されてもよい。
【0057】
図5はロボットRに内蔵されてロボットRの動作(発話やジェスチャなど)を制御するロボットコントローラ24を示すブロック図である。この図5を参照して、ロボットコントローラ24は、CPU24aを含み、CPU24aには、内部バス24bを介して通信装置24cが接続される。通信装置24cは、たとえばネットワークインタフェース(NIC)などを含み、CPU24aはこの通信装置24cを介してセンサマネージャ18、グループマネージャ20、さらには外部のコンピュータや他のロボット(ともに図示せず)などと通信でき、それらの間でデータの授受を行うことができる。
【0058】
CPU24aにはさらに、内部バス24bを介して、メモリ24dが接続される。メモリ24dはROMやRAMを含む。グループマネージャ20から送られる制御データやスクリプトデータがメモリ24dに一時的に記憶される。
【0059】
また、ロボット制御に必要なプログラム(OSやセンサ信号取得プログラムなど)は、メモリ24dに記憶される。ロボットコントローラ24はメモリ24dに記憶されたプログラムに従ってロボットRの動作を制御する。
【0060】
つまり、ロボットコントローラ24のCPU24aにはさらに、たとえばDSPで構成されたアクチュエータ制御ボード24eが接続され、このアクチュエータ制御ボード24eは、以下に説明するように、ロボットRの上述の各部に設けられたアクチュエータの動作を制御する。
【0061】
胴体32の2自由度の動き、すなわち前後左右の回転は、アクチュエータ制御ボード24eを通してCPU24aが胴体アクチュエータ52を制御するとこによって制御される。
【0062】
右腕34Rおよび左腕34Lの2自由度の動き、すなわち前後左右の回転は、アクチュエータ制御ボード24eを通してCPU24aが腕アクチュエータ54を制御することによって制御される。
【0063】
首36すなわち頭部38の3自由度の動き、すなわち前後左右の回転は、アクチュエータ制御ボード24eを通してCPU24aが頭部アクチュエータ56によって制御される。
【0064】
右目40Rおよび左目40Lすなわちまぶたの開閉動作は、アクチュエータ制御ボード24eを通してCPU24aがまぶたアクチュエータ58を制御することによって制御される。眼球42Rおよび眼球42Lの2自由度の動きすなわち前後左右の回転は、アクチュエータ制御ボード24eを通してCPU24aが眼球アクチュエータ60を制御することによって制御される。口44の開閉動作は、アクチュエータ制御ボード24eを通してCPU24aが口アクチュエータ62を制御することによって制御される。
【0065】
なお、図4に示すロボットRのスピーカ46がロボットコントローラ24のCPU24aに接続される。CPU24aは、グループマネージャ20から与えられ、必要に応じてメモリ24dに記憶されたスクリプトデータに従って、スピーカ46から発声(発話)させる。
【0066】
このようなロボットコントローラ24によって、ロボットRの頭や腕は、対話システム10において必要なとき、たとえばスクリプトで非言語動作が要求されているとき、必要な動きをするが、以下の説明では、各アクチュエータなどの具体的な制御は、上述の説明から容易に推測できるので、必ずしも説明しない。
【0067】
図1に示すように、それぞれのロボットR1およびR2には、ロボットコントローラ24と同様に内蔵したロボットセンサ26が設けられる。ロボットセンサ26は、ロボットR1およびR2のそれぞれの可動コンポーネントの状態を検知するための姿勢センサや加速度センサなどを含み、それらのセンサからのセンサ信号は、センサマネージャ18に入力される。したがって、センサマネージャ18は、ロボットセンサ26からのセンサ信号に基づいて、ロボットR1およびR2の状態をセンシングすることができる。
【0068】
なお、図4に示すロボットRのマイク48やカメラ50がロボットセンサ26を介してセンサマネージャ18に入力される。センサマネージャ18は、マイク48から取り込んだ音声データをメモリ18d(図2)に記憶し、必要に応じて、音声認識処理を実行する。センサマネージャ18はまた、カメラ50からのカメラ信号を処理して、対話場所12の状況をセンシングする。
【0069】
なお、センサマネージャ18は、図1の実施例では1つだけが図示されているが、2つ以上の任意数のセンサマネージャが設けられてもよく、その場合には、各センサマネージャはセンシング項目を分担することができる。
【0070】
同様に、必要なら、2以上のグループマネージャ20を用いるようにしてもよいし、逆にセンサマネージャ18およびグループマネージャ20を1台のコンピュータで実現するようにしてもよい。
【0071】
また、図1実施例の対話システム10に用いられるロボットRは図4を参照して上で説明したロボットに限定されるものではなく、少なくともスクリプトに従って発話できる機能があればよい。
【0072】
図6は、ロボットRがそれに従って対話するスクリプトの一例を示す概略図である。このスクリプトでは、まず、ロボットRどうしが対話する部分(時間帯)と、ロボットRが人Hに対して問いかけ(質問や同意の要求)をする部分(時間帯)を明確に区別する。そのためのフラグが、実施例では、「質問フラグFah(FLAG_ASK_HUMAN)」である。
【0073】
質問フラグFahがリセットされているとき、つまり、「Fah=1」でないときは、ロボットRどうしが、スクリプトデータによって予め決められた発話文をスピーカ46(図4図5)から出力して、参加者である、人Hにその対話内容を聞かせる。質問フラグFahがセットされているとき、つまり、「Fah=1」のときは、ロボットRが、スクリプトデータによって予め決められた発話文をスピーカ46(図4図5)から出力して、参加者である、人Hに対して発話する。
【0074】
図6の例では、上段のパート(A) と下段のパート(C) がそのロボットどうしの対話を行うためのスクリプトデータであり、中段のパート(B) がロボットRから人Hに問いかけを行うためのスクリプトデータである。
【0075】
パート(A)のスクリプトの第1行(a1)、第2行(a2)、第3行(a3)では、「tnext=XX」が定義されていて、ここでは「XX1」、「XX2」、「XX3」は、それぞれのスクリプトデータを実行すべき時間または時刻を規定する。「RR」は、ロボットからロボットへ発話することを記述していて、それに後続する「SPEAKER=R1(R2)」「LISTNERR=R2(R1)」は、そのときの発話者が第1ロボットR1(または第2ロボットR2)であり、聴取者が第2ロボットR2(または第1ロボットR1)であると定義している。
【0076】
スクリプトデータ中の「TEXT」に後続する記述が、そのときロボットが発話すべき発話文である。そして、「NONVERBAL」に後続する記述は、第1ロボットR1および/または第2ロボットR2が行うべき非言語動作たとえば相手のロボットを見るとか、人Hを見るとかなどを規定する。
【0077】
パート(B)では、質問フラグFahがセットされている、つまり、「Fah=1」なので、2台のロボットR1およびR2のいずれか一方、この例では第1ロボットR1から、人Hに対して、問いかけの発話文が出力される。したがって、第1行(b1)では、時間を規定する記述「tnext=XX4」に続いて、第1ロボットR1が人に対して発話することを示す「RH: SPEAKER=R1, LISTNER=H」が記述される。「TEXT」、「NONVERBAL」については上述のとおりである。
【0078】
パート(B)の第1行(b1)の下に、条件1、条件2、条件3のスクリプトデータがあるが、これらは、第1行(b1)でしたロボットRからの問いかけに対して人Hが発話したとき、次にロボットが発話する内容(返答)が条件に応じて変化することを規定している。
【0079】
条件1は、人Hからの発話についてロボットどうしがたとえば「面白いね」などと会話するスクリプトデータであり、そのために、時間を規定する記述「tnext=XX5」に続いて、第2ロボットR2が第1ロボットR1に対して発話することを示す「RR: SPEAKER=R2, LISTNER=R1」が記述される。
【0080】
条件2および条件3は、いずれも、人Hの発話に対してロボットが反応するという設定で、いずれも、時間を規定する記述「T=XX5」に続いて、第2ロボットR2または第1ロボットR1が人に対して発話することを示す「RH: SPEAKER=R2, LISTNER=H」または「RH: SPEAKER=R1, LISTNER=H」が記述されている。
【0081】
これら条件2または条件3の発話文は、センサマネージャ18がマイク14からの音声を音声認識し、その音声認識の結果に応じて、グループマネージャ20によって決められるが、発話文の内容については、スクリプトデータとして予め定義されている。たとえば、第1行(b1)での「あなたは何が好きですか?」というロボットからの問いかけ文に対して、人Hが「僕は○○が好きです。」と発話したとき、ロボットからは「○○はいいですね」とか「僕は○○より△△がすきだよ。」とか返答する。いずれも、人Hの発話に含まれていた「○○」をセンサマネージャ18が認識した結果の発話である。そのため、条件2および条件3のいずれでも、「○○」を除いた発話文を予め規定しておく。
【0082】
パート(C)は、パート(A)と同様に、質問フラグFahがリセットされている、つまり、「Fah=1」ではないので、ロボットどうしが会話するパートであるが、基本的にパート(B)での人Hからの発話とは無関係に進行する。スクリプトデータの内容は、パート(A)において説明した通りであるので、ここでは重複する説明はしない。
【0083】
なお、図6の実施例における発話タイミングを決める時間ないし時刻tnextは、たとえば人Hからの発話割り込み(インタラプト)があった場合など、センサマネージャ18の指示に基づいてグループマネージャ20が更新する(ずらす)必要があるかもしれない。たとえば、センサマネージャ18が発話タイミングの更新の要否を示すフラグ(図示せず)を管理していて、グループマネージャ20はそのフラグがセットされたとき(「1」のとき)、Tを書き換えるようにすればよい。
【0084】
図1のロボット対話システム10では、対話場所12の2台のロボットR1およびR2は、図6において例示したようなスクリプトに従って対話を進行するが、これらのロボットR1およびR2の発話を統括的に制御するのが、グループマネージャ20である。
【0085】
図7に示すフロー図は、そのグループマネージャ20のCPU20a(図3)の動作を示す。この図7の動作は、たとえばフレームレート程度の速度で繰り返し実行される。
【0086】
最初のステップS1でCPU20aは、ダイアログデータベース22(図1)からたとえば図6に例示したようなスクリプトデータを読み込むなど、初期化を実行する。
【0087】
続くステップS2においてCPU20aは、センサマネージャ18(図1図3)から送られるセンサデータを更新する。
【0088】
センサマネージャ18では、図1に示すマイク14やカメラ16などのセンサからのセンサ信号に基づいて、非言語パラメータ「NONVERBAL_PARAMETERS」、たとえば人の「目が落ち着かない」、「あくびをした」などの状態を、センシングする。さらに、前述のように、センサマネージャ18は、人の意思を示す信号も意思表示デバイス17から受け取って、人がそのどのような意思を表明したか認定できる。
【0089】
さらに、センサマネージャ18では、同じくセンサ信号に基づいて、「人の声があるか」、「(誰かが)話し中か」、「言語によってインタラプトされているか」あるいは「ロボットが非言語的に応答すべき振舞を人が生成しているか」などをセンシングする。
【0090】
また、ロボットの振舞い、の、詳細なパラメータを決定するために必要な情報(たとえば、人Hを見る場合だと、人の位置、人に対して頷く場合だと人の発話の抑揚や終了点)をセンシングする必要がある。
【0091】
さらに、個々のロボットがどのように振舞ったか、たとえば「話す、「待つ」、「聞く」、「陪席する」などのいずれを実行したかをセンシングする必要があるが、これらのロボットの振舞いは、ロボットの振舞いの履歴を管理するソフトウェアからの入力(たとえば、グループマネージャ20から)によってセンシングすることができる。
【0092】
ステップS2ではこのようなセンサマネージャ18からのセンシングの結果データ(センシングデータ)を更新する。
【0093】
次のステップS3で、CPU20aは、ダイアログキュー23cが更新されたかどうか判断する。ステップS3で“NO”の場合、ステップS5に進む。“YES”の場合、ステップS4で現在時間(t)を「0」にセットするとともに、実行時間(tnext)を「-1」にセットする。
【0094】
ステップS3で“NO”を判断したとき、次のステップS5では、ステップS2で更新したセンシングデータに基づいて、グループマネージャ20のCPU20aは、人Hの発話による割り込みがあったかどうか、判断する。
【0095】
このステップS5で“YES”を判断したとき、CPU20aは、次のステップS7において、発話回復フラグIS_RECOVER= Frcがセットされているかどうか、つまりFrc=1かどうか判断する。ここで“YES”ということは、ステップS5で検出した人の発話による発話衝突から復帰したことを意味し、ロボットRが何か発話を挿入する必要があるということである。したがって、ステップS9において、ステップS1で読み出した人Hの発話による割り込みによるダイアログ中断状態から復帰するための復帰フェーズ用のスクリプトデータをロードし、ステップS11で、ロボットRすなわちロボットコントローラ24にブロードキャストする。したがって、その後ロボットRがその復帰フェーズ用のスクリプトデータに従って発話することになる。
【0096】
ただし、このステップS9(後述のステップS17およびS19でも同様)でロードするスクリプトデータは、図6で説明したように、発話者はだれか「ID_SPEAKER」、聴取者はだれか「ID_LISTNER」、陪席者(参加者)はだれか「ID_BYSTANDER」、発話時間「ONSET_TIME_SPEECH」、非言語動作「NONVERBAL_PARAMETERS」などの情報を含む。
【0097】
たとえば、人の発話割り込みに対して、第1ロボットR1から人に対して「そっか」を発話したり、第2ロボットR2から第1のロボットに「それで?」と発話したり、第1ロボットR1から第2ロボットR2に「そうそう、(スクリプトで決まっている次の発話)」と発話したりする。つまり、人の発話割り込みに対して、軽く返事をする程度の発話を挿入する。人の発話は無視されているわけではないが、その発話に対してロボットはその発話内容に対して正確に応答する返事をするのではなく、スクリプトで決められた返事を返すだけである。
【0098】
そして、ステップS11の後、ステップS2に戻る。
【0099】
ステップS13で“YES”なら、つまり、スクリプトで予め決めた次の発話時間になったと判断したとき、CPU20aは、ステップS15で、前述の質問フラグFahがセットされているかどうか、つまり、人Hに対して問いかけ文を発話するかどうか判断する。
【0100】
ステップS15で“YES”なら、ステップS17において、ダイアログキュー23cにストアされている、問いかけフェーズ用スクリプトデータを先頭からロードし、ステップS11でそれをブロードキャストする。
つまり、人の返答は無視されているわけではない。
【0101】
そして、ステップS15において“NO”が判断されると、つまり、人に対する問いかけを発話するときではないと判断したとき、CPU20aは、次のステップS19で問いかけ用ではないスクリプトデータ(非問いかけ用スクリプトデータ)をロードする。
【0102】
ステップS21で、CPU20aは、スクリプトがまだ残っているかどうか判断する。つまり、対話フラグIS_CONVERSATIONがリセットされているかどうか判断する。“YES”のときは、ステップS11に進むが、“NO”の場合には、ステップS23でその旨ブロードキャストし、ステップS25で終了処理をして、このルーチンが終わる。
【0103】
ロボットR1およびR2は、いずれも、図8のフロー図に従って、ロボットコントローラ24によって制御される。この図8のルーチンも、図7のルーチンと同様に、たとえばフレームレートで繰り返し実行される。
【0104】
ステップS31では、ロボットコントローラ24のCPU24aは、初期化を実行し、次のステップS33において、センサマネージャ18から受け取ってグループマネージャ20から図7に示すようにブロードキャストされたフラグまたはデータ「IS_CONVERSATION(まだ対話する)」、「IS_ONSPEECH(誰が発話している)」、「CAN_BE_RECOVERED(発話衝突から回したか)」、「IS_INTERRUPTED_VERBAL(言語によるインタラプトがあるか)」、「IS_INTERRUPTED_NONVERBAL(非言語によるインタラプトがあるか)」、「ID_SPEAKER(誰が発話する)」、「ID_LISTNER(誰が聞く)」、「ID_BYSTANDER(誰が陪席者か)」、「SPEECH_TEXT(発話文)」、「ONSET_TIME_SPEECH(発話時間)」、「NONVERBAL_PARAMETERS(非言語パラメータ:いつ誰に視線を向けるか、頷くか、などの非言語動作を規定するパラメータ)」を受ける。
【0105】
そして、ステップS34において、CPU24aは、データ「IS_CONVERSATION」を参照して、対話がまだ継続するのかどうか判断する。“YES”なら、次のステップS35において、ロボットコントローラ24のCPU24aは、ステップS33で受信したグループマネージャ20からブロードキャストされたデータに非言語動作のスクリプトデータがあるかどうか判断する。そして、ステップS35で“YES”と判断したら、CPU24aは、次のステップS36において、その非言語動作の指令を実行するように、該当のロボットR1および/またはR2のアクチュエータ制御ボード24eに動作命令を与える。したがって、ロボットR1および/またはR2がブロードキャストされた非言語動作を実行する。
【0106】
そして、先のステップS35で“NO”なら、次のステップS37で、データ「IS_ONSPEECH」を参照して、誰かが発話しているかどうか判断する。“YES”なら、ステップS39で、そのときの話し手は、自分(が制御するロボット)かどうか判断する。つまり、データ「ID_SPEAKER」を参照して、自分が発話中かどうか判断する。
【0107】
自分(が制御するロボット)が発話中であれば、ステップS39で“YES”となり、ステップS41に進む。ステップS41では、CPU24aは、言語によるインタラプト(発話遮断)があるかどうか、データ「IS_INTERRUPTED_VERBAL」を参照して判断する。ステップS41で“YES”なら、言語によるインタラプトがあるということなので、次のステップS43で、CPU24aは、データ「CAN_BE_RECOVERED」を参照して、発話を再開してもよいかどうか判断する。
【0108】
ステップS43で“YES”なら、ステップS46でロボットに発話を再開させるが、“NO”なら、ステップS46で、ロボットに発話させないで、待たせる。
【0109】
ステップS41で“NO”が判断されると、すなわち、言語によるインタラプトがないとき、CPU24aは、ステップS47において、非言語動作でインタラプトされたかどうか判断する。たとえば、人が不規則な非言語動作、たとえば人Hが大きく動いたりしていないかどうか判断する。
【0110】
「人Hが不規則な非言語動作をしている、あるいはロボットの話に対して頷きなどの傾聴動作を示しているなど、ロボットが非言語的応答を生成しながら発話すべきと判断したときは、ステップS47で“YES”となるので、続くステップS48で、CPU24aは、それが制御しているロボットR1またはR2に対して、データ「NONVERBAL_PARAMETERS」に基づく非言語動作によって応答させる。ステップS47で“NO”のとき、CPU24aによる処理は、ステップS33に戻る。
【0111】
ステップS39で“NO”のとき、つまり、自分(が制御するロボット)が発話指示されていないときには、データ「ID_LISTNER」を参照して、自分が聞き手として指定されているかどうか判断する。
【0112】
ステップS49で“YES”なら、ステップS51で、CPU24aは、それが制御しているロボットRが聞き手になるように制御する。
【0113】
ステップS49で“NO”なら、データ「ID_BYSTANDER」がロボットR1またはR2が陪席者となることを指示しているので、ロボットコントローラ24すなわちCPU24aは、ロボットR1またはR2に対して、陪席者としての動作を行わせる。
【0114】
ステップS37で“NO”を判断したとき、つまり、誰も発話中ではないとき、ステップS55で、CPU24aは、データ「ID_SPEAKER」を参照して自分が話し手か判断する。“YES”なら、自分が制御しているロボットR1またはR2が、ステップS57において、発話文TEXTの内容に従って発話するように、制御する。
【0115】
ステップS55で“NO”なら、当該ロボットは発話者でもなく、聴取者でもないのであるから、CPU24aは、自分のロボットがステップS59で陪席者として動作するように、制御する。
【0116】
ステップS34で“NO”なら、ステップS61で終了処理を実行した後このルーチンを終了する。
【0117】
このように、ロボットRはいずれも、グループマネージャ18からブロードキャストされたスクリプトにおいて決められているタイミングで、スクリプトにおいて決められた内容を発話するだけで、自発的な発話はしない。
【0118】
他方、人Hからの発話をロボットRは解釈しない。人Hから発話があっても、ロボットRは相槌を打つだけで、その人からの発話には応答しない。その相槌も、スクリプトに決めた通りに発話する。
【0119】
このような、ロボットコントローラ24によるスクリプト通りのロボットR1およびR2の対話システムを用いれば、図9に示すように対話シーケンスが成立する。
【0120】
たとえば、ロボットが人に向かって話していることとロボットがロボットに向かって話していることがはっきりと区別でき、また同時に、対話の中で陪席者となる人間やロボットを無視してしまっているように見えないように、対話の履歴と参加者の意図推定に基づき、ロボットどうしの対話と人に対する問いかけのための、発話と視線配布や相槌などのしぐさを生成する。つまり、ロボットRは人Hの発話を聞き流すことができるので、人Hに対して質問して人Hに発話させることができる。これにより、人がロボットどうしの対話に、自分も参加しているような感覚を覚えさせることができる。また結果として、ロボットどうしの対話に含まれる内容を人に対して印象付けることができる。
【0121】
具体的には、図10図14で示す場面をスクリプトによって意図的に出現させることができる。ただし、図10図14の具体例は、人Hの意思表示とは直接には関係しない。
【0122】
図10の例では、第1ロボットR1および第2ロボットR2が、発話を繰り返しながら、話題(トピック(Topic)またはテーマ)Aについて、対話を進行しているとき、話題Aから話題Bに切り換えるとき、スクリプト上で、ロボットR1および/またはR2が人Hに対して質問するように制御する。このときの質問の内容は、たとえば、既に終わった話題Aに関するものでもよく、これから始まる話題Bに関するものでもよい。その両方に関するものでもよい。そして、人Hから回答があると、ロボットR1および/またはR2がスクリプトに従ってたとえば「そっか」というような相槌を発話する。
【0123】
つまり、ロボットどうしの対話中には人Hに対して問いかけはせず、話題切り換えのタイミングで人Hに向けてロボットが発話する。そうすると、人Hは、ロボットどうしの対話に参加しているような意識を持って、その状態を持続することができる。
【0124】
ただし、人Hからの回答に対して、ロボットが割り込みするようにしてもよい。たとえば、ロボットR2「○○は××だから、△△です。」、ロボットR1「え、でも○○って□□じゃないですか?」、ロボットR2「そっか、でも(話題Bに入る)」のような割り込みも可能である。
【0125】
図11の例では、ロボットR1およびR2が質問や回答を繰り返しながら何らかの話題について対話を進行しているとき、ロボットがロボットにしたのと同じ質問を人Hに対して発話する。たとえば、ロボットR1および/またはR2によって、人Hに「あなたはどう(おもいますか)?」のような質問をさせる。そうすると、人Hから回答がある。ロボットR1およびR2は、それに対して、図10の場合と同様の相槌を発話する。
【0126】
図12の例では、図11の場合と逆に、ロボットどうしの対話をしているときに、ロボットR1またはR2が人Hにしたと同じ質問を他方のロボットR2またはR1にする。この場合には、人Hはロボットどうしの対話の中に自分に対する質問と同じ質問が含まれることで、「対話感」を持つことができるであろう。
【0127】
図13の例では、ロボットR1およびR2が質問や回答を繰り返しながら何らかの話題について対話を進行しているとき、たとえば第2ロボットR2が第1ロボットR1に何かについて説明し、第1ロボットR1から感想を述べる発話を行う。その感想に対して人Hが同意するように、ロボットR1またはR2から人Hに対して、たとえば「ね」と、同意を求める。この場合も、ある程度納得できる話であれば、同意の発話をしたり、心の中での同意を促したりすることができるので、人Hにはロボットどうしの対話に参加しているという意識を持続することができる。
【0128】
図14の例は、たとえば第2ロボットR2から第1ロボットR1
にたいして質問または説明し、それに対して第1ロボットR1がわざと間違った、勘違いした返答、あるいは理解していないことを尋ねる質問をして、人に「そうじゃなくてこうだよ」などと、人から訂正や補足の発話を行なうように、促す。ただし、人からの発話がなければ、第2ロボットR2が、代わりに訂正や補足をして、はじめのロボットの発話を流す。人は、積極的に自分も対話に参加する形になるので、対話感がより高まる。
【0129】
なお、意思表示デバイス17で検出した、陪席者である人Hによる意思表示があったときには、人意思処理モジュール23が図15に示すフロー図に従って、ダイアログデータベース22から次ダイアログ候補プール23aまたは文脈外応答にダイアログ(スクリプトデータ)をロードし、さらには次ダイアログ候補プール23aからダイアログキュー23cにダイアログ(スクリプトデータ)をロードする。
【0130】
具体的に、図15の最初のステップS71では、人意思処理モジュール23を制御するCPU20aは、初期化を実行するとともに、ダイアログデータベース22から、ダイアログ(スクリプトデータ)を次ダイアログ候補プール23aに読み込む。つまり、どのトピックないしテーマのダイアログを読み出すかを決めて、そのトピックないしテーマの一群のダイアログを次ダイアログ候補プール23aに読み込む。このとき、ダイアログの依存関係、たとえばどのダイアログの前にこのダイアログを実行してはならないとか、このダイアログは特定のダイアログと同時に実行されるべきである、などの拘束条件を併せて読み込む。それとともに、ステップS71では、次ダイアログ候補プール23aから、必要なダイアログをダイアログキュー23cにロードする。
【0131】
このときのダイアログは、たとえば、一方のロボットR1をトピックに対して一貫して賛成の立場で発話または動作させ、他方のロボットR2を一貫して反対の立場で発話または動作させるように、設定されていて、各ロボットは終始その立場を変えないものとする。
【0132】
次のステップS73では、CPU20aは、センサマネージャ18からのセンサデータを更新する。
【0133】
そして、次のステップS75で、CPU20aは、更新したセンサデータに、承認すべき人の意思が検出されているかどうか判断する。
【0134】
ステップS75で“YES”を判断したとき、つまり、ロボットR1および/またはR2が承認しなければならない人の意思があったとき、ステップS77では、CPU20aは、人の意思表明に対する承認ダイアログ(主として非言語動作)をダイアログキュー23cへロードする。
【0135】
ただし、承認ダイアログが各ロボットの予定されているダイアログ(非言語動作を含む)と干渉するものであるとき、その承認ダイアログはロードしない。たとえば、いずれかのロボットに次に人Hを見ることが予定されているとき、承認ダイアログが「当該ロボットが人Hを見る」であるとすれば、その承認ダイアログはダイアログキュー23cへは入れない。さらに、いずれかのロボットに他のロボットを見るというダイアログが予定されているとき、承認ダイアログが「当該ロボットが人Hを見る」であるとすれば、ロボットが他のロボットを見てすぐに人Hを見なければならず、ロボットが不自然な動作(干渉)をしてしまう。したがって、このときもその承認ダイアログはダイアログキュー23aへはロードしない。
【0136】
つまり、ステップS77では、他のダイアログと干渉しないダイアログだけが、人の意思を承認する承認ダイアログとしてダイアログキュー23cにロードされる。したがって、このダイアログキュー23cにロートされた承認ダイアログに従って、たとえば「ロボットR1およびR2がともに人Hを見る」というような非言語動作によって、ステップS75で検出した人Hの意思を承認する。
【0137】
なお、ステップS75で“NO”を判断したとき、すなわち、ロボットが承認すべき人の意思表示が検出されていないときには、そのままステップS79へ進む。
【0138】
ステップS79では、人の意思を確認するフェーズかどうか判断する。たとえば、先の発話が人Hに対する質問文あるいは否定文の形式である場合、その質問文あるいは否定文のスクリプトに人の意思を確認すべきことと、確認すべきタイミングを設定しておき(たとえば図6の質問フラグFah)、ステップS79では、そのタイミングかどうか判断する。
【0139】
そして、ステップS81では、人Hの意思を認定できたかどうか判断する。たとえば、人Hが意思表示デバイス17の肯定ボタン19aまたは否定ボタン19nを操作して意思を入力したことが明白であれば、CPU20aは、人の意思を認定することができる。これに対して、人Hが意思表示デバイス17を操作せず、質問文を無視した場合、CPU20aは、人の意思を確定的に認定できない。
【0140】
このような場合、図15では図示していないが、人意思処理モジュール23は、人Hの意思を確定させるために必要なダイアログを、ダイアログキュー23cにロードして、いずれかのロボットRが発話によって、非言語動作によって、あるいは両方で、人Hの意思の確定を促すようにしてもよい。たとえば、ロボットR1および/またはR2が人Hを見るというような非言語動作で、および/またはロボットR1および/またはR2のたとえば「どう思いますか」のような発話で、人Hの意思を確認することができる。そして、このような意思確定ダイアログを実行した後、先のステップS73に戻し、再び意思が認定できるかどうか判定するようにすればよい。
【0141】
ただし、所定時間たとえば5秒間、人Hからの意思表明がなかったときには、人Hの意思は「肯定」または「否定」のどちらかであると、看做すこともできる。
【0142】
このようにして人Hの意思が確定的に認定できると、ステップS81から、次のステップS83に進む。そして、ステップS83では、CPU20aは、人意思処理モジュール23を制御して、認定した人Hの意思に基づいて、その意思を承認するためのダイアログ(スクリプトデータ)を次ダイアログ候補プール23aから選択して、ダイアログキュー23cにロードする。したがって、このとき、ロボットR1およびR2は、このダイアログキュー23cにロートされた承認ダイアログに従って、人Hの意思を承認するための対話を実行する。このときのダイアログは、先に説明したように、人Hが肯定の意思表示をしたのか、否定の意思表示をしたのかで異なるダイアログがダイアログキュー23cにロードされる。
【0143】
ステップS85では、CPU20aは、ステップS83でダイアログをダイアログキュー23cにロードしたので、次のダイアログ候補をダイアログデータベース22から読み出して、次ダイアログ候補プール23aにロードする。
【0144】
先のステップS79で、人意思認定フェーズではない場合、“NO”が判断され、次のステップS87でCPU20aは、無視できない人Hの文脈外の意思がセンサマネージャ18によって検出されていないかどうか判断する。そのような人Hの文脈外の意思表示がなければ、このステップS87で“NO”となり、次のステップS89に進む。
【0145】
ステップS89では、対話を続けるかどうか判断する。たとえば、ダイアログデータベース22に、採用可能なダイアログが無くなった、時間がなくなった、などのとき、ステップS89では“NO”と判断され、この図15の人意思処理モジュール23の動作は終了する。
【0146】
ステップS89で“YES”と判断したとき、すなわち対話を継続すべきときには、ステップS91では、実行すべきダイアログがダイアログキュー23cに残っているかどうか、つまりダイアログが終了しているかどうか判断する。
【0147】
ステップS91で“YES”なら、ステップS71と同様に、ステップS93において、別のトピックの一群のダイアログ(スクリプトデータ)を、ダイアログデータベース22から選択して読出し、次ダイアログ候補プール23aにロードする。それとともに、ロボットR1およびR2の次の対話のために、次ダイアログ候補プール23aにロードしたダイアログをダイアログキュー23cにロードする。その後先のステップS85に進み、ダイアログデータベース22からさらにダイアログを次ダイアログ候補プール23aにロードする。
【0148】
なお、ステップS91で“NO”なら、ダイアログが終了していないなら、先のステップS73に戻る。
【0149】
さらに、ステップS87で“YES”と判断したとき、すなわち、人Hの文脈外の意思表示があったとき。ステップS95において、CPU20aは、そのときの文脈外の人Hの意思に基づいて、図1に示す文脈外応答ダイアログプール23bにロードされているダイアログのうち適当なダイアログを選択し、その選択したダイアログをダイアログキュー23cにロードする。したがって、先に述べた文脈外の人Hの意思表示に対して応答する発話および/または非言語動作をロボットR1および/またはR2が実行する。
【0150】
そして、次のステップS97では、CPU20aは、人の意思に基づいて、現在のダイアログキュー23cおよび次ダイアログ候補プール23bの内容を削除し、または保留する。つまり、そのときの人Hの意思に基づけば実行不要と思われるダイアログをダイアログキュー23cおよび次ダイアログ候補プール23bから削除するか、あるいはその実行不要と思われるダイアログの実行を保留する。
【0151】
このように、人意思処理モジュール23では、たとえば意思表示デバイス17を用いて表明した、陪席者たる人Hの意思に対して、ロボットR1およびR2が、その意思を承認するための発話や非言語動作を実行することによって、人HがロボットR1およびR2を含む対話システム10の中で、人Hは何も発話しなくても、明らかに対話に参加している感覚(対話感)を持つに至る。
【0152】
以下、図16図24を参照して、人Hの意思表示に対する承認ダイアログの様々な例について説明する。ただし、以下のことを前提として、すべての対話がダイアログデータベース22に予め設定されているダイアログ(スクリプトデータ)に従って実行される、ということに留意されたい。
【0153】
長円で囲んだ「Topic」とは、図10図14で説明した「話題」のことであり、Topic-1、Topic-2、…はそれぞれ異なる話題であることを意味する。Topicは賛成の立場での発話を示し、網掛けの長円で囲んだ「Anti-Topic」とは、Topicに対して反対の立場での発話を示す。また、「Follow-Topic」はTopicに追従する立場での発話を示す。さらに、人Hにおいて、白丸で示した「肯定」とは、たとえば意思表示デバイス17の肯定ボタン17aを操作したときのように、センサマネージャ18が人Hの肯定の意思表示を検出したことを意味する。反対に、網掛けの丸で示した「否定」は、センサマネージャ18が人Hの否定の意思表示を検出したことを意味する。なお、以下の具体例の説明において、「人の意思表示」は、人Hが主体的に明示的にまたは非明示的に表示した意思だけでなく、必ずしも人Hの実際の意思の如何にはよらず、前述のように、センサマネージャ18で認定する意思を指すものであると理解されたい。
【0154】
図16の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に対して反対の立場で発話する。
【0155】
Topic-1(Anti-Topic-1)に含まれる質問文を発話した後のダイアログに従って、グループマネージャ20のCPU20aは、ともに人Hを見るという非言語動作をロボットR1およびR2に実行させるようなダイアログキュー23cに保持されているスクリプトデータ(当該非言語動作の指示)をブロードキャストする。したがって、人Hは、自分の意思表示が求められていることを理解する。
【0156】
このようなロボットR1およびR2の非言語動作に応じて人Hが肯定の意思表示をした後、たとえば図15のステップS83において、ロボットR1およびR2が、図16で横長の矩形枠で示すような承認ダイアログを実行する。この例では、人Hが肯定の意思表示をしたのであるから、ロボットR1は意思表示に対する承認のためにたとえば「そうだよね」と発話する。これに対して、ロボットR2は、自分は反対の立場であるのに人Hが肯定の意思表示をしたのであるから、意思表示に対する承認のためにたとえば「そうかな」と、人Hの肯定の意思表示をとがめるような発話をする。
【0157】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、人Hの肯定の意思表示を承認するような発話を実行する。
【0158】
なお、この承認ダイアログでの発話は、ロボットR1およびR2のどちらの発話が先でもよく、ロボットR1およびR2の発話が同時に実行されてもよい。さらに、この承認ダイアログでは、ロボットR1およびR2の対話を実施例のように1回だけでなく、複数回実行するようにしてもよい。これらのことは、次の図17図20の例にも当てはまることを予め指摘しておく。
【0159】
その後、主導権を持っているロボットR1が、同じTopic-1または別のTopic-2における対話に復帰するためのつなぎの発話、たとえば「うん、だからね」のような発話する。その後ロボットR1およびR2が、Topic-1(or 2)(Anti-Topic-1(or 2))を継続する。
【0160】
図16の例では、人Hの肯定の意思表示に同調する発話を行うことによってロボットR1が人Hの肯定の意思表示を承認し、ロボットR2が人Hの肯定の意思表示に同調しない発話を行うことによって人Hの肯定の意思表示を承認する。
【0161】
図17の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に追従する立場で発話する。Topic-1(Follow-Topic-1)の発話の後、図16の場合と同様に、ロボットR1およびR2がともに人Hを見るという非言語動作を実行することによって、人Hの意思表示を促す。
【0162】
そして、人Hが肯定の意思表示をしたとき、たとえば図15のステップS83において、ロボットR1およびR2が、図17で横長の矩形枠で示すような承認ダイアログを実行する。この例では、ロボットR1は人Hが肯定の意思表示をしたのであるから、意思表示に対する承認のためにたとえば「そうだよね」と発話する。これに対して、ロボットR2は、ロボットR1に追従する立場であるので、人Hの肯定の意思表示に対する承認のためにたとえば「そうだよね」と発話する。
【0163】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、人Hの肯定の意思表示を承認するような発話を実行する。
【0164】
その後、主導権を持っているロボットR1が、同じTopic-1または別のTopic-2における対話に復帰するためのつなぎの発話、たとえば「うん、だからね」のような同調する発話をする。その後ロボットR1およびR2が、Topic-1(or 2)およびFollow-Topic-1(or 2)を継続する。
【0165】
図17の例では、人Hの肯定の意思表示に同調する発話を行うことによってロボットR1が人Hの肯定の意思表示を承認し、ロボットR1に追従する立場のロボットR2も人Hの肯定の意思表示に同調する発話を行うことによって人Hの肯定の意思表示を承認する。
【0166】
図18の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に対して反対の立場で発話する。Topic-1(Anti-Topic-1)の発話の後、図16の場合と同様に、ロボットR1およびR2がともに人Hを見るという非言語動作を実行することによって、人Hの意思表示を促す。
【0167】
人Hが否定の意思表示をした後、たとえば図15のステップS83において、ロボットR1およびR2が、図18で横長の矩形枠で示すような承認ダイアログを実行する。この例では、人Hが否定の意思表示をしたのであるから、その意思表示に対する承認のために、ロボットR1は人Hの否定の意思表示をとがめる、たとえば「え、違う」と発話する。これに対して、ロボットR2は、自分は反対の立場であるのに人Hが否定の意思表示をしたのであるから、その否定の意思表示に同調するたとえば「だよね」と発話するひとによって、人Hの否定の意思表示を承認する。
【0168】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、人Hの否定の意思表示を承認するような発話を実行する。
【0169】
その後、主導権を持っているロボットR1が、同じTopic-1または別のTopic-2における対話に復帰するためのつなぎの発話、たとえば「いや、でもね」のような切り返しの発話をする。その後ロボットR1およびR2が、Topic-1(or 2)(Anti-Topic-1(or 2))を継続する。
【0170】
図18の例では、ロボットR1が人Hの意思表示に同調しない発話を行うことによって賛成の立場で人Hの否定の意思表示を承認し、ロボットR2が人Hの意思表示に同調しない発話を行うことによって反対の立場で人Hの否定の意思表示を承認する。
【0171】
図19の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に対して反対の立場で発話する。Topic-1(Anti-Topic-1)の発話の後、図16の場合と同様に、ロボットR1およびR2がともに人Hを見るという非言語動作を実行することによって、人Hの意思表示を促す。
【0172】
人Hが肯定の意思表示をした後、たとえば図15のステップS83において、ロボットR1およびR2が、図19で横長の矩形枠で示すような承認ダイアログを実行する。この例では、ロボットR1は人Hが肯定の意思表示をしたのであるから、意思表示に対する承認のためにたとえば「そうだよね」と発話する。これに対して、ロボットR2は、自分は反対の立場であるのに人Hが肯定の意思表示をしたのであるから、意思表示に対する承認のためにたとえば「そうかな」と、人Hの肯定の意思表示をとがめるような発話をする。
【0173】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、人Hの肯定の意思表示を承認するような発話を実行する。
【0174】
その後、対話の主導権がロボットR2に移され、ロボットR2が、Topic-1(or 2)における対話に復帰するためのつなぎの発話、たとえば「いや、だからね」のような発話する。その後ロボットR2およびR1が、Topic-1(or 2) (Anti-Topic-1(or 2))を継続する。
【0175】
図19の例では、ロボットR2が人Hの肯定の意思表示に同調する発話を行うことによって賛成の立場で人Hの肯定の意思表示を承認し、ロボットR2が人Hの肯定の意思表示に同調しない発話を行うことによって反対の立場で人Hの肯定の意思表示を承認する。
【0176】
図20の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に対して反対の立場で発話する。Topic-1(Anti-Topic-1)の発話の後、図16の場合と同様に、ロボットR1およびR2がともに人Hを見るという非言語動作を実行することによって、人Hの意思表示を促す。
【0177】
人Hが否定の意思表示をした後、たとえば図15のステップS83において、ロボットR1およびR2が、図20で横長の矩形枠で示すような承認ダイアログを実行する。この例では、ロボットR1は人Hが否定の意思表示をしたのであるから、意思表示に対する承認のためにたとえば「え、違う」と発話する。これに対して、ロボットR2は、自分は反対の立場であるのに人Hが否定の意思表示をしたのであるから、意思表示に対する承認のためにたとえば「だよね」と、人Hの否定の意思表示に同調するような発話をする。
【0178】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、人Hの否定の意思表示を承認するような発話を実行する。
【0179】
その後、対話の主導権がロボットR2に移され、ロボットR2が、同じTopic-1(or 2)における対話に復帰するためのつなぎの発話、たとえば「いや、でもね」のような発話する。その後ロボットR2およびR1が、Topic-1(or 2)(Anti-Topic-1(or 2))を継続する。
【0180】
図20の例では、ロボットR2が人Hの否定の意思表示に同調しない発話を行うことによって賛成の立場で人Hの否定の意思表示を承認し、ロボットR2が人Hの否定の意思表示に同調する発話を行うことによって反対の立場で人Hの否定の意思表示を承認する。
【0181】
図21の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に対して反対の立場で発話する。Topic-1(Anti-Topic-1)の発話の後、図16の場合と同様に、ロボットR1およびR2がともに人Hを見るという非言語動作を実行することによって、人Hの意思表示を促す。
【0182】
人Hが肯定の意思表示をした後、ロボットR1は、たとえば図15のステップS83において、人Hの肯定の意思表示を拡大解釈して承認するダイアログを実行する。まず、人Hが肯定の意思表示をしかつ自分は賛成の立場であるので、人Hに同調するようにたとえば「そうだよね」と発話する。そして、人Hの肯定の意思表示を拡大解釈する発話をロボットR2に対して実行する。
【0183】
たとえば、Topic-1が嗜好品をテーマにした話題だとして、ロボットR1がTopic-1のなかで「バナナはおいしいですよね」と発話したとき、人Hが肯定の意思表示をしたとき、ロボットR1は、まず「そうだよね」と人Hに向かって発話する。その後、ロボットR2に向かって、人Hの肯定の意思表示を拡大解釈してたとえば「果物が好きなんだって」と発話する。それに対してロボットR2がロボットR1に対して、たとえば「え、果物なんか好きなの?」のような、ロボットR1の拡大解釈を補強、承認するような発話をする。
【0184】
つまり、ロボットR1およびR2どうしのTopicでの対話に対して人Hが肯定の意思表示をしたとき、対話の主導権を持つロボットR1が、人Hの肯定の意思表示を拡大解釈して承認するダイアログを実行し、続けてロボットR2がその拡大解釈を承認するダイアログを実行することによって、人Hが、その拡大解釈を実際に発話したと感じる。上の例では、人Hは、自分が「果物が好きだ」と実際に発話したという感覚を持つことになる。
【0185】
その後、ロボットR1およびR2が、図21で横長の矩形枠で示すような承認ダイアログを実行する。この例では、ロボットR2が人Hの肯定の意思表示に対するロボットR1の拡大解釈を承認しているので、その拡大解釈の承認に応答するように、ロボットR1がたとえば「きっとそういうタイプなんだよ」とロボットR2に向かって発話し、ロボットR2は、人Hが肯定の意思表示をしたのであるから、反対の立場として、人Hの肯定の意思表示をとがめるようなたとえば「ひどいね」と発話する。
【0186】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、拡大解釈を前提にして、人Hの肯定の意思表示を承認するような発話を実行する。
【0187】
なお、この承認ダイアログでの発話は、ロボットR1およびR2のどちらの発話が先でもよく、ロボットR1およびR2の発話が同時に実行されてもよい。さらに、この承認ダイアログでは、ロボットR1およびR2の対話を実施例のように1回だけでなく、複数回実行するようにしてもよく、あるいは省略されてもよい。これらのことは、次の図22図25の例にも当てはまることを予め指摘しておく。
【0188】
その後、主導権を持っているロボットR1が、同じTopic-1または別のTopic-2における主張を開始するためのつなぎの発話、たとえば「うん、それでね」のような発話する。その後ロボットR1およびR2が、Topic-1(or 2)(Anti-Topic-1(or 2))を継続する。
【0189】
図21の例では、ロボットR1およびR2が人Hの肯定の意思表示を拡大解釈した承認したうえで、ロボットR1が人Hに同調する発話を行うことによって賛成の立場で人Hの肯定の意思表示を承認し、ロボットR2が人Hの肯定の意思表示に同調しない発話を行うことによって反対の立場で人Hの肯定の意思表示を承認する。
【0190】
図22の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に追従する立場で発話する。Topic-1(Follow-Topic-1)の発話の後、図16の場合と同様に、ロボットR1およびR2がともに人Hを見るという非言語動作を実行することによって、人Hの意思表示を促す。
【0191】
人Hが肯定の意思表示をした後、ロボットR1は、たとえば図15のステップS83において、人Hの肯定の意思表示を拡大解釈して承認するダイアログを実行する。まず、人Hが肯定の意思表示しかつ自分は追従する立場であるので、人Hに同調するようにたとえば「そうだよね」と発話する。そして、人Hの肯定の意思表示を拡大する発話をロボットR2に対して実行する。
【0192】
たとえば、Topic-1が嗜好品をテーマにした話題だとして、ロボットR1がTopic-1のなかで「バナナっておいしいですよね」と発話したとき、人Hが肯定の意思表示をしたとき、ロボットR1は、まず「そうだよね」と人Hに向かって発話する。その後、ロボットR2に向かって、人Hの肯定の意思表示を拡大解釈してたとえば「果物が好きなんだって」と発話する。それに対してロボットR2がロボットR1に対して、たとえば「話がわかるね」のような、ロボットR1の拡大解釈を補強、承認するような発話をする。
【0193】
つまり、ロボットR1およびR2どうしのTopic(Follow-Topic)での対話に対して人Hが肯定の意思表示をしたとき、対話の主導権を持つロボットR1が、人Hの肯定の意思表示を拡大解釈して承認するダイアログを実行し、続けてロボットR2がその拡大解釈を承認するダイアログを実行することによって、人Hが、その拡大解釈を実際に発話したと感じる。上の例では、人Hは、自分が実際に「果物が好きだ」と発話したという感覚を持つ。
【0194】
その後、ロボットR1およびR2が、図22で横長の矩形枠で示すような承認ダイアログを実行する。この例では、ロボットR2が人Hの肯定の意思表示に対するロボットR1の拡大解釈を承認しているので、その拡大解釈の承認に応答するように、ロボットR1がたとえば「きっとそういうタイプな気がしてたんだ」とロボットR2に向かって発話し、ロボットR2は、人Hが肯定の意思表示をしたのであるから、ロボットR1に追従する立場として、人Hの肯定の意思表示に同調するようなたとえば「そうだよね」と発話する。
【0195】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、拡大解釈を前提にして、人Hの肯定の意思表示を承認するような発話を実行する。
【0196】
その後、主導権を持っているロボットR1が、同じTopic-1または別のTopic-2における対話に復帰するためのつなぎの発話、たとえば「うん、それでね」のような発話する。その後ロボットR1およびR2が、Topic-1(or 2)(Anti-Topic-1(or 2))を継続する。
【0197】
図22の例では、ロボットR1およびR2が人Hの肯定の意思表示を拡大解釈した承認したうえで、ロボットR1が人Hに同調する発話を行うことによって賛成の立場で人Hの肯定の意思表示を拡大解釈して承認し、ロボットR2も人Hの肯定の意思表示に同調する発話を行うことによってロボットR1に追従する立場で人Hの肯定の意思表示を承認する。
【0198】
図23の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に反対する立場で発話する。Topic-1(Anti-Topic-1)の発話の後、図16の場合と同様に、ロボットR1およびR2がともに人Hを見るという非言語動作を実行することによって、人Hの意思表示を促す。
【0199】
人Hが否定の意思表示をした後、ロボットR2は、たとえば図15のステップS83において、人Hの否定の意思表示を拡大解釈して承認するダイアログを実行する。まず、人Hが否定の意思表示しかつ自分は反対の立場であるので、人Hに同調するようにたとえば「そうだよね」と発話する。そして、人Hの否定の意思表示を拡大する発話をロボットR2に対して実行する。
【0200】
たとえば、Topic-1が嗜好品をテーマにした話題だとして、ロボットR1がTopic-1のなかで「バナナっておいしいですよね」と発話したとき、人Hが否定の意思表示をしたとき、ロボットR2は、まず「そうだよね」と人Hに向かって発話する。その後、ロボットR1に向かって、人Hの否定の意思表示を拡大解釈してたとえば「果物が嫌いなんだって」と発話する。それに対してロボットR1がロボットR2に対して、たとえば「え、果物が嫌いなの?」のような、ロボットR2の拡大解釈を補強、承認するような発話をする。
【0201】
つまり、ロボットR1およびR2どうしのTopic(Anti-Topic)での対話に対して人Hが否定の意思表示をしたとき、ロボットR1に反対するロボットR2が、人Hの否定の意思表示を拡大解釈して承認するダイアログを実行し、続けてロボットR1がその拡大解釈を承認するダイアログを実行することによって、人Hが、実際にその拡大解釈を発話したと感じる。上の例では、人Hは、自分が「果物が嫌いだ」と実際に発話したという感覚を持つことになる。
【0202】
その後、ロボットR2およびR1が、図23で横長の矩形枠で示すような承認ダイアログを実行する。この例では、ロボットR1が人Hの否定の意思表示に対するロボットR2の拡大解釈を承認しているので、その拡大解釈の承認に応答するように、ロボットR2がたとえば「きっとそういうタイプなんだよ」とロボットR1に向かって発話し、人Hが否定の意思表示をしたのであるから、ロボットR2に反対されている立場なので、ロボットR1は、人Hの否定の意思表示に同調しないようなたとえば「ひどいね」と発話する。
【0203】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、拡大解釈を前提にして、人Hの否定の意思表示を承認するような発話を実行する。
【0204】
その後、主導権を持っているロボットR1が、同じTopic-1または別のTopic-2における対話に復帰するためのつなぎの発話、たとえば「いや、でもね」のような発話する。その後ロボットR1およびR2が、Topic-1(or 2)(Anti-Topic-1(or 2))を継続する。
【0205】
図23の例では、ロボットR1およびR2が人Hの否定の意思表示を拡大解釈した承認したうえで、ロボットR2が人Hに同調する発話を行うことによって反対の立場で人Hの否定の意思表示を拡大解釈して承認し、ロボットR1は人Hの否定の意思表示に同調しない発話を行うことによって人Hの否定の意思表示を承認する。
【0206】
図24の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に対して反対の立場で発話する。Topic-1(Anti-Topic-1)の発話の後、図16の場合と同様に、ロボットR1およびR2がともに人Hを見るという非言語動作を実行することによって、人Hの意思表示を促す。
【0207】
人Hが肯定の意思表示をした後、ロボットR1は、たとえば図15のステップS83において、人Hの肯定の意思表示を拡大解釈して承認するダイアログを実行する。まず、人Hが肯定の意思表示しかつ自分は賛成の立場であるので、人Hに同調するようにたとえば「そうだよね」と発話する。そして、人Hの肯定の意思表示を拡大する発話をロボットR2に対して実行する。
【0208】
たとえば、Topic-1が嗜好品をテーマにした話題だとして、ロボットR1がTopic-1のなかで「バナナっておいしいですよね」と発話したとき、人Hが肯定の意思表示をしたとき、ロボットR1は、まず「そうだよね」と人Hに向かって発話する。その後、ロボットR2に向かって、人Hの肯定の意思表示を拡大解釈してたとえば「果物が好きなんだって」と発話する。それに対してロボットR2がロボットR1に対して、たとえば「え、果物なんか好きなの?」のような、ロボットR1の拡大解釈を補強、承認するような発話をする。
【0209】
つまり、ロボットR1およびR2どうしのTopicでの対話に対して人Hが肯定の意思表示をしたとき、対話の主導権を持つロボットR1が、人Hの肯定の意思表示を拡大解釈して承認するダイアログを実行し、続けてロボットR2がその拡大解釈を承認するダイアログを実行することによって、人Hが、その拡大解釈を発話したと感じる。上の例では、人Hは、自分が実際に果物が好きだ」と発話したという感覚を持つことになる。
【0210】
その後、ロボットR1およびR2が、図21で横長の矩形枠で示すような承認ダイアログを実行する。この例では、ロボットR2が人Hの肯定の意思表示に対するロボットR1の拡大解釈を承認しているので、その拡大解釈の承認に応答するように、ロボットR1がたとえば「きっとそういうタイプなんだよ」とロボットR2に向かって発話し、ロボットR2は、人Hが肯定の意思表示をしたのであるから、反対の立場として、人Hの肯定の意思表示をとがめるようなたとえば「ひどいね」と発話する。
【0211】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、拡大解釈を前提にして、人Hの肯定の意思表示を承認するような発話を実行する。
【0212】
その後、主導権がロボットR2に移り、ロボットR2が、Topic-1(or 2)での主張を開始するためのつなぎの発話、たとえば「いや、でもね」のような発話する。その後ロボットR2およびR1が、Topic-1(or 2)(Anti-Topic-1(or 2))を継続する。
【0213】
図24の例では、ロボットR1およびR2が人Hの肯定の意思表示を拡大解釈した承認したうえで、ロボットR2が人Hに同調する発話を行うことによって反対の立場で人Hの肯定の意思表示を拡大解釈して承認し、ロボットR1は人Hの肯定の意思表示に同調しない発話を行うことによって人Hの肯定の意思表示を承認する。
【0214】
上述の実施例では、人Hの意思表示はたとえば意思表示デバイス17の人の操作に応じて入力するようにした。しかしながら、たとえばカメラ16からの画像信号を処理し、たとえば人Hが頷いたら「肯定」の意思表示があったとし、首を振ったら「否定」の意思表示があったとするようにしてもよい。
【0215】
図25の例では、対話の主導権をもって、ロボットR1はTopic-1について賛成の立場で発話し、ロボットR2はロボットR1に反対する立場で発話する。Topic-1(Anti-Topic-1)の発話の後、図16の場合と同様に、ロボットR1およびR2がともに人Hを見るという非言語動作を実行することによって、人Hの意思表示を促す。
【0216】
人Hが否定の意思表示をした後、ロボットR2は、たとえば図15のステップS83において、人Hの否定の意思表示を拡大解釈して承認するダイアログを実行する。まず、人Hが否定の意思表示しかつ自分は反対の立場であるので、人Hに同調するようにたとえば「そうだよね」と発話する。そして、人Hの否定の意思表示を拡大する発話をロボットR2に対して実行する。
【0217】
たとえば、Topic-1が嗜好品をテーマにした話題だとして、ロボットR1がTopic-1のなかで「バナナっておいしいですよね」と発話したとき、人Hが否定の意思表示をしたとき、ロボットR2は、まず「そうだよね」と人Hに向かって発話する。その後、ロボットR1に向かって、人Hの否定の意思表示を拡大解釈してたとえば「果物が嫌いなんだって」と発話する。それに対してロボットR1がロボットR2に対して、たとえば「え、果物が嫌いなの?」のような、ロボットR2の拡大解釈を補強、承認するような発話をする。
【0218】
つまり、ロボットR1およびR2どうしのTopic(Anti-Topic)での対話に対して人Hが否定の意思表示をしたとき、ロボットR1に反対するロボットR2が、人Hの否定の意思表示を拡大解釈して承認するダイアログを実行し、続けてロボットR1がその拡大解釈を承認するダイアログを実行することによって、人Hが、実際にその拡大解釈を発話したと感じる。上の例では、人Hは、自分が「果物が嫌いだ」と実際に発話したという感覚を持つことになる。
【0219】
その後、ロボットR2およびR1が、図23で横長の矩形枠で示すような承認ダイアログを実行する。この例では、ロボットR1が人Hの否定の意思表示に対するロボットR2の拡大解釈を承認しているので、その拡大解釈の承認に応答するように、ロボットR2がたとえば「きっとそういうタイプなんだよ」とロボットR1に向かって発話し、人Hが否定の意思表示をしたのであるから、ロボットR2に反対されている立場なので、ロボットR1は、人Hの否定の意思表示に同調しないようなたとえば「ひどいね」と発話する。
【0220】
つまり、ここで、ロボットR1およびR2がそれぞれの立場で、拡大解釈を前提にして、人Hの否定の意思表示を承認するような発話を実行する。
【0221】
その後、主導権がロボットR2に移り、ロボットR2がTopic-1(or 2)での主張開始のつなぎの発話、たとえば「いや、でもね」のような発話する。その後ロボットR2およびR1が、Anti-Topic-1(or 2)(Topic-1(or 2))を継続する。
【0222】
図25の例では、ロボットR1およびR2が人Hの否定の意思表示を拡大解釈した承認したうえで、ロボットR2が人Hに同調する発話を行うことによって反対の立場で人Hの否定の意思表示を拡大解釈して承認し、ロボットR1は人Hの否定の意思表示に同調しない発話を行うことによって人Hの否定の意思表示を承認する。
【0223】
なお、図16図25に示す具体例において、人Hの意思を認定したとき、ロボットR1およびR2の対話によってその意思を承認するようにしたが、実行手段の一例である図15のステップS83で示す承認ダイアログでは、少なくとも1体のエージェント(実施例では、ロボットR1およびR2の少なくとも一方)の発話で人Hの意思を承認するようにしてもよい。
【0224】
さらに、認定した人Hの意思を承認するためには、図15のステップS77における非言語動作を実行させるようにしてもよい。この場合、ステップS77も実行手段を構成することになる。
【0225】
なお、上述の実施例では、各ロボットR1およびダイアログデータベース22に予め蓄積しておくようにした。しかしながら、このデータベース22に代えて、たとえばネットから必要なスクリプトデータを逐次グループマネージャ20に供給するようにしてもよい。
【0226】
さらに、上述の実施例は、物理的なエージェントであるロボットを用いたロボット対話システムであるが、この発明は、そのような物理的なエージェントだけでなく、たとえばディスプレイの画面上に表示されるアバタないしキャラクタのようなエージェントどうしの対話システムも適用されてもよい。この場合、図1のロボットコントローラ24やロボットセンサ26は、そのようなアバタやキャラクタを表示するためのディスプレイコントローラ(図示せず)に代えられる。つまり、この発明は、エージェント対話システムである。
【符号の説明】
【0227】
10 …ロボット対話システム
12 …対話場所
R1、R2 …ロボット
17 …意思表示デバイス
18 …センサマネージャ
20 …グループマネージャ
22 …ダイアログデータベース
23 …人意思処理モジュール
24 …ロボットコントローラ
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25