(57)【特許請求の範囲】
【請求項１】
それぞれが発話機能を有する複数のエージェントが対話場所においてスクリプトに従って対話し、対話場所に人が陪席するエージェント対話システムであって、
前記スクリプトは、エージェントどうしの対話を実現する第１の時間帯と前記第１の時間帯とは区別され、エージェントが人に対する発話を実現する第２の時間帯とを含み、
前記第１の時間帯では、スクリプトは、実行時間を規定する時間情報と、スクリプトを発話すべきエージェントを規定する発話者情報と、その発話を聴取すべきエージェントを規定する聴取者情報と、発話文を規定する発話文情報とを含み、
前記第２の時間帯では、スクリプトは、実行時間を規定する時間情報と、スクリプトを発話すべきエージェントを規定する発話者情報と、その発話を聴取すべき人を規定する聴取者情報と、発話文を規定する発話文情報とを含み、
前記スクリプトの前記聴取者情報がエージェントを示しているとき第１の判断をし、前記スクリプトの前記聴取者情報が人を示しているとき第２の判断をする第１判断手段、
前記第１判断手段が前記第１の判断をしたとき、前記発話者情報が示すエージェントが前記聴取者情報が示すエージェントに対して前記発話文情報が示す発話文を発話させる第１発話手段、および
前記第１判断手段が前記第２の判断をしたとき、前記発話者情報が示すエージェントが前記人に対して前記発話文情報が示す発話文を発話させる第２発話手段を備える、エージェント対話システム。
【請求項２】
前記スクリプトは、エージェントどうしの対話を実現する第１の時間帯とエージェントが人に対する発話を実現する第２の時間帯を区別するフラグをさらに含み、 前記第１判断手段は前記フラグが前記第２の時間帯であることを示すとき前記第２の判断を実行する、請求項１記載のエージェント対話システム。
【請求項３】
前記エージェントが発話中において、言語によるインタラプトがあるかどうか判断するインタラプト判断手段、
前記言語によるインタラプトがあるとき、前記発話中の発話を再開可能かどうか判断する再開判断手段、および
前記再開可能が判断されたとき、前記スクリプトから挿入文に従っていずれかのエージェントに発話させる挿入文発話手段をさらに備える、請求項１または２記載のエージェント対話システム。
【請求項４】
前記再開可能が判断されなかったとき、前記エージェントによる発話を待たせる待機手段をさらに備える、請求項３記載のエージェント対話システム。
【請求項５】
それぞれが発話機能を有する複数のエージェントが対話場所においてスクリプトに従って対話し、対話場所に人が陪席するエージェント対話システムであって、
前記スクリプトは、エージェントどうしの対話を実現する第１の時間帯と前記第１の時間帯とは区別され、エージェントが人に対する発話を実現する第２の時間帯とを含み、
前記第１の時間帯では、スクリプトは、実行時間を規定する時間情報と、スクリプトを発話すべきエージェントを規定する発話者情報と、その発話を聴取すべきエージェントを規定する聴取者情報と、発話文を規定する発話文情報とを含み、
前記第２の時間帯では、スクリプトは、実行時間を規定する時間情報と、スクリプトを発話すべきエージェントを規定する発話者情報と、その発話を聴取すべき人を規定する聴取者情報と、発話文を規定する発話文情報とを含み、
前記エージェント対話システムのプログラムは、前記エージェント対話システムのコンピュータを、
前記スクリプトの前記聴取者情報がエージェントを示しているとき第１の判断をし、前記スクリプトの前記聴取者情報が人を示しているとき第２の判断をする第１判断手段、
前記第１判断手段が前記第１の判断をしたとき、前記発話者情報が示すエージェントが前記聴取者情報が示すエージェントに対して前記発話文情報が示す発話文を発話させる第１発話手段、および
前記第１判断手段が前記第２の判断をしたとき、前記発話者情報が示すエージェントが前記聴取者情報が示す人に対して前記発話文情報が示す発話文を発話させる第２発話手段
として機能させる、エージェント対話システムのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、エージェント対話システムおよびプログラムに関し、特にたとえば、複数のエージェントと少なくとも１人の人が参加する、新規なエージェント対話システムおよびプログラムに関する。
【背景技術】
【０００２】
ロボット分野の広がりとともに、ロボット研究は，日常的な場面で働くロボットの研究に焦点を移しつつあり、人間が生活する環境の中で、人と対話することができるロボットの開発が注目されている。
【０００３】
近年の音声認識の技術の発展により、これまでにも人間と音声言語でやりとりをする機能を持つロボットが開発されてきているが、音声認識技術をいくら優れたものにしても、ロボットと人との対話において、人が人との対話に参加しているときに抱く「対話感（対話に参加しているという感覚）」と同等の感覚を、ロボットと対話する人に与え続けることは容易ではなかった。
【０００４】
背景技術の一例である特許文献１には、ロボットと人との対話において、ロボットが人の感情を推測して応答文の発話とその発話に伴う動作を決定することが開示されている。
【０００５】
特許文献２には、人とロボットとの対話システムにおいて、両者の同調を図ることで、持続的で自然なインタラクションを実現しようとするものである。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2004-90109号公報[B25J 13/00…]
【特許文献２】特開2012-181697号公報[G06F 3/16…]
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の技術においても、特許文献２の技術においても、音声認識に基づく処理に限界があり、上述の「対話感」を人が持続することは容易ではない。
【０００８】
それゆえに、この発明の主たる目的は、新規な、エージェント対話システムおよびプログラムを提供することである。
【０００９】
この発明の他の目的は、人に対話に参加している感覚を持続させることができる、エージェント対話システムおよびプログラムを提供することである。
【課題を解決するための手段】
【００１０】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために記述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
【００１１】
第１の発明は、それぞれが発話機能を有する複数のエージェントが対話場所においてスクリプトに従って対話し、対話場所に人が陪席するエージェント対話システムであって、スクリプトは、エージェントどうしの対話を実現する第１の時間帯と第１の時間帯とは区別され、エージェントが人に対する発話を実現する第２の時間帯とを含み、第１の時間帯では、スクリプトは、実行時間を規定する時間情報と、スクリプトを発話すべきエージェントを規定する発話者情報と、その発話を聴取すべきエージェントを規定する聴取者情報と、発話文を規定する発話文情報とを含み、第２の時間帯では、スクリプトは、実行時間を規定する時間情報と、スクリプトを発話すべきエージェントを規定する発話者情報と、その発話を聴取すべき人を規定する聴取者情報と、発話文を規定する発話文情報とを含み、スクリプトの聴取者情報がエージェントを示しているとき第１の判断をし、スクリプトの聴取者情報が人を示しているとき第２の判断をする第１判断手段、第１判断手段が第１の判断をしたとき、発話者情報が示すエージェントが聴取者情報が示すエージェントに対して発話文情報が示す発話文を発話させる第１発話手段、および第１判断手段が第２の判断をしたとき、発話者情報が示すエージェントが人に対して発話文情報が示す発話文を発話させる第２発話手段を備える、エージェント対話システムである。
【００１２】
第１の発明では、エージェント対話システム（１０：実施例において相当する部分を例示する参照符号。以下、同様。）は、対話場所（１２）に、それぞれが発話機能（４６）を有する複数のエージェント（Ｒ１，Ｒ２）を配置し、その対話場所（１２）に人（Ｈ）が陪席する。エージェント同士はスクリプトに従って対話する。人に対して発話すべきことをスクリプトが示さないとき、たとえば該当のフラグがセットされていないとき、第１発話手段（２０ａ，Ｓ１５，Ｓ１９）は、スクリプトが示す発話文に従ってエージェント同士に発話させる。他方、人に対して発話すべきことをスクリプトが示すとき、たとえば該当のフラグがセットされているとき、第２発話手段（２０ａ，Ｓ１５，Ｓ１７）は、少なくともいずれかのエージェントに、スクリプトが示す発話文に従って人に対して発話させる。
【００１３】
第１の発明によれば、エージェント同士の対話において、適宜のタイミングで人に対して発話し、人からの発話を促すようにスクリプトで設定できるので、人にエージェント同士の対話に参加している感覚（「対話感」）を生じさせ、それを持続させることができる。
【００１４】
第２の発明は、第１の発明に従属し、スクリプトは、エージェントどうしの対話を実現する第１の時間帯とエージェントが人に対する発話を実現する第２の時間帯を区別するフラグをさらに含み、第１判断手段はフラグが第２の時間帯であることを示すとき第２の判断を実行する、エージェント対話システムである。
【００１６】
第３の発明は、第１または第２の発明に従属し、エージェントが発話中において、言語によるインタラプトがあるかどうか判断するインタラプト判断手段、言語によるインタラプトがあるとき、発話中の発話を再開可能かどうか判断する再開判断手段、および再開可能が判断されたとき、スクリプトで決まっている挿入文に従っていずれかのエージェントに発話させる挿入文発話手段をさらに備える、エージェント対話システムである。
第４の発明は、第３の発明に従属し、再開可能が判断されなかったとき、エージェントによる発話を待たせる待機手段をさらに備える、エージェント対話システムである。
【００１７】
第５の発明は、それぞれが発話機能を有する複数のエージェントが対話場所においてスクリプトに従って対話し、対話場所に人が陪席するエージェント対話システムであって、スクリプトは、エージェントどうしの対話を実現する第１の時間帯と第１の時間帯とは区別され、エージェントが人に対する発話を実現する第２の時間帯とを含み、第１の時間帯では、スクリプトは、実行時間を規定する時間情報と、スクリプトを発話すべきエージェントを規定する発話者情報と、その発話を聴取すべきエージェントを規定する聴取者情報と、発話文を規定する発話文情報とを含み、第２の時間帯では、スクリプトは、実行時間を規定する時間情報と、スクリプトを発話すべきエージェントを規定する発話者情報と、その発話を聴取すべき人を規定する聴取者情報と、発話文を規定する発話文情報とを含み、エージェント対話システムのプログラムは、エージェント対話システムのコンピュータを、スクリプトの聴取者情報がエージェントを示しているとき第１の判断をし、スクリプトの聴取者情報が人を示しているとき第２の判断をする第１判断手段、第１判断手段が第１の判断をしたとき、発話者情報が示すエージェントが聴取者情報が示すエージェントに対して発話文情報が示す発話文を発話させる第１発話手段、および第１判断手段が第２の判断をしたとき、発話者情報が示すエージェントが聴取者情報が示す人に対して発話文情報が示す発話文を発話させる第２発話手段として機能させる、エージェント対話システムのプログラムである。
【００１８】
第５の発明によっても、第１の発明と同様の効果が期待できる。
【発明の効果】
【００１９】
この発明によれば、エージェント同士の対話においても人に対話に参加している感覚（「対話感」）を生じさせ、それを持続させることができる。
【００２０】
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００２１】
【図１】図１はこの発明の一実施例のロボット対話システムの概要を示す概略図である。
【図２】図２は図１実施例におけるセンサマネージャの構成の一例を示すブロック図である。
【図３】図３は図１実施例におけるグループマネージャの構成の一例を示すブロック図である。
【図４】図４は図１実施例におけるロボットの一例を示す概略図である。
【図５】図５は図４のロボットを制御するロボットコントローラの構成の一例を示すブロック図である。
【図６】図６は図１に示すダイアログデータベースからグループマネージャに読み出されるスクリプトの一例を示す概略図である。
【図７】図７は図１に示すグループマネージャの動作の一例を示すフロー図である。
【図８】図８は図１に示すロボットコントローラの動作の一例を示すフロー図である。
【図９】図９は図１実施例における対話シーケンスの一例を示す概略図である。
【図１０】図１０は図１実施例における具体的な対話場面の一例を示す概略図である。
【図１１】図１１は図１実施例における具体的な対話場面の他の例を示す概略図である。
【図１２】図１２は図１実施例における具体的な対話場面のさらに他の例を示す概略図である。
【図１３】図１３は図１実施例における具体的な対話場面のなおも他の例を示す概略図である。
【図１４】図１４は図１実施例における具体的な対話場面のその他の例を示す概略図である。
【発明を実施するための形態】
【００２２】
図１を参照して、この実施例のロボット対話システム１０の対話場所１２には、第１ロボットＲ１および第２ロボットＲ２と１人の人Ｈが存在する。ただし、ロボットの数は３以上でもよく、人の数は２以上でもよい。なお、以下において、第１ロボットＲ１および第２ロボットＲ２を特に区別する必要がないとき、単にロボットＲと呼ぶことがある。
【００２３】
この実施例のロボット対話システム１０は、図１の矢印Ａで示すように、複数のロボット同士が予め準備したスクリプト（台本）に従って対話しながら、時折、矢印Ｂで示すように参加者（人）に対話に関して問いかける（質問や同意の要求をする）ことで、人にロボットとの強い対話感を覚えさせながら、ロボット同士の対話を聞かせる、新規なロボット対話システムである。
【００２４】
人が発話するとき、その発話に応じる形で相手の発話が生成されなければ、対話を続けていくこと自体が困難になりやすいため、音声認識および自然言語処理の能力が完璧でないロボットは、人間の発話に対して適切な発話をし続けることは容易ではなく、対話は破綻しやすい。
【００２５】
一方、人間は、他者どうしの対話を傍らで観察する際、その内容が完全に理解あるいは同意できるものでなくても、部分的に理解あるいは同意しながら、対話を聞き続けることができる。またそれにより、理解あるいは同意できなかった部分についても、後から理解あるいは同意できることがある。しかし、対話に参加している感覚（対話感）がなければ、その対話に集中し続けることは容易ではない。  そこで、この発明の実施例では、ロボットが発話する際に、必ずしも人間に返答させる形にするのではなく、その対話の場に別のロボットを陪席させ、ロボットの発話に対して適切な返答を、この陪席ロボットに発話させる、つまりロボット同士に対話を行わせることで破綻を回避し、そのロボット同士の対話を人に聞かせることにより、人間に対話感を感じさせる。
【００２６】
この実施例のようなロボット対話システムは、たとえば、独居生活者に対するコミュニケーションサービスロボット、情報提供サービスロボット、広告ロボットなどとして利用可能である。
【００２７】
ロボット対話システム１０の対話場所１２の状況をセンシングするために、この実施例では、聴覚センサとしてのマイク１４および視覚センサとしてのカメラ１６が設けられる。マイク１４は、ロボットＲや人Ｈの発話による音声を含む環境音を取得するためのもので、必要なら２台以上設置されてもよい。カメラ１６は、同じく対話場所１２の状況、特に人Ｈの表情や動作を撮影するカメラであり、動画または静止画を撮影する。カメラ１６も必要なら２台以上設置してもよい。
【００２８】
さらに、上述のマイク１４やカメラ１６の他に、センサとして、図示はしないが、装着型の姿勢センサ、加速度センサ、心拍の状態、呼吸の状態、体動（体の動き）の状態などの生体信号を検知する生体センサ、モーションキャプチャシステムなどを設けてもよい。
【００２９】
マイク１４が取得した音声信号およびカメラ１６が撮影した画像信号などのセンサ信号は、センサマネージャ１８に入力される。センサマネージャ１８は、これらのセンサ信号を取得して、対話場所１２の状況を判定して、判定結果をセンシングデータとして、グループマネージャ２０に出力する。
【００３０】
図２を参照して、センサマネージャ１８は、ＣＰＵ（中央演算処理装置）１８aを含み、ＣＰＵ１８ａには、内部バス１８ｂを介して通信装置１８ｃが接続される。通信装置１８ｃは、たとえばネットワークインターフェースコントローラ（ＮＩＣ）などを含み、ＣＰＵ１８ａはこの通信装置１８ｃを介してグループマネージャ２０などと通信でき、それらの間でデータの授受を行うことができる。
【００３１】
ＣＰＵ１８ａにはさらに、内部バス１８ｂを介して、メモリ１８ｄが接続される。メモリ１８ｄはＲＯＭやＲＡＭを含む。たとえばＤＳＰ（Digital Signal Processor）で構成されるセンサＩ／Ｆ（インタフェース）１８ｅを通して、マイク１４（図１）からの音声信号やカメラ１６（図１）からの画像信号を含むセンサ信号が入力される。そして、メモリ１８ｄは、センサ信号を一時的に記憶する。
【００３２】
センサマネージャ１８は一種の判定器であり、ＣＰＵ１８ａは、メモリ１８ｄに記憶したセンサデータに基づいて、対話場所１２の状態を判定する。ただし、この判定器としての動作は後述する。そして、センサマネージャ１８は、判定した状態を示すデータをグループマネージャ２０に送る。
【００３３】
また、センサマネージャ１８に必要なプログラム（ＯＳやセンサ信号取得プログラムなど）は、メモリ１８ｄに記憶される。センサマネージャ１８はメモリ１８ｄに記憶されたプログラムに従って動作する。
【００３４】
なお、ＣＰＵ１８ａにはさらに、（図示せず）キーボードやディスプレイが付属されてもよい。
【００３５】
グループマネージャ２０は、たとえば後述の図７のフロー図に従って、２台のロボットＲのそれぞれの発話動作（言語動作：Verbal operation）および振舞い（非言語動作：Nonverbal operation）を制御する。
【００３６】
グループマネージャ２０は、ＣＰＵ２０aを含み、ＣＰＵ２０ａには、内部バス２０ｂを介して通信装置２０ｃが接続される。通信装置２０ｃは、たとえばネットワークインターフェースコントローラ（ＮＩＣ）などを含み、ＣＰＵ２０ａはこの通信装置２０ｃを介してセンサマネージャ１８やロボットＲなどと通信でき、それらの間でデータの授受を行うことができる。
【００３７】
ＣＰＵ２０ａにはさらに、内部バス２０ｂを介して、メモリ２０ｄが接続される。メモリ２０ｄはＲＯＭやＲＡＭを含む。メモリＩ／Ｆ２０ｅを通してダイアログ（Dialog：対話）データベース２２から、スクリプトデータを読み込み、それをメモリ２０ｄに一時的に記憶する。
【００３８】
また、グループマネージャ２０に必要なプログラム（ＯＳやセンサ信号取得プログラムなど）は、メモリ２０ｄに記憶される。グループマネージャ２０はメモリ２０ｄに記憶されたプログラムに従って動作する。
【００３９】
なお、このグループマネージャ２０のＣＰＵ２０ａは、上述のように、各ロボットの動作つまり振舞いを制御するが、その振舞いの履歴は、上述のメモリ２０ｄに蓄積され、必要に応じて、センサマネージャ１８に提供する。
【００４０】
図４を参照して、この図４は実施例のロボットＲの外観を示し、ロボットＲは台３０上に、台３０に対して、前後左右に回転できるように、設けられる。つまり、胴体３２には２自由度が設定されている。
【００４１】
胴体３２の人の肩に相当する左右位置からは、それぞれに、肩関節（図示せず）によって、右腕３４Ｒおよび左腕３４Ｌが、前後左右に回転可能に設けられる。つまり、右腕３４Ｒおよび左腕３４Ｌには、それぞれ、２自由度が設定されている。
【００４２】
胴体３２の上端中央部には首３６が設けられ、さらにその上には頭部３８が設けられる。首３６すなわち頭部３８は、胴体３２に対して、前後左右に回転できるように、取り付けられている。つまり、首３６すなわち頭部３８には、ロール角（左右の傾げ）、ピッチ角（前後の傾げ）、ヨー（左右の回転）３自由度が設定されている。
【００４３】
頭部３８の前面すなわち人間の顔に相当する面には、右目４０Ｒおよび左目４０Ｌが設けられ、右目４０Ｒおよび左目４０Ｌには眼球４２Ｒおよび４２Ｌが設けられる。右目４０Ｒおよび左目４０Ｌは、まぶたを閉じたり開いたりでき、眼球４２Ｒおよび４２Ｌはそれぞれ上下左右に回転可能である。つまり、右目４０Ｒおよび左目４０Ｌすなわちまぶたには１自由度が、眼球４２Ｒおよび４２Ｌには２自由度が設定されている。
【００４４】
顔にはさらに、口４４が設けられていて、口４４は、閉じたり開いたりできる。つまり、口４４には１自由度が設定されている。
【００４５】
胴体３２の、人間の胸の位置には、ロボット対話システム１０において人Ｈに聞かせるための発話を行うスピーカ４６および環境特に人Ｈの発話音声を聞き取るマイク４８が設けられる。
【００４６】
なお、頭部３８の顔の額に相当する部分には動画または静止画を撮影できるカメラ５０が内蔵される。このカメラ５０は、対面する人Ｈを撮影でき、このカメラ５０からのカメラ信号（映像信号）は、環境カメラ１６（図１）と同様に、センサマネージャ１８のセンサＩ／Ｆを介してＣＰＵ２２ａに、入力されてもよい。
【００４７】
図５はロボットＲに内蔵されてロボットＲの動作（発話やジェスチャなど）を制御するロボットコントローラ２４を示すブロック図である。この図５を参照して、ロボットコントローラ２４は、ＣＰＵ２０ａを含み、ＣＰＵ２０ａには、内部バス２４ｂを介して通信装置２４ｃが接続される。通信装置２４ｃは、たとえばネットワークインターフェースコントローラ（ＮＩＣ）などを含み、ＣＰＵ２０ａはこの通信装置２４ｃを介してセンサマネージャ１８、グループマネージャ２０、さらには外部のコンピュータや他のロボット（ともに図示せず）などと通信でき、それらの間でデータの授受を行うことができる。
【００４８】
ＣＰＵ２０ａにはさらに、内部バス２４ｂを介して、メモリ２４ｄが接続される。メモリ２４ｄはＲＯＭやＲＡＭを含む。グループマネージャ２０から送られる制御データやスクリプトデータがメモリ２４ｄに一時的に記憶される。
【００４９】
また、ロボット制御に必要なプログラム（ＯＳやセンサ信号取得プログラムなど）は、メモリ２４ｄに記憶される。ロボットコントローラ２４はメモリ２４ｄに記憶されたプログラムに従ってロボットＲの動作を制御する。
【００５０】
つまり、ロボットコントローラ２４のＣＰＵ２０ａにはさらに、たとえばＤＳＰで構成されたアクチュエータ制御ボード２４ｅが接続され、このアクチュエータ制御ボード２４ｅは、以下に説明するように、ロボットＲの上述の各部に設けられたアクチュエータの動作を制御する。
【００５１】
胴体３２の２自由度の動き、すなわち前後左右の回転は、アクチュエータ制御ボード２４ｅを通してＣＰＵ２０ａが胴体アクチュエータ５２を制御するとこによって制御される。
【００５２】
右腕３４Ｒおよび左腕３４Ｌの２自由度の動き、すなわち前後左右の回転は、アクチュエータ制御ボード２４ｅを通してＣＰＵ２０ａが腕アクチュエータ５４を制御することによって制御される。
【００５３】
首３６すなわち頭部３８の３自由度の動き、すなわち前後左右の回転は、アクチュエータ制御ボード２４ｅを通してＣＰＵ２０ａが頭部アクチュエータ５６によって制御される。
【００５４】
右目４０Ｒおよび左目４０Ｌすなわちまぶたの開閉動作は、アクチュエータ制御ボード２４ｅを通してＣＰＵ２０ａがまぶたアクチュエータ５８を制御することによって制御される。眼球４２Ｒおよび眼球４２Ｌの２自由度の動きすなわち前後左右の回転は、アクチュエータ制御ボード２４ｅを通してＣＰＵ２０ａが眼球アクチュエータ６０を制御することによって制御される。口４４の開閉動作は、アクチュエータ制御ボード２４ｅを通してＣＰＵ２０ａが口アクチュエータ６２を制御することによって制御される。
【００５５】
なお、図４に示すロボットＲのスピーカ４６がロボットコントローラ２４のＣＰＵ２４ａに接続される。ＣＰＵ２４ａは、グループマネージャ２０から与えられ、必要に応じてメモリ２４ｄに記憶されたスクリプトデータに従って、スピーカ４６から発声（発話）させる。
【００５６】
このようなロボットコントローラ２４によって、ロボットＲの頭や腕は、ロボット対話システム１０において必要なとき、たとえばスクリプトで非言語動作が要求されているとき、必要な動きをするが、以下の説明では、各アクチュエータなどの具体的な制御は、上述の説明から容易に推測できるので、必ずしも説明しない。
【００５７】
図１に示すように、それぞれのロボットＲ１およびＲ２には、ロボットコントローラ２４と同様に内蔵したロボットセンサ２６が設けられる。ロボットセンサ２６は、ロボットＲ１およびＲ２のそれぞれの可動コンポーネントの状態を検知するための姿勢センサや加速度センサなどを含み、それらのセンサからのセンサ信号は、センサマネージャ１８に入力される。したがって、センサマネージャ１８は、ロボットセンサ２６からのセンサ信号に基づいて、ロボットＲ１およびＲ２の状態をセンシングすることができる。
【００５８】
なお、図４に示すロボットＲのマイク４８やカメラ５０がロボットセンサ２６を介してセンサマネージャ１８に入力される。センサマネージャ１８は、マイク４８から取り込んだ音声データをメモリ１８ｄ（図２）に記憶し、必要に応じて、音声認識処理を実行する。センサマネージャ１８はまた、カメラ５０からのカメラ信号を処理して、対話場所１２の状況をセンシングする。
【００５９】
なお、センサマネージャ１８は、図１の実施例では１つだけが図示されているが、２つ以上の任意数のセンサマネージャが設けられてもよく、その場合には、各センサマネージャはセンシング項目を分担することができる。
【００６０】
同様に、必要なら、２以上のグループマネージャ２０を用いるようにしてもよいし、逆にセンサマネージャ１８およびグループマネージャ２０を１台のコンピュータで実現するようにしてもよい。
【００６１】
また、図１実施例のロボット対話システム１０に用いられるロボットＲは図４を参照して上で説明したロボットに限定されるものではなく、少なくともスクリプトに従って発話できる機能があればよい。
【００６２】
図６は、ロボットＲがそれに従って対話するスクリプトの一例を示す概略図である。このスクリプトでは、まず、ロボットＲ同士が対話する部分（時間帯）と、ロボットＲが人Ｈに対して問いかけ（質問や同意の要求）をする部分（時間帯）を明確に区別する。そのためのフラグが、実施例では、「質問フラグFah（FLAG_ASK_HUMAN）」である。
【００６３】
質問フラグFahがリセットされているとき、つまり、「Fah=1」でないときは、ロボットＲ同士が、スクリプトによって予め決められた発話文をスピーカ４６（図４、図５）から出力して、参加者である、人Ｈにその対話内容を聞かせる。質問フラグFahがセットされているとき、つまり、「Fah=1」のときは、ロボットＲが、スクリプトによって予め決められた発話文をスピーカ４６（図４、図５）から出力して、参加者である、人Ｈに対して発話する。
【００６４】
図６の例では、上段のパート(A) と下段のパート(C) がそのロボット同士の対話を行うためのスクリプトであり、中段のパート(B) がロボットＲから人Ｈに問いかけを行うためのスクリプトである。
【００６５】
パート(A)のスクリプトの第１行(a1)、第２行(a2)、第３行(a3)では、「T=XX」が定義されていて、ここでは「XX1」、「XX2」、「XX3」は、それぞれのスクリプトを実行すべき時間または時刻を規定する。「RR」は、ロボットからロボットへ発話することを記述していて、それに後続する「SPEAKER=R1(R2)」「LISTNERR=R2(R1)」は、そのときの発話者が第１ロボットＲ1（または第２ロボットＲ２）であり、聴取者が第２ロボットＲ２（または第１ロボットＲ１）であると定義している。
【００６６】
スクリプト中の「TEXT」に後続する記述が、そのときロボットが発話すべき発話文である。そして、「NONVERBAL」に後続する記述は、第１ロボットＲ１および／または第２ロボットＲ２が行うべき非言語動作たとえば相手のロボットを見るとか、人Ｈを見るとかなどを規定する。
【００６７】
パート(B)では、質問フラグFahがセットされている、つまり、「Fah=1」なので、２台のロボットＲ１およびＲ２のいずれか一方、この例では第１ロボットＲ１から、人Ｈに対して、問いかけの発話文が出力される。したがって、第１行(b1)では、時間を規定する記述「T=XX4」に続いて、第１ロボットＲ１が人に対して発話することを示す「RH: SPEAKER=R1, LISTNER=H」が記述される。「TEXT」、「NONVERBAL」については上述のとおりである。
【００６８】
パート(B)の第１行(b1)の下に、条件１、条件２、条件３のスクリプトがあるが、これらは、第１行(b1)でしたロボットＲからの問いかけに対して人Ｈが発話したとき、次にロボットが発話する内容（返答）が条件に応じて変化することを規定している。
【００６９】
条件１は、人Ｈからの発話についてロボット同士がたとえば「面白いね」などと会話するスクリプトであり、そのために、時間を規定する記述「T=XX5」に続いて、第２ロボットＲ２が第１ロボットＲ１に対して発話することを示す「RR: SPEAKER=R2, LISTNER=R1」が記述される。
【００７０】
条件２および条件３は、いずれも、人Ｈの発話に対してロボットが反応するという設定で、いずれも、時間を規定する記述「T=XX5」に続いて、第２ロボットＲ２または第１ロボットＲ１が人に対して発話することを示す「RH: SPEAKER=R2, LISTNER=H」または「RH: SPEAKER=R1, LISTNER=H」が記述されている。
【００７１】
これら条件２または条件３の発話文は、センサマネージャ１８がマイク１４からの音声を音声認識し、その音声認識の結果に応じて、グループマネージャ２０によって決められるが、発話文の内容については、スクリプトとして予め定義されている。たとえば、第１行(b1)でのたとえば「あなたは何が好きですか？」というロボットからの問いかけ文に対して、人Ｈが「僕は○○が好きです。」と発話したとき、ロボットからは「○○はいいですね」とか「僕は○○より△△がすきだよ。」とか返答する。いずれも、人Ｈの発話に含まれていた「○○」をセンサマネージャ１８が認識した結果の発話である。そのため、条件２および条件３のいずれでも、「○○」を除いた発話文を予め規定しておく。
【００７２】
このように、この実施例のスクリプトによれば、センサマネージャ１８などによる音声認識がないか、あるいはうまく機能しなかったときには、条件１のように人Ｈの発話の具体的な内容に立ち入らないで人Ｈの発話に対して反応できるし、もし、音声認識がうまく機能した場合には、条件２または３のように、人Ｈの発話の具体的な内容を少なくとも一部に使いながら人Ｈの発話に対して反応することができる。
【００７３】
つまり、この実施例のロボット対話システム１０は、音声認識機能を排除するものではなく、音声認識機能を補完する事ができるものである。もちろん、音声認識機能がない場合にも、適用可能である。
【００７４】
パート(C)は、パート(A)と同様に、質問フラグFahがリセットされている、つまり、「Fah=1」ではないので、ロボット同士が会話するパートであるが、基本的にパート(B)での人Ｈからの発話とは無関係に進行する。スクリプトの内容は、パート(A)において説明した通りであるので、ここでは重複する説明はしない。
【００７５】
なお、図６の実施例における発話タイミングを決める時間ないし時刻Ｔは、たとえば人Ｈからの発話割り込み（インタラプト）があった場合など、センサマネージャ１８の指示に基づいてグループマネージャ２０が更新する（ずらせる）必要があるかもしれない。たとえば、センサマネージャ１８が発話タイミングの更新の要否を示すフラグ（図示せず）を管理していて、グループマネージャ２０はそのフラグがセットされたとき（「１」のとき）、Ｔを書き換えるようにすればよい。
【００７６】
図１のロボット対話システム１０では、対話場所１２の２台のロボットＲ１およびＲ２は、図６において例示したようなスクリプトに従って対話を進行するが、これらのロボットＲ１およびＲ２の発話を統括的に制御するのが、グループマネージャ２０である。
【００７７】
図７に示すフロー図は、そのグループマネージャ２０のＣＰＵ２０ａ（図３）の動作を示す。この図７の動作は、たとえばフレームレート程度の速度で繰り返し実行される。
【００７８】
最初のステップＳ１でＣＰＵ２０ａは、ダイアログデータベース２２（図１）からたとえば図６に例示したようなスクリプトデータを読み込むなど、初期化を実行する。
【００７９】
続くステップＳ３においてＣＰＵ２０ａは、センサマネージャ１８（図１、図３）から送られるセンサデータを更新する。
【００８０】
センサマネージャ１８では、図１に示すマイク１４やカメラ１６などのセンサからのセンサ信号に基づいて、非言語パラメータ「NONVERBAL_PARAMETERS」、たとえば人の「目が落ち着かない」、「あくびをした」などの状態を、センシングする。
【００８１】
さらに、センサマネージャ１８では、同じくセンサ信号に基づいて、「人の声があるか」、「（誰かが）話し中か」、「言語によってインタラプトされているか」あるいは「ロボットが非言語的に応答すべき振舞を人が生成しているか」などをセンシングする。
【００８２】
また、ロボットの振舞いの、詳細なパラメータを決定するために必要な情報（たとえば、人Ｈを見る場合だと、人の位置、人に対して頷く場合だと人の発話の抑揚や終了点）をセンシングする必要がある。
【００８３】
さらに、個々のロボットがどのように振舞ったか、たとえば「話す」、「待つ」、「聞く」、「陪席する」などのいずれを実行したかをセンシングする必要があるが、これらのロボットの振舞いは、ロボットの振舞いの履歴を管理するソフトウェアからの入力（たとえば、グループマネージャ２０から）によってセンシングすることができる。
【００８４】
ステップＳ３ではこのようなセンサマネージャ１８からのセンシングの結果データ（センシングデータ）を更新する。
【００８５】
次のステップＳ５では、ステップＳ３で更新したセンシングデータに基づいて、グループマネージャ２０のＣＰＵ２０ａは、人Ｈの発話による割り込みがあったかどうか、判断する。
【００８６】
このステップＳ５で“ＹＥＳ”を判断したとき、ＣＰＵ２０ａは、次のステップＳ７において、発話回復フラグIS_RECOVER= Frcがセットされているかどうか、つまりFrc=１かどうか判断する。ここで“ＹＥＳ”ということは、ステップＳ５で検出した人の発話による発話衝突から復帰したことを意味し、ロボットＲが何か発話を挿入する必要があるということである。したがって、ステップＳ９において、ステップＳ１で読み出したスクリプトにおける挿入文をロードし、ステップＳ１１で、ロボットＲすなわちロボットコントローラ２４にブロードキャストする。したがって、その後ロボットＲがその挿入文を発話することになる。
【００８７】
たとえば、人の発話割り込みに対して、第１ロボットＲ１から人に対して「そっか」を発話したり、第２ロボットＲ２から第１のロボットに「それで？」と発話したり、第１ロボットＲ１から第２ロボットＲ２に「そうそう、（スクリプトで決まっている次の発話）」と発話したりする。つまり、人の発話割り込みに対して、軽く返事をする程度の発話を挿入する。人の発話は無視されているわけではないが、その発話に対してロボットはその発話内容に対して正確に応答する返事をするのではなく、スクリプトで決められた返事を返すだけである。
【００８８】
そして、ステップＳ１１の後、ステップＳ３に戻る。
【００８９】
先のステップＳ５で“ＮＯ”のとき、つまり、人による発話割り込みがない場合、次のステップＳ１３で、ＣＰＵ２０ａは、スクリプトで設定した時間Ｔとなったかどうか判断する。“ＮＯ”ならステップＳ３に戻る。
【００９０】
ステップＳ１３で“ＹＥＳ”なら、つまり、スクリプトで予め決めた次の発話時間になったと判断したとき、ＣＰＵ２０ａは、ステップＳ１５で、前述の質問フラグFahがセットされているかどうか、つまり、人Ｈに対して問いかけ文を発話するかどうか判断する。
【００９１】
ステップＳ１５で“ＹＥＳ”なら、先の図６のパート(B)のように、人に問いかける質問文をスクリプトからロードし、ステップＳ１１でそれをブロードキャストする（ステップＳ１７）。
【００９２】
たとえば、第１ロボットＲ１が人に対して、「あなたはどう思いますか？」と質問し、人がその問いかけに対して返答した後、たとえば第２ロボットＲ２が「そっか、難しい質問だね」とか、第１のロボットが「だからやっぱり、（スクリプトで決まっている次の発話）」を発話する。ここでは、ロボットからの問いかけに対する人の返答を受け、ロボットは、その人の返答に直接言及せず、いわばあたりさわりのない、軽い発話を行う。つまり、人の返答は無視されているわけではないが、ロボットはその発話内容に対して正確に応答する返事をするのではなく、スクリプトで決められた返事を返すだけである。
その発話に対して真剣に返答を返しているわけではない。
【００９３】
そして、ステップＳ１５において“ＮＯ”が判断されると、つまり、人に対する問いかけを発話するときではないと判断したとき、ＣＰＵ２０ａは、次のステップＳ１９で次のスクリプトをロードする。
【００９４】
ステップＳ１９でロードするスクリプトは、図６で説明したように、発話者はだれか「ID_SPEAKER」、聴取者はだれか「ID_LISTNER」、陪席者（参加者）はだれか「ID_BYSTANDER」、発話時間「ONSET_TIME_SPEECH」、非言語動作「NONVERBAL_PARAMETERS」などの情報を含む。
【００９５】
ステップＳ２１で、ＣＰＵ２０ａは、スクリプトがまだ残っているかどうか判断する。つまり、対話フラグIS_CONVERSATIONがリセットされているかどうか判断する。“ＹＥＳ”のときは、ステップＳ１１に進むが、“ＮＯ”の場合には、ステップＳ２３でその旨ブロードキャストし、ステップＳ２５で終了処理をして、このルーチンが終わる。
【００９６】
ロボットＲ１およびＲ２は、いずれも、図８のフロー図に従って、ロボットコントローラ２４によって制御される。この図８のルーチンも、図７のルーチンと同様に、たとえばフレームレートで繰り返し実行される。
【００９７】
ステップＳ３１では、ロボットコントローラ２４のＣＰＵ２４ａは、初期化を実行し、次のステップＳ３３において、図７に示すようにグループマネージャ２０からブロードキャストされたフラグまたはデータ「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（非言語パラメータ：いつ誰に視線を向けるか、頷くか、などの非言語動作を規定するパラメータ）」を受ける。
【００９８】
そして、ステップＳ３５において、ＣＰＵ２４ａは、データ「IS_CONVERSATION」を参照して、対話がまだ継続するのかどうか判断する。“ＹＥＳ”なら、次のステップＳ３７で、データ「IS_ONSPEECH」を参照して、誰かが発話しているかどうか判断する。“ＹＥＳ”なら、ステップＳ３９で、そのときの話し手は、自分（が制御するロボット）かどうか判断する。つまり、データ「ID_SPEAKER」を参照して、自分が発話中かどうか判断する。
【００９９】
自分（が制御するロボット）が発話中であれば、ステップＳ３９で“ＹＥＳ”となり、ステップＳ４１に進む。ステップＳ４１では、ＣＰＵ２４ａは、言語によるインタラプト（発話遮断）があるかどうか、データ「IS_INTERRUPTED_VERBAL」を参照して判断する。ステップＳ４１で“ＹＥＳ”なら、言語によるインタラプトがあるということなので、次のステップＳ４３で、ＣＰＵ２４ａは、データ「CAN_BE_RECOVERED」を参照して、発話を再開してもよいかどうか判断する。
【０１００】
ステップＳ４３で“ＹＥＳ”なら、ステップＳ４６でロボットに発話を再開させるが、“ＮＯ”なら、ステップＳ４６で、ロボットに発話させないで、待たせる。
【０１０１】
ステップＳ４１で“ＮＯ”が判断されると、すなわち、言語によるインタラプトがないとき、ＣＰＵ２４ａは、ステップＳ４７において、非言語動作でインタラプトされたかどうか判断する。たとえば、人が不規則な非言語動作、たとえば人Ｈが大きく動いたりしていないかどうか判断する。
【０１０２】
ステップＳ３９で“ＮＯ”のとき、つまり、自分（が制御するロボット）が発話指示されていないときには、データ「ID_LISTNER」を参照して、自分が聞き手として指定されているかどうか判断する。
【０１０３】
ステップＳ４９で“ＹＥＳ”なら、ステップＳ５１で、ＣＰＵ２４ａは、それが制御しているロボットＲが聞き手になるように制御する。
【０１０４】
ステップＳ４９で“ＮＯ”なら、データ「ID_BYSTANDER」がロボットＲ１またはＲ２が陪席者となることを指示しているので、ロボットコントローラ２４すなわちＣＰＵ２４ａは、ロボットＲ１またはＲ２に対して、陪席者としての動作を行わせる。
【０１０５】
ステップＳ３７で“ＮＯ”を判断したとき、つまり、誰も発話中ではないとき、ステップＳ５５で、ＣＰＵ２４ａは、データ「ID_SPEAKER」を参照して自分が話し手か判断する。“ＹＥＳ”なら、自分が制御しているロボットＲ１またはＲ２が、ステップＳ５７において、発話文TEXTの内容に従って発話するように、制御する。
【０１０６】
ステップＳ５５で“ＮＯ”なら、当該ロボットは発話者でもなく、聴取者でもないのであるから、ＣＰＵ２４ａは、自分のロボットがステップＳ５９で陪席者として動作するように、制御する。
【０１０７】
ステップＳ３５で“ＮＯ”なら、ステップＳ６１で終了処理を実行した後このルーチンを終了する。
【０１０８】
このように、ロボットＲはいずれも、グループマネージャ２０からブロードキャストされたスクリプトにおいて決められているタイミングで、スクリプトにおいて決められた内容を発話するだけで、自発的な発話はしない。
【０１０９】
他方、人Ｈからの発話をロボットＲは解釈しない。人Ｈから発話があっても、ロボットＲは相槌を打つだけで、その人からの発話には応答しない。その相槌も、スクリプトに決めた通りに発話する。
【０１１０】
このような、ロボットコントローラ２４によるスクリプト通りのロボットＲ１およびＲ２の対話システムを用いれば、図９に示すように対話シーケンスが成立する。
【０１１１】
たとえば、ロボットが人に向かって話していることとロボットがロボットに向かって話していることがはっきりと区別でき、また同時に、対話の中で陪席者となる人間やロボットを無視してしまっているように見えないように、対話の履歴と参加者の意図推定に基づき、ロボット同士の対話と人に対する問いかけのための、発話と視線配布や相槌などのしぐさを生成する。つまり、ロボットＲは人Ｈの発話を聞き流すことができるので、人Ｈに対して質問して人Ｈに発話させることができる。これにより、人がロボット同士の対話に、自分も参加しているような感覚を覚えさせることができる。また結果として、ロボット同士の対話に含まれる内容を人に対して印象付けることができる。
【０１１２】
具体的には、図１０‐図１４で示す場面をスクリプトによって意図的に出現させることができる。
【０１１３】
図１０の例では、第１ロボットＲ１および第２ロボットＲ２が、発話を繰り返しながら、話題（トピックまたはテーマ）Ａについて、対話を進行しているとき、話題Ａから話題Ｂに切り換えるとき、スクリプト上で、ロボットＲ１および／またはＲ２が人Ｈに対して質問するように制御する。このときの質問の内容は、たとえば、既に終わった話題Ａに関するものでもよく、これから始まる話題Ｂに関するものでもよい。その両方に関するものでもよい。そして、人Ｈから回答があると、ロボットＲ１および／またはＲ２がスクリプトに従ってたとえば「そっか」というような相槌を発話する。
【０１１４】
つまり、ロボット同士の対話中には人Ｈに対して問いかけはせず、話題切り換えのタイミングで人Ｈに向けてロボットが発話する。そうすると、人Ｈは、ロボット同士の対話に参加しているような意識を持って、その状態を持続することができる。
【０１１５】
ただし、人Ｈからの回答に対して、ロボットが割り込みするようにしてもよい。たとえば、ロボットＲ２「○○は××だから、△△です。」、ロボットＲ１「え、でも○○って□□じゃないですか？」、ロボットＲ２「そっか、でも（話題Ｂに入る）」のような割り込みも可能である。
【０１１６】
図１１の例では、ロボットＲ１およびＲ２が質問や回答を繰り返しながら何らかの話題について対話を進行しているとき、ロボットがロボットにしたのと同じ質問を人Ｈに対して発話する。たとえば、ロボットＲ１および／またはＲ２によって、人Ｈに「あなたはどう（おもいますか）？」のような質問をさせる。そうすると、人Ｈから回答がある。ロボットＲ１およびＲ２は、それに対して、図１０の場合と同様の相槌を発話する。
【０１１７】
図１２の例では、図１１の場合と逆に、ロボット同士の対話をしているときに、ロボットＲ１またはＲ２が人Ｈにしたと同じ質問を他方のロボットＲ２またはＲ１にする。この場合には、人Ｈはロボット同士の対話の中に自分に対する質問と同じ質問が含まれることで、「対話感」を持つことができるであろう。
【０１１８】
図１３の例では、ロボットＲ１およびＲ２が質問や回答を繰り返しながら何らかの話題について対話を進行しているとき、たとえば第２ロボットＲ２が第１ロボットＲ１に何かについて説明し、第１ロボットＲ１から感想を述べる発話を行う。その感想に対して人Ｈが同意するように、ロボットＲ１またはＲ２から人Ｈに対して、たとえば「ね」と、同意を求める。この場合も、ある程度納得できる話であれば、同意の発話をしたり、心の中での同意を促したりすることができるので、人Ｈにはロボット同士の対話に参加しているという意識を持続することができる。
【０１１９】
図１４の例は、たとえば第２ロボットＲ２から第１ロボットＲ１
にたいして質問または説明し、それに対して第１ロボットＲ１がわざと間違った、勘違いした返答、あるいは理解していないことを尋ねる質問をして、人に「そうじゃなくてこうだよ」などと、人から訂正や補足の発話を行なうように、促す。ただし、人からの発話がなければ、第２ロボットＲ２が、代わりに訂正や補足をして、はじめのロボットの発話を流す。ユーザは、積極的に自分も対話に参加する形になるので、対話感がより高まる。
【０１２０】
なお、上述の実施例では、各ロボットＲ１およびダイアログデータベース２２に予め蓄積しておくようにした。しかしながら、このデータベース２２に代えて、たとえばネットから必要なスクリプトデータを逐次グループマネージャ２０に供給するようにしてもよい。
【０１２１】
さらに、上述の実施例は、物理的なエージェントであるロボットを用いたロボット対話システムであるが、この発明は、そのような物理的なエージェントだけでなく、たとえばディスプレイの画面上に表示されるアバタないしキャラクタのようなエージェント同士の対話システムも適用されてもよい。この場合、図１のロボットコントローラ２４やロボットセンサ２６は、そのようなアバタやキャラクタを表示するためのディスプレイコントローラ（図示せず）に代えられる。つまり、この発明は、エージェント対話システムである。
【符号の説明】
【０１２２】
１０  …ロボット対話システム
１２  …対話場所
Ｒ１、Ｒ２  …ロボット
１８  …センサマネージャ
２０  …グループマネージャ
２２  …ダイアログデータベース
２４  …ロボットコントローラ
【図１】
0006583765.tif 000002
【図２】
0006583765.tif 000003
【図３】
0006583765.tif 000004
【図４】
0006583765.tif 000005
【図５】
0006583765.tif 000006
【図６】
0006583765.tif 000007
【図７】
0006583765.tif 000008
【図８】
0006583765.tif 000009
【図９】
0006583765.tif 000010
【図１０】
0006583765.tif 000011
【図１１】
0006583765.tif 000012
【図１２】
0006583765.tif 000013
【図１３】
0006583765.tif 000014
【図１４】
0006583765.tif 000015