(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023001299
(43)【公開日】2023-01-04
(54)【発明の名称】対話システムおよびプログラム
(51)【国際特許分類】
G10L 15/22 20060101AFI20221222BHJP
G10L 15/10 20060101ALI20221222BHJP
G10L 13/00 20060101ALI20221222BHJP
G10L 15/00 20130101ALI20221222BHJP
【FI】
G10L15/22 300U
G10L15/10 200W
G10L13/00 100M
G10L15/00 200H
G10L13/00 100A
【審査請求】有
【請求項の数】4
【出願形態】OL
(21)【出願番号】P 2022179640
(22)【出願日】2022-11-09
(62)【分割の表示】P 2018142022の分割
【原出願日】2018-07-30
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成30年度国立研究開発法人科学技術振興機構、戦略的創造研究推進事業「ERATO石黒共生ヒューマンロボットインタラクションプロジェクト」に係る委託研究、産業技術力強化法第17条の適用を受ける特許出願
(71)【出願人】
【識別番号】504176911
【氏名又は名称】国立大学法人大阪大学
(74)【代理人】
【識別番号】100090181
【弁理士】
【氏名又は名称】山田 義人
(72)【発明者】
【氏名】吉川 雄一郎
(72)【発明者】
【氏名】飯尾 尊優
(72)【発明者】
【氏名】石黒 浩
(57)【要約】
【課題】 エージェントと対話するとき、対話の破綻を可及的回避することができる、対話システムを提供する。
【解決手段】 対話場所に2体のエージェント(R1、R2)を配置し、それらのロボットがスクリプト(ダイアログデータ)に従って人と対話する。一方のエージェント(R1)が人に対して、たとえば「休みの日にはどこに行きたいですか?」という、質問文を発話する。人から応答発話があるとき、その応答文がキーワードにヒットするかどうか判断する。キーワードがヒットすると、他方のエージェントがそのキーワードに関連した対話をさらに展開させる事前フレーズ(たとえば「やっぱり梅田かな」)を発話し、一方のエージェントがさらに認識応答を発話する。応答発話がなければ、他方のエージェントが代理応答を発話する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
対話場所にある少なくとも1体のエージェントを備え、前記対話場所において前記エージェントが、ダイアログに従って、人と対話する対話システムであって、
前記エージェントに質問文を発話させる質問文発話部、
前記質問文に対する前記人からの応答文の発話の有無を判断する第1判断部、
前記第1判断部が、前記応答文が発話されたことを判断したとき、前記応答文が所定のキーワードにヒットしたかどうか判断する第2判断部、
前記第2判断部が、前記応答文が前記特定のキーワードにヒットしたことを判断したとき、前記エージェントに、前記人からの応答の後の前記エージェントの次の発話を誘う、事前フレーズを発話させる事前フレーズ発話部、および
前記事前フレーズ発話部による事前フレーズの発話に続いて、前記事前フレーズに関し対話の脈絡を作る認識応答文を発話させる認識応答文発話部を備える、対話システム。
【請求項2】
対話場所にある少なくとも1体のエージェントを備え、前記対話場所において前記エージェントが、ダイアログに従って、人と対話する対話システムであって、
前記エージェントに質問文を発話させる質問文発話部、
前記質問文に対する前記人からの応答文の発話の有無を判断する第1判断部、
前記第1判断部が、前記応答文が発話されたことを判断しなかったとき、前記エージェントに、前記質問文に対して前記人にかわって応答するための代理応答文を発話させる、代理応答文発話部、および
前記代理応答文発話部による代理応答文の発話に続いて、前記代理応答文に関し対話の脈絡を作る認識応答文を発話させる認識応答文発話部を備える、対話システム。
【請求項3】
対話場所にある少なくとも1体のエージェントを備え、前記対話場所において前記エージェントが、ダイアログに従って、人と対話する対話システムのコンピュータを、
前記エージェントに質問文を発話させる質問文発話部、
前記質問文に対する前記人からの応答文の発話の有無を判断する第1判断部、
前記第1判断部が、前記応答文が発話されたことを判断したとき、前記応答文が所定のキーワードにヒットしたかどうか判断する第2判断部、
前記第2判断部が、前記応答文が前記特定のキーワードにヒットしたことを判断したとき、前記エージェントに、前記人からの応答の後の前記エージェントの次の発話を誘う、事前フレーズを発話させる事前フレーズ発話部、および
前記事前フレーズ発話部による事前フレーズの発話に続いて、前記事前フレーズに関し対話の脈絡を作る認識応答文を発話させる認識応答文発話部として機能させる、対話システムのプログラム。
【請求項4】
対話場所にある少なくとも1体のエージェントを備え、前記対話場所において前記エージェントが、ダイアログに従って、人と対話する対話システムのコンピュータを、
前記エージェントに質問文を発話させる質問文発話部、
前記質問文に対する前記人からの応答文の発話の有無を判断する第1判断部、
前記第1判断部が、前記応答文が発話されたことを判断しなかったとき、前記エージェントに、前記質問文に対して前記人にかわって応答するための代理応答文を発話させる、代理応答文発話部、および
前記代理応答文発話部による代理応答文の発話に続いて、前記代理応答文に関し対話の脈絡を作る認識応答文を発話させる認識応答文発話部として機能させる、対話システムのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、対話システムおよびプログラムに関し、特にたとえば、対話場所において少なくとも1体のエージェントが少なくとも1人の人と対話する、対話システムおよびプログラムに関する。
【背景技術】
【0002】
ロボット分野の広がりとともに、ロボット研究は日常的な場面で働くロボットの研究に焦点を移しつつあり、人間が生活する環境の中で、人と対話することができるロボットの開発が注目されている。
【0003】
近年の音声認識の技術の発展により、これまでにも人間と音声言語でやりとりをする機能を持つロボットが開発されてきているが、音声認識技術をいくら優れたものにしても、ロボットと人との対話において、人が人との対話に参加しているときに抱く「対話感(対話に参加しているという感覚)」と同等の感覚を、ロボットと対話する人に与え続けることは容易ではなかった。つまり、人が明らかに対話感を喪失することがあった。
【0004】
背景技術の一例である特許文献1には、ロボットと人との対話において、ロボットが人の感情を推測して応答文の発話とその発話に伴う動作を決定することが開示されている。
【0005】
特許文献2には、人とロボットとの対話システムにおいて、両者の同調を図ることで、持続的で自然なインタラクションを実現しようとするものである。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2004-90109号公報[B25J 13/00…]
【特許文献2】特開2012-181697号公報[G06F 3/16…]
【発明の概要】
【発明が解決しようとする課題】
【0007】
特許文献1の技術においても、特許文献2の技術においても、音声認識に基づく処理に限界があり、上述の「対話感」を人が持続することは容易ではない。つまり、対話の破綻を招来し易い。
【0008】
それゆえに、この発明の主たる目的は、新規な、対話システムおよびプログラムを提供することである。
【0009】
この発明の他の目的は、人との対話の破綻を可及的回避できる、対話システムおよびプログラムを提供することである。
【課題を解決するための手段】
【0010】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、この発明の理解を助けるために記述する実施形態との対応関係を示したものであって、この発明を何ら限定するものではない。
【0011】
第1の発明は、対話場所にある少なくとも1体のエージェントを備え、対話場所においてエージェントが、ダイアログに従って、人と対話する対話システムであって、エージェントに質問文を発話させる質問文発話部、質問文に対する人からの応答文の発話の有無を判断する第1判断部、第1判断部が、応答文が発話されたことを判断したとき、応答文が所定のキーワードにヒットしたかどうか判断する第2判断部、第2判断部が、応答文が特定のキーワードにヒットしたことを判断したとき、エージェントに、人からの応答の後のエージェントの次の発話を誘う、事前フレーズを発話させる事前フレーズ発話部、および事前フレーズ発話部による事前フレーズの発話に続いて、事前フレーズに関し対話の脈絡を作る認識応答文を発話させる認識応答文発話部を備える、対話システムである。
【0012】
第1の発明では、対話システム(10:実施例において相当する部分を例示する、限定を意図しない参照符号。以下、同様。)は、対話場所(12)ある少なくとも1体のエージェント(R1、R2)を備え、対話場所においてエージェントがダイアログに従って人(H)と対話する。質問発話部(20a、S7)は、エージェントに質問文を発話させる。人(H)はその質問文に対して応答文を発話するが、第1判断部(20a、S9)が、その質問文に対する人からの応答文の発話の有無を判断する。第1判断部(20a、S9)が、応答文が発話されたことを判断したとき、第2判断部(20a、S11、S13)は、応答文が所定のキーワードにヒットしたかどうか判断する。第2判断部(20a、S11、S13)が、応答文が特定のキーワードにヒットしたことを判断したとき、事前フレーズ発話部(20a、S17)が、エージェントに、人からの応答の後のエージェントの次の発話を誘う、事前フレーズを発話させる。認識応答文発話部(20a、S19)は、事前フレーズに関し対話の脈絡を作る認識応答文を発話させる。
【0013】
第1の発明によれば、認識応答文を発話させることによって、対話の破綻を可及的回避できる。
【0014】
第2の発明は、対話場所にある少なくとも1体のエージェントを備え、対話場所においてエージェントが、ダイアログに従って、人と対話する対話システムであって、エージェントに質問文を発話させる質問文発話部、質問文に対する人からの応答文の発話の有無を判断する第1判断部、第1判断部が、応答文が発話されたことを判断しなかったとき、エージェントに、質問文に対して人にかわって応答するための代理応答文を発話させる、代理応答文発話部、および代理応答文発話部による代理応答文の発話に続いて、代理応答文に関し対話の脈絡を作る認識応答文を発話させる認識応答文発話部を備える、対話システムである。
【0015】
第2の発明では、第1判断部(20a、S9)が、応答文が発話されたことを判断しなかったとき、代理応答文発話部(20a、S27)によって、エージェントに、質問文に対して人にかわって応答するための代理応答文を発話させ、さらに認識応答文発話部(20a、S29)が、代理応答文発話部による代理応答文の発話に続いて、代理応答文に関し対話の脈絡を作る認識応答文を発話させる。
【0016】
第2の発明によれば、応答文が発話されなくても、代理応答発話や認識応答発話を行わせることによって、対話の破綻を可及的回避できる。
【0017】
第3の発明は、対話場所にある少なくとも1体のエージェントを備え、対話場所においてエージェントが、ダイアログに従って、人と対話する対話システムのコンピュータを、エージェントに質問文を発話させる質問文発話部、質問文に対する人からの応答文の発話の有無を判断する第1判断部、第1判断部が、応答文が発話されたことを判断したとき、応答文が所定のキーワードにヒットしたかどうか判断する第2判断部、第2判断部が、応答文が特定のキーワードにヒットしたことを判断したとき、エージェントに、人からの応答の後のエージェントの次の発話を誘う、事前フレーズを発話させる事前フレーズ発話部、および事前フレーズ発話部による事前フレーズの発話に続いて、事前フレーズに関し対話の脈絡を作る認識応答文を発話させる認識応答文発話部として機能させる、対話システムのプログラムである。
【0018】
第3の発明によれば、第1の発明と同様の効果が期待できる。
【0019】
第4の発明は、対話場所にある少なくとも1体のエージェントを備え、対話場所においてエージェントが、ダイアログに従って、人と対話する対話システムのコンピュータを、エージェントに質問文を発話させる質問文発話部、質問文に対する人からの応答文の発話の有無を判断する第1判断部、第1判断部が、応答文が発話されたことを判断しなかったとき、エージェントに、質問文に対して人にかわって応答するための代理応答文を発話させる、代理応答文発話部、および代理応答文発話部による代理応答文の発話に続いて、代理応答文に関し対話の脈絡を作るる認識応答文を発話させる認識応答文発話部として機能させる、対話システムのプログラムである。
【0020】
第4の発明によれば、第2の発明と同様の効果が期待できる。
【発明の効果】
【0021】
この発明によれば、エージェントと人の対話の破綻を可及的回避することができる。
【0022】
この発明の上述の目的、その他の目的、特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【0023】
【
図1】
図1はこの発明の一実施例の対話システムの概要を示す概略図である。
【
図2】
図2は
図1実施例におけるセンサマネージャの構成の一例を示すブロック図である。
【
図3】
図3は
図1実施例におけるグループマネージャの構成の一例を示すブロック図である。
【
図4】
図4は
図1実施例におけるロボットの一例を示す概略図である。
【
図5】
図5は
図4のロボットを制御するロボットコントローラの構成の一例を示すブロック図である。
【
図6】
図6は
図1に示すグループマネージャの動作の一例を示すフロー図である。
【発明を実施するための形態】
【0024】
図1を参照して、この実施例の対話システム10の対話場所12には、第1ロボットR1および第2ロボットR2と1人の人Hが存在する。ただし、ロボットの数は1体でもよく、3体以上でもよい。また、人の数は2人以上でもよい。なお、以下において、第1ロボットR1および第2ロボットR2を特に区別する必要がないとき、単にロボットRと呼ぶことがある。
【0025】
この実施例の対話システム10は、
図1の矢印Aで示すように、ロボットR1またはR2が予め準備したダイアログ(台本)に従って人Hに対して質問文を発話させ、その質問文に対して人Hからの応答発話が適切な場合や、その質問文に対して人Hからの応答発話がない場合など、矢印Bで示すようにロボットR1またはR2が質問文を発話したロボットR1またはR2に対してダイアログに従って事前フレーズ発話や代理応答発話などを行わせる。
【0026】
人Hに対してロボットR1またはR2が質問文を発話しても、人Hから応答発話がなかったり、あるいは応答発話があったとしても、たとえば「わからない」、「知らない」、「忘れた」、「覚えていない」または「答えたくない」などのネガティブな発話であったりした場合、人HとロボットR1またはR2が対話を続けていくこと自体が困難になりやすい。つまり、ロボットR1またはR2に応じる形で人Hの発話が生成されなければ、対話は破綻しやすい。そこで、この実施例では、人Hから適切な応答発話がない場合には、人Hに対して質問文を発話したロボットR1またはR2に対して、ロボットR1またはR2(質問発話をしたロボットと同じであってもよいし、別のロボットであってもよい)に発話をさせることによって、対話の継続を可及的可能にする。
【0027】
他方で、人Hから適切な応答発話がある場合には、人Hに対して質問文を発話したロボットR1またはR2に対して、ロボットR1またはR2(質問発話をしたロボットと同じであってもよいし、別のロボットであってもよい)に事前フレーズを発話させることによって、そのメイントピックでの対話の継続を助長する。つまり、人Hに対して質問を続けることによって、ロボットR側からするとロボットRの、人Hと経験を共有したいという欲求を表現して、人Hに対話感を提供する。
【0028】
この実施例のような対話システムは、たとえば、高齢者の発話を引き出すツールなどとして、利用可能である。
【0029】
対話システム10の対話場所12には、この実施例では、聴覚センサとしてのマイク14および視覚センサとしてのカメラ16が設けられる。マイク14は、ロボットRや人Hの発話による音声を聴取し、あるいは環境音を取得するためのもので、必要ならマイクアレイであってよい。カメラ16は、同じく対話場所12の状況、特に人Hの表情や動作を撮影するカメラであり、動画または静止画を撮影する。カメラ16も必要なら2台以上設置してもよい。
【0030】
さらに、上述のマイク14やカメラ16の他に、センサとして、図示はしないが、装着型の姿勢センサ、加速度センサ、心拍の状態、呼吸の状態、体動(体の動き)の状態などの生体信号を検知する生体センサ、モーションキャプチャシステムなどを設けてもよい。
【0031】
マイク14が取得した音声信号およびカメラ16が撮影した画像信号などのセンサ信号は、センサマネージャ18に入力される。センサマネージャ18は、これらのセンサ信号を取得して、対話場所12の状況を判定して、判定結果をセンシングデータとして、グループマネージャ20に出力する。
【0032】
図2を参照して、センサマネージャ18は、CPU(中央演算処理装置)18aを含み、CPU18aには、内部バス18bを介して通信装置18cが接続される。通信装置18cは、たとえばネットワークインターフェースコントローラ(NIC)などを含み、CPU18aはこの通信装置18cを介してグループマネージャ20などと通信でき、それらの間でデータの授受を行うことができる。
【0033】
CPU18aにはさらに、内部バス18bを介して、メモリ18dが接続される。メモリ18dはROMやRAMを含む。たとえばDSP(Digital Signal Processor)で構成されるセンサI/F(インタフェース)18eを通して、マイク14(
図1)からの音声信号やカメラ16(
図1)からの画像信号を含むセンサ信号が入力される。そして、メモリ18dは、センサ信号を一時的に記憶する。
【0034】
センサマネージャ18は一種の判定器であり、CPU18aは、メモリ18dに記憶したセンサデータに基づいて、対話場所12の状態を判定する。そして、センサマネージャ18は、判定した状態を示すデータをグループマネージャ20に送る。
【0035】
また、センサマネージャ18に必要なプログラム(OSやセンサ信号取得プログラムなど)は、メモリ18dに記憶される。センサマネージャ18はメモリ18dに記憶されたプログラムに従って動作する。
【0036】
なお、CPU18aにはさらに、図示しないが、キーボードやディスプレイが付属されてもよい。
【0037】
グループマネージャ20は、たとえば後述の
図6のフロー図に従って、2体のロボットR1およびR2のそれぞれの発話動作(言語動作:Verbal operation)および振舞い(非言語動作:Nonverbal operation)を制御する。
【0038】
グループマネージャ20は、CPU20aを含み、CPU20aには、内部バス20bを介して通信装置20cが接続される。通信装置20cは、たとえばネットワークインターフェースコントローラ(NIC)などを含み、CPU20aはこの通信装置20cを介してセンサマネージャ18やロボットRなどと通信でき、それらの間でデータの授受を行うことができる。
【0039】
CPU20aにはさらに、内部バス20bを介して、メモリ20dが接続される。メモリ20dはROMやRAMを含む。メモリI/F20eを通してダイアログ(Dialog:対話)データベース22から、スクリプトデータを読み込み、それをメモリ20dに一時的に記憶する。
【0040】
また、グループマネージャ20に必要なプログラム(OSやセンサ信号取得プログラムなど)は、メモリ20dに記憶される。グループマネージャ20はメモリ20dに記憶されたプログラムに従って動作する。
【0041】
なお、このグループマネージャ20のCPU20aは、上述のように、各ロボットの動作つまり振舞いを制御するが、その振舞いの履歴は、上述のメモリ20dに蓄積され、必要に応じて、センサマネージャ18に提供する。
【0042】
CPU20aにはさらに、内部バス20bを介して、メモリ20dおよび入力装置20eが接続される。メモリ20dはROMやRAMを含む。メモリI/F20fを通してダイアログデータベース22から、スクリプト(ダイアログ)を読み込み、それをメモリ20dに一時的に記憶する。
【0043】
ただし、「ダイアログ」は、対話中に行うべき発話や非言語動作の指令の系列を意味し、ダイアログデータベース22は、ダイアログの集合(たとえば、子供のころの話、旅行の話、健康の話など、各メイントピックの対話のための指令の系列が含まれる)である。そして、「スクリプト」は、その指令の系列を表す文字列のことであり、スクリプトデータは、その指令を表す文字列である。したがって、スクリプトデータの系列がスクリプトになる。このようなスクリプトは、グループマネージャ20によって、ダイアログキュー23cからロボットR1およびR2に送信される。
【0044】
ただし、スクリプトデータは、言語データだけでなく、非言語データも含む。言語データは、ロボットR1およびR2の発話を指示するスクリプトデータであり、非言語データは、たとえばロボットR1およびR2の動作、人Hを見る、頷く、首を横に振る、首をかしげるなどの、非言語動作を指示するスクリプトデータである。
【0045】
また、グループマネージャ20に必要なプログラム(OSやセンサ信号取得プログラムなど)は、メモリ20dに記憶される。グループマネージャ20はメモリ20dに記憶されたプログラムに従って動作する。
【0046】
なお、このグループマネージャ20のCPU20aは、上述のように、各ロボットの動作つまり振舞いを制御するが、その振舞いの履歴は、上述のメモリ20dに蓄積され、必要に応じて、センサマネージャ18に提供する。
【0047】
さらに、
図1に示す対話システム10は、次ダイアログ候補プール23aを備える。次ダイアログ候補プール23aは、ダイアログキュー23cに記憶されている現在進行中のスクリプトに対する人Hの応答に応じて動的に選択される候補となる次に発話すべき一群のスクリプトを記憶しておくための記憶領域であって、特に、人Hからの応答文の発話の有無、応答文に含まれるキーワードが予め設定している特定のキーワードに対してヒットしたかどうか、などに応じて、個別に準備しておく。
【0048】
不応答ダイアログプール23bは、たとえばロボットR1が発話した質問文に対して人Hからの応答文の発話がないとき(マイク14への応答文の音声入力がないときだけでなく、音声入力がマイク14にあった場合でも、その応答文が認識できなかった場合、認識できたとしてもその応答文がネガティブな発話のものである場合なども含む。)にロボットR1および/またはR2が発話すべきダイアログがプールしている。すなわち、不応答ダイアログプール23bは、次ダイアログ候補プール23aにロードした将来の一群のダイアログやダイアログキュー23cにロードされ、進行中であるダイアログでは予定していなかった例外的な場合に対処するために発話しまたは非言語動作を実行すべき一群のスクリプトを記憶しておくための記憶領域である。
【0049】
ダイアログキュー23cもたとえばメモリ20dの中の一領域であるが、このダイアログキュー23cには、次ダイアログ候補プール23aにロードされているスクリプトデータや、不応答ダイアログプール23bにロードされているスクリプトデータを、次にロボットR1および/またはR2が即座に実行できるように,待ち行列の形でロードすることができる。
【0050】
スクリプトには、たとえばヘッダとして、それに含まれるスクリプトデータの実行時間(tnext)が書き込まれていて、ダイアログキュー23cでは、その実行時間(tnext)によって常にスクリプトデータがソーティングされ、グループマネージャ20は、実行時間が同じスクリプトデータが同時に実行されるように、各ロボットコントローラ24にスクリプトデータを送る。したがって、たとえば、ロボットR1およびR2が同時に同じ動作、たとえば人Hを見るなどの動作ができるし、同じロボットR1またはR2が、たとえば、発話と同時に他方のロボットまたは人Hを見ることもできる。
【0051】
ここで、この実施例におけるダイアログは、メイントピックないしメインカテゴリと、各メイントピックないしメインカテゴリの中のいくつかのサブトピックないしサブカテゴリで構成される。この実施例では、人Hとの対話の深度を深くすることができるように、たとえば子供のころの話、旅行の話、健康の話など、比較的少ないメイントピック(ないしカテゴリ)のダイアログを準備する。
【0052】
子供のころの話、というメイントピック(大トピック)の中には、たとえば、遊び、食事、生活・住まい、などのサブトピック(中トピック)を設定する。サブトピック「遊び」には、たとえば、場所、公園、おもちゃ、かくれんぼ、ままごと、鬼ごっこ、かけっこ、だるまさんがころんだ、などのサブトピック(小トピック)を設定する。サブトピック「食事」には、たとえば、給食、おやつ、おかず、玄米、好きなもの、嫌いなもの、牛乳、ケーキ、魚と肉、ごはんとパン、カレーと寿司、などのサブトピックを設定する。サブトピック「生活・住まい」には、たとえば、住んでいたところ、家、井戸、お父さんとお母さん、兄弟姉妹、仕事、鶏、牛、馬、犬と猫、楽しかったこと、辛かったこと、などを設定する。
【0053】
旅行の話、というメイントピックの中には、たとえば、温泉、富士山、移動手段(飛行機、新幹線)などのサブトピックを設定し、それぞれのサブトピックにはさらに細かいサブトピックを準備しておく。
【0054】
健康の話、というメイントピックの中には、たとえば、運動、ゴルフ、などのサブトピックを設定し、それぞれのサブトピックにはさらに細かいサブトピックを準備しておく。
【0055】
図4を参照して、この
図4は実施例のロボットRの外観を示し、ロボットRは台30上に、台30に対して、前後左右に回転できるように、設けられる。つまり、胴体32には2自由度が設定されている。
【0056】
胴体32の人の肩に相当する左右位置からは、それぞれに、肩関節(図示せず)によって、右腕34Rおよび左腕34Lが、前後左右に回転可能に設けられる。つまり、右腕34Rおよび左腕34Lには、それぞれ、2自由度が設定されている。
【0057】
胴体32の上端中央部には首36が設けられ、さらにその上には頭部38が設けられる。首36すなわち頭部38は、胴体32に対して、前後左右に回転できるように、取り付けられている。つまり、首36すなわち頭部38には、ロール角(左右の傾げ)、ピッチ角(前後の傾げ)、ヨー(左右の回転)3自由度が設定されている。
【0058】
頭部38の前面すなわち人間の顔に相当する面には、右目40Rおよび左目40Lが設けられ、右目40Rおよび左目40Lには眼球42Rおよび42Lが設けられる。右目40Rおよび左目40Lは、まぶたを閉じたり開いたりでき、眼球42Rおよび42Lはそれぞれ上下左右に回転可能である。つまり、右目40Rおよび左目40Lすなわちまぶたには1自由度が、眼球42Rおよび42Lには2自由度が設定されている。
【0059】
顔にはさらに、口44が設けられていて、口44は、閉じたり開いたりできる。つまり、口44には1自由度が設定されている。
【0060】
胴体32の、人間の胸の位置には、対話システム10において人Hに聞かせるための発話を行うスピーカ46および環境特に人Hの発話音声を聞き取るマイク48が設けられる。
【0061】
なお、頭部38の顔の額に相当する部分には動画または静止画を撮影できるカメラ50が内蔵される。このカメラ50は、対面する人Hを撮影でき、このカメラ50からのカメラ信号(映像信号)は、環境カメラ16(
図1)と同様に、センサマネージャ18のセンサI/Fを介してCPU22aに、入力されてもよい。
【0062】
図5はロボットRに内蔵されてロボットRの動作(発話やジェスチャなど)を制御するロボットコントローラ24を示すブロック図である。この
図5を参照して、ロボットコントローラ24は、CPU20aを含み、CPU20aには、内部バス24bを介して通信装置24cが接続される。通信装置24cは、たとえばネットワークインターフェースコントローラ(NIC)などを含み、CPU20aはこの通信装置24cを介してセンサマネージャ18、グループマネージャ20、さらには外部のコンピュータや他のロボット(ともに図示せず)などと通信でき、それらの間でデータの授受を行うことができる。
【0063】
CPU20aにはさらに、内部バス24bを介して、メモリ24dが接続される。メモリ24dはROMやRAMを含む。グループマネージャ20から送られる制御データやスクリプトデータがメモリ24dに一時的に記憶される。
【0064】
また、ロボット制御に必要なプログラム(OSやセンサ信号取得プログラムなど)は、メモリ24dに記憶される。ロボットコントローラ24はメモリ24dに記憶されたプログラムに従ってロボットRの動作を制御する。
【0065】
つまり、ロボットコントローラ24のCPU20aにはさらに、たとえばDSPで構成されたアクチュエータ制御ボード24eが接続され、このアクチュエータ制御ボード24eは、以下に説明するように、ロボットRの上述の各部に設けられたアクチュエータの動作を制御する。
【0066】
胴体32の2自由度の動き、すなわち前後左右の回転は、アクチュエータ制御ボード24eを通してCPU20aが胴体アクチュエータ52を制御するとこによって制御される。
【0067】
右腕34Rおよび左腕34Lの2自由度の動き、すなわち前後左右の回転は、アクチュエータ制御ボード24eを通してCPU20aが腕アクチュエータ54を制御することによって制御される。
【0068】
首36すなわち頭部38の3自由度の動き、すなわち前後左右の回転は、アクチュエータ制御ボード24eを通してCPU20aが頭部アクチュエータ56によって制御される。
【0069】
右目40Rおよび左目40Lすなわちまぶたの開閉動作は、アクチュエータ制御ボード24eを通してCPU20aがまぶたアクチュエータ58を制御することによって制御される。眼球42Rおよび眼球42Lの2自由度の動きすなわち前後左右の回転は、アクチュエータ制御ボード24eを通してCPU20aが眼球アクチュエータ60を制御することによって制御される。口44の開閉動作は、アクチュエータ制御ボード24eを通してCPU20aが口アクチュエータ62を制御することによって制御される。
【0070】
なお、
図4に示すロボットRのスピーカ46がロボットコントローラ24のCPU24aに接続される。CPU24aは、グループマネージャ20から与えられ、必要に応じてメモリ24dに記憶されたスクリプトデータに従って、スピーカ46から発声(発話)させる。
【0071】
このようなロボットコントローラ24によって、ロボットRの頭や腕は、対話システム10において必要なとき、たとえばスクリプトで非言語動作が要求されているとき、必要な動きをするが、以下の説明では、各アクチュエータなどの具体的な制御は、上述の説明から容易に推測できるので、必ずしも説明しない。
【0072】
図1に示すように、それぞれのロボットR1およびR2には、ロボットコントローラ24と同様に内蔵したロボットセンサ26が設けられる。ロボットセンサ26は、ロボットR1およびR2のそれぞれの可動コンポーネントの状態を検知するための姿勢センサや加速度センサなどを含み、それらのセンサからのセンサ信号は、センサマネージャ18に入力される。したがって、センサマネージャ18は、ロボットセンサ26からのセンサ信号に基づいて、ロボットR1およびR2の状態をセンシングすることができる。
【0073】
なお、
図4に示すロボットRのマイク48やカメラ50がロボットセンサ26を介してセンサマネージャ18に入力される。センサマネージャ18は、マイク48から取り込んだ音声データをメモリ18d(
図2)に記憶し、必要に応じて、音声認識処理を実行する。センサマネージャ18はまた、カメラ50からのカメラ信号を処理して、対話場所12の状況をセンシングする。
【0074】
なお、センサマネージャ18は、
図1の実施例では1つだけが図示されているが、2つ以上の任意数のセンサマネージャが設けられてもよく、その場合には、各センサマネージャはセンシング項目を分担することができる。
【0075】
同様に、必要なら、2以上のグループマネージャ20を用いるようにしてもよいし、逆にセンサマネージャ18およびグループマネージャ20を1台のコンピュータで実現するようにしてもよい。
【0076】
また、
図1実施例の対話システム10に用いられるロボットRは
図4を参照して上で説明したロボットに限定されるものではなく、少なくともスクリプトに従って発話できる機能があればよい。
【0077】
図6を参照して、
図1の対話システム10のグループマネージャ20のCPU20aは、ダイアログデータベース26(
図1)からたとえば先に説明したようなダイアログデータ(スクリプトデータ)を読み込むなど、初期化を実行する。この
図6の動作は、たとえばフレームレート程度の速度で繰り返し実行される。
【0078】
次のステップS3でCPU20aは、ダイアログのメイントピック(大トピック)を変更するかどうか判断する。メイントピックを変更するかどうかは、タイムスケジュールに従って変更する場合、所定時間経過したかどうか、などを判断することによって、このステップS3で決定される。なお、以下の実施例の具体的な説明では、メイントピック「旅行の話」のダイアログに従う場合を例に挙げて説明する。
【0079】
なお、ステップS3で判断するメイントピックを変更する条件としては、他に、前回のメイントピックの変更から所定数N回(これは、同じメイントピックの話が続きすぎることによって、対話が退屈になるのを避けるために設定する、同一メイントピックの繰り返し回数の最大値である。)以上経過したとき、人Hからの応答発話が今対話中のメイントピックとは別のメイントピックのキーワードにヒットしたとき、人Hからの応答発話が所定回数認識できなかったとき、などが考えられる。
【0080】
ステップS3で“NO”を判断したときはそのまま、“YES”を判断したときはステップS5でメイントピックを変更して、次ダイアログ候補プール23aから読み出したスクリプトに従って、たとえばロボットR1が、人Hに対して、たとえば「休みの日にはどこへ行きたいですか?」のような質問文を発話する。ここで、「どこへ行く」というのが、「旅行の話」というメイントピックのサブトピックと考えることができる。このステップS7を実行するCPU20aは、質問文発話部として機能する。
【0081】
ステップS9において、CPU20aは、ステップS7でたとえばロボットR1が発話した質問文に対して人Hからの応答発話があったかどうか、センサマネージャ16で検出したマイク14からの音声データに基づいて、判断する。このステップS9を実行するCPU20aは、人からの応答発話の有無を判断する第1判断部として機能する。
【0082】
応答発話があったと判断したとき、CPU20aは、次のステップS11では、ステップS9で検出した人Hからの応答発話が認識できたかどうか、すなわち、その応答発話がたとえばダイアログデータベース22に予め設定しているキーワードにヒットしたかどうか、判断する。つまり、人Hの応答文の中に予め設定しているキーワードが含まれているかどうか、判断する。これは、マイク14からの音声データを任意の音声認識技術を利用して処理することによって、簡単に実行することができる。
【0083】
ただし、キーワードがヒットした場合であっても、人Hの応答文が複数のキーワードに同時にヒットしている場合には、このステップS11では“NO”と判断するようにしている。どのキーワードで対話を進めていくべきか判断しにくいためである。このステップS11(次のステップS13を含むことがある)を実行するCPU20aは、人からの応答文がキーワードにヒットしたかどうかを判断する第2判断部として機能する。
【0084】
ステップS13でCPU20aは、ステップS11で検出したキーワードがネガティブな発言であるかどうか、判断する。ネガティブな発言とは、前述したとおり、質問文に対して回答を拒否しているかのような発言のことである。
【0085】
ステップS13で“NO”を判断したとき、次のステップS15で、そのキーワードは現在対話中のメイントピックの中に定められているキーワードか、別のメイントピックの中に設定されているキーワードかを判断する。
【0086】
もし、このステップS15で“YES”を判断したら、ステップS3に関連して説明したように、人Hからの応答発話が今対話中のメイントピックとは別のメイントピックのキーワードに及んだとき、という条件を充足することになるので、ステップS5に戻って、メイントピックの変更処理を実行した後、再度ステップS7に進む。
【0087】
ステップS11でキーワードがヒットしたことを判断しかつステップS15でそのキーワードが現在進行中のメイントピックのものであると判断したとき、続くステップS17で、CPU20aは、質問文を発話したロボット、この例ではロボットR1と別のロボット、ロボット2に、たとえば「やっぱり梅田かな」という事前フレーズを発話させる。ここで、事前フレーズとは、次のロボットR1(またはロボットR2)の発話を誘導する意味の発話文である。ただし、検出されたキーワードの発話を人Hが実際に意図していたら、そのときには、ロボットR2が発話した事前フレーズは単に傾聴感(ロボットRが人Hの発話を傾聴しているという感覚)に貢献するに過ぎないが、人Hが意図していない事前フレーズであった場合、続くロボットR1からの返答の脈絡を作る効果がある。
【0088】
つまり、事前フレーズは、いわば「話の振り」(対話や議論などが円滑に進行するように、話題を提供することを意味する語)の役目をする。この実施例では、ロボットR2がそのキーワード(この例では「梅田」)で話を振ったので、ロボットR1がそれを受け継いで、たとえば「梅田は便利だもんね」という発話をし、それによって人Hに、梅田の話になったことについて違和感を与えない効果がある。
【0089】
他に想定されている対話としては次の例1や例2などがある。
<例1>
ロボットR1:休みの日にはどこにいきたいですか?(ステップS7)
人H:一番は梅田かな(「梅田」と認識される)(ステップS11)
ロボットR2:やっぱり梅田かな(ステップS17)
ロボットR1:梅田は便利だもんね(ステップS19)
<例2>
ロボットR1:休みの日にはどこにいきたいですか?(ステップS7)
人H:青梅だな(「お、梅田な」と認識される)(ステップS11)
ロボットR2:やっぱり梅田かな(ステップS17)
ロボットR1:梅田は便利だもんね(ステップS19)
このように、ロボットR2による「やっぱり梅田かな」という事前フレーズの発話は、次のステップS19において発話されるロボットR1の返答の脈絡になる。
【0090】
ここで、ステップS17では、ステップS7で質問文を発話したロボットR1とは違うロボットR2に事前フレーズを発話させるようにし、さらにステップS19でそれに続く認識応答発話(ロボットR2による事前フレーズを認識した上での発話)を別のロボットR1に発話させるようにした。つまり、2体のロボットR1およびR2に交互に、質問文、事前フレーズ、認識応答発話を行わせたが、順番は逆でもよい。さらには、質問文、事前フレーズ、認識応答発話を全て同じロボットR1またはR2に発話させるようにしてもよい。あるいは、図示しいてない、さらに他のロボット(R3)にステップS19の認識応答発話を行わせるようにしてもよい。
【0091】
なお、ステップS17でたとえば「エキスポランド」という事前フレーズをロボットR2に発話させたときには、ステップS19でたとえば「エキスポは人気だね」という認識応答発話をロボットR1(またはR3)にさせるようなダイアログも考えられる。
【0092】
また、ステップS17でたとえば「そうだ、北海道があった」という事前フレーズをロボットR2に発話させたときには、ステップS19でたとえば「北海道はカニがおすすめです」という認識応答発話をロボットR1(またはR3)にさせるようなダイアログも考えられる。
【0093】
このような事前フレーズに含まれる「梅田」、「エキスポランド」または「北海道」などは、「旅行の話」というメイントピックの「どこへ行くか」というサブトピックのさらにサブトピックであると考えられる。
【0094】
なお、ステップS17を実行するCPU20aは、事前フレーズ発話部として機能する。
【0095】
ステップS19でロボットR2に認識応答発話をさせた後、CPU20aは、次のステップS21で、対話を終了するかどうか、判断する。ここでは、たとえば、対話の開始から一定時間(たとえば15分)経過したこと、カメラ16(
図1)の映像によると人Hが不在になったこと、などの対話を終了する条件を判断する。
【0096】
終了する場合は、ステップS23で終了処理をした後、終了する。終了処理は、たとえば対話のログを保存するなどの処理を含む。
【0097】
終了しない場合には、先のステップS3に戻る。
【0098】
先のステップS9で“NO”の場合、すなわちマイク14を通して人Hの返答発話を取得できなかった場合、CPU20aは、不応答ダイアログプール23bから、次のステップS23で現在進行中のメイントピックの中でキーワードをランダムに選択する。そして、ステップS25で、質問文を発話したロボットR1とは異なるロボットR2によって、その選択したキーワードに従った代理応答文(たとえば、「僕は、やっぱり梅田かな」)を発話させる。ここでは、先のステップS17の事前フレーズとは異なり、たとえば「僕は」という発話主体を表す語を発話させることによって、ロボットR2の主体的な代理応答文であることをはっきりさせる。このステップS25(ステップS23を含むことがある。)を実行するCPU20aは、代理応答文発話部部として機能する。
【0099】
その後、ステップS29で、CPU20aは、先のステップS19と同じような認識応答発話をロボットR1に行わせる。ただし、ステップS7、S27およびS29がすべて同じロボットR1またはR2であってもよいことは、先に述べたとおりである。
【0100】
ステップS27においてロボットR2に代理応答文を発話させることによって、人Hからの応答発話が無くても、取り敢えず対話が破綻することはなく、ステップS29での認識応答発話によって、人Hの対話意欲の回復を期待することができる。たとえば、ステップS7での質問文に対して人Hが急には返答できない場合であっても、ステップS27の代理応答文によってトリガされ人Hが応答文を着想する可能性がある。この場合、人Hは、そのときのメイントピックたとえば「旅行の話」について対話を継続することができる。その意味では、ステップS27の代理応答文はステップS17での事前フレーズと同様の効果(対話の脈絡を作る)を奏することができる。
【0101】
なお、ステップS13で“YES”を判断しステップS25でキーワードを変更した回数が一定回数以上になったときステップS3、S5でメイントピックを変更するようにしてもよい。
【0102】
ステップS29の後、先のステップS21に進んで、終了かどうか判断する。
【0103】
ステップS11で“NO”を判断したとき、CPU20aは、ステップS31において、不応答ダイアログプール23bから選択した曖昧な応答文(たとえば、「とっか行きたいね」)をたとえばロボットR2に発話させる。この曖昧な応答は、ステップS27で代理応答が「ロボットR2が人Hの代わりにロボットR1の質問に対して答える」という意味を持つのに対し、「ロボットR1やR2が人Hの発話に対して答える」という意味を持つ。つまり、ステップS9で人Hからの応答発話は検出したけれどもステップS11でその応答発話文を認識することができなかったとき、そのままであれば対話が破綻することがあるが、曖昧な応答文をロボットに発話させることによって、人Hの次の発話を引き出すことができ、それによって対話の破綻を回避できる可能性が生まれる。
【0104】
このステップS31を実行するCPU20aは、曖昧応答文発話部として機能し、そして、ステップS31の後、ステップS21に進む。
【0105】
なお、上述の説明ではメイントピックについては時間の経過や、人Hの発話や発話なしなどで変更できることを説明したが、サブトピックについては、次のような場合に変更することができる。
【0106】
人Hの発話が、現在のサブトピックと同じサブトピック内に前の発話に関連度の高い未発話のダイアログ(シナリオ)がある場合、その関連度の高いサブトピックに移動する。たとえば、各シナリオに予め登録しておくキーワードと距離が近い語(言葉)が含まれているかどうか判定する。距離は、たとえばWord2Vec等の手法を用いて評価する。ただし、そのような言葉が含まれていても、同様に他のキーワードと近い別の言葉が含まれていたら、それを割り引いて評価する。
【0107】
ステップS11でキーワードにヒットせず、ステップS31へ進む回数が所定回数N以上になったときに、サブトピックを変更するようにしてもよい。
【0108】
なお、上述の実施例では、各ロボットR1およびダイアログデータベース22に予め蓄積しておくようにした。しかしながら、このデータベース22に代えて、たとえばネットから、必要なダイアロク(スクリプトデータ)を逐次グループマネージャ20に供給するようにしてもよい。
【0109】
さらに、上述の実施例は、物理的なエージェントであるロボットを用いた対話システムであるが、この発明は、そのような物理的なエージェントだけでなく、たとえばディスプレイの画面上に表示されるアバタないしキャラクタのようなエージェントを用いることも可能である。この場合、
図1のロボットコントローラ24やロボットセンサ26は、そのようなアバタやキャラクタを表示するためのディスプレイコントローラ(図示せず)に代えられ、対話場所はそのエージェントを表示しているディスプレイの近傍が想定できる。
【0110】
さらに、上述のロボットによるエージェントやCGによるエージェントに代えて、音声だけのエージェントも人との対話のためのエージェントとして採用することができる。たとえば、カーナビのスピーカが車両の左右についているとして、その左側から聞こえてくる声の主をR1(実施例のロボットR1に相当する。)とし、右側の声の主をR2(実施例のロボットR2に相当する。)とすることが考えられる。この場合、対話場所は車の中ということになり、
図1のロボットコントローラ24は、そのような音声エージェントの発話を制御するオーディオコントローラ(図示せず)に代えられる。
【0111】
つまり、この発明は、任意のエージェントを用いた人との対話システムである。
【符号の説明】
【0112】
10 …対話システム
12 …対話場所
R1、R2 …ロボット
18 …センサマネージャ
20 …グループマネージャ
22 …ダイアログデータベース
24 …ロボットコントローラ