図1を参照して、この実施例の傾聴対話持続システム100は、たとえば認知症患者のような軽度脳障害を持つユーザAと遠隔地に居るユーザBとの対話に利用される。そのため、傾聴対話持続システム100には、ユーザAが居る部屋1に設置される腹部カメラ12a(第2カメラ)を含むぬいぐるみ型ロボット(以下、単に「ロボット」と言う。)10a、PC14a、モニタ16a、スピーカ18a、マイク20aおよびモニタカメラ22a(第1カメラ)と、ユーザBが居る部屋2(遠隔地)に設置される腹部カメラ12bを含むロボット10b、PC14b、モニタ16b、スピーカ18b、マイク20bおよびモニタカメラ22bと、ネットワーク200に接続されるサーバ24とを備える。なお、本明細書では、部屋1および部屋2において対応する機器および人間を、区別なく説明する必要がある場合には、符号にアルファベットを添えずに参照番号だけで表示されることがあることに留意されたい。
ロボット10はPC14による制御信号に基づいて傾聴動作や、発話を行う。ロボット10の腹部に設けられた腹部カメラ12はユーザを撮影し、ロボット10を介して画像をPC14に出力する。PC14は、ロボット10に対して制御信号を出力するとともに、腹部カメラ12およびモニタカメラ22によって撮影された画像と、マイク20によって集音される音声とが入力される。そして、PC14は、入力された画像と音声とに基づいてユーザの行動および状態を判定および認識し、その結果をネットワーク200を介してサーバ24に送信する。
PC14、モニタ16、スピーカ18、マイク20およびモニタカメラ22はテレビ電話機として機能する。たとえば、PC14aは、ユーザB側のPC14bから送信されたユーザBの画像および音声を受信する。そのため、モニタ16aはユーザBの画像を表示し、スピーカ18はユーザBの音声を出力する。さらに、マイク20はユーザAの音声を集音してPC14に出力し、モニタカメラ22はユーザAの画像を撮影してPC14に出力する。そして、PC14は、ユーザAの画像と音声とを、ネットワーク200を介してPC14bに送信する。
サーバ24は、PC14aおよびPC14bから送信される、ユーザAおよびユーザBの行動や状態のデータを受信すると、データベース(DB)に蓄積させる。そして、PC14から行動および状態のデータを取得する要求がある場合に、その要求に応じてデータをPC14に送信する。
なお、他の実施例では、ロボット10とPC14とが有線接続ではなく、無線接続であってもよい。また、PC14およびサーバ24のネットワーク200との接続も、有線接続であってもよいし、無線接続であってもよい。
図2は図1に示す実施例を側面から見た実施例である。図2から分かるように、モニタカメラ22はモニタ16の上に置かれ、ロボット12とモニタ16とは机の上に置かれる。ユーザは、机の上に置かれるモニタ16およびモニタカメラ22に対面する状態で、腹部カメラ12およびモニタカメラ22によって撮影される。さらに、ロボット10は、ユーザとモニタ16との間に配置されるため、モニタカメラ22はロボット10とユーザとを同時に撮影する。これにより、ロボット10は、ユーザAに対して疑似的な傾聴動作(疑似傾聴動作)を行ったり、ユーザBが表示されるモニタ16aに対して疑似傾聴動作を行ったりする。
なお、ロボット10は、モニタカメラ22によって撮影され、かつユーザを撮影可能な位置であれば、机の上に置かれていなくてもよい。
図3にはロボット10の外観が図示される。このロボット10は、頭部26とそれを支える胴体28とを含む。胴体28の上部(人間の肩に相当)の左右に左腕30Lおよび右腕30Rが設けられ、胴体28の腹部には腹部カメラ12が設けられる。この腹部カメラ12には、たとえばCCDやCMOSのような固体撮像素子を用いるカメラを採用することができる。また、頭部26には、前面に口32が配置され、その口32の上方には眼球34が設けられる。そして、頭部26の上部側面には耳36が取り付けられている。
頭部26は、胴体28によって旋回・俯仰可能に支持され、眼球34も稼働的に保持されている。また、胴体28は、腰の部分を中心として左右方向に傾くことが可能である。さらに、口32にはスピーカ56(図4)が内蔵され、耳36にはマイク58(図4)が内蔵される。
なお、マイク58を両方の耳36にそれぞれ内蔵すれば、ステレオマイクとして機能し、それによって、そのステレオマイクに入力された音声の位置を必要に応じて特定することができる。また、ロボット10の外見は、熊だけに限らず、他の動物や、人型であってもよい。
図4にはロボット10の電気的な構成を示すブロック図が示される。ロボット10には、マイクロコンピュータ或いはCPUとも呼ばれる、プロセッサ38が内蔵されており、通信路の一例であるバス40を介して、腹部カメラ12、メモリ42、モータ制御ボード44、音声入力/出力ボード54、センサ入力/出力ボード60およびI/O62に接続される。
メモリ42は、図示しないROMやRAMが組み込まれており、ROMには主として、ロボット10による傾聴動作や、発話を行うためのプログラムや、発話を行う際にスピーカ56から出力される音声データなどが予め記憶されている。また、RAMは一時記憶メモリとして用いられるとともに、ワーキングメモリとして利用される。
モータ制御ボード44は、たとえばDSP(Digital Signal Processor)で構成され、図3に示すロボット10の各腕や頭部の各軸モータを制御する。すなわち、モータ制御ボード44は、プロセッサ38からの制御データを受け、右腕30R(図3)を前後や左右に動かすことができるように、X,YおよびZ軸のそれぞれの角度を制御する3つのモータ(図4ではまとめて、「右腕モータ」として示す。)46Rの回転角度を調節する。また、モータ制御ボード44は、左腕30Lの3つのモータ(図4ではまとめて、「左腕モータ」として示す。)46Lの回転角度を調節する。モータ制御ボード44は、また、頭部26の旋回角や俯仰角を制御する3つのモータ(図4ではまとめて、「頭部モータ」として示す。)48の回転角度を調節する。モータ制御ボード44は、また、眼球34を動かす眼球モータ50および胴体28を傾ける腰モータ52も制御する。
なお、上述のモータは、制御を簡単化するために、それぞれステッピングモータまたはパルスモータであるが、直流モータであってもよい。
スピーカ56には音声入出力ボード54を介して、プロセッサ38から合成音声データが与えられ、それに応じて、スピーカ56からはそのデータに従った音声または声が出力される。そして、マイク58によって集音された音声は、音声入出力ボード54を介して、プロセッサ38に取り込まれる。
センサ入力/出力ボード60は、モータ制御ボード44と同様に、DSPで構成され、腹部カメラ12からの信号を取り込んで、プロセッサ38に与える。腹部カメラ12からの映像信号が、必要に応じてセンサ入力/出力ボード60で所定の処理を施してからプロセッサ38に入力される。
I/O62は、各々入力/出力の制御が可能なディジタルポートであり、出力ポートからは映像信号が出力され、PC14に与えられる。一方、PC14からは、制御信号が出力され、入力ポートに与えられる。
図5にはPC14の電気的な構成を示すブロック図が示される。PC14には、ロボット10と同様、マイクロコンピュータ或いはCPUとも呼ばれる、プロセッサ64が内蔵されており、バス66を介して、メモリ68、視線サーバ70、音声入力/出力ボード72およびI/O74に接続される。なお、プロセッサ64には、日時情報を出力するRTC(Real Time Clock)64aが内蔵されている。
メモリ68は、図示しないROM、RAMおよびHDDが組み込まれており、ROMには主として、電話機能を実現するためのプログラムや、後述のフローチャート(図13−図42)で表現されるプログラムが記憶される。また、RAMには主として、腹部カメラ12およびモニタカメラ22によって撮影された画像や、マイク20によって集音された音声などが一時的に記憶されるバッファなどが設定されている。そして、HDDには主として、ユーザの行動を判断した結果や、状態を認識した結果などが随時記憶される。
視線サーバ70は、腹部カメラ12およびモニタカメラ22によって撮影されたユーザの顔の画像から、ユーザの視線方向や位置をリアルタイムで検出する。そして、プロセッサ20は、視線サーバ70が特定または検出したユーザの視線方向や位置を示すデータを、バス66を通して刻々受け取ることで、ユーザが注視する対象を判定する。
なお、視線サーバ70によるユーザの視線方向や位置の検出方法については、本件出願人が先に出願し既に公開された、特開2008−113875号公報に開示されているので、ここでは記述を省略する。
スピーカ18には、音声入力/出力ボード72を介して、プロセッサ64から相手ユーザの音声データが与えられ、それに応じて、スピーカ18からはそのデータに従った音声が出力される。そして、マイク20によって集音された相手ユーザの音声は、音声入力/出力ボード72を介して、プロセッサ64に取り込まれる。
I/O74は、ロボット10のI/O62と同様に、各々入力/出力の制御が可能なディジタルポートであり、出力ポートからは、制御信号がロボット10に出力され、画像信号がモニタ16に出力される。また、ロボット10およびモニタカメラ22からは、映像信号が出力され、入力ポートに与えられる。なお、スピーカ18が出力する音声データおよびマイク20から入力される音声データは、I/O74を介して音声入力/出力ボード72に入出力されるようにされてもよい。
また、プロセッサ64は、バス66を介して通信LANボード76に接続される。この通信LANボード76は、たとえばDSPで構成され、プロセッサ64から与えられた送信データを無線通信装置78に与える。無線通信装置78は送信データを、ネットワーク200を介して外部のコンピュータ(サーバ24および相手のPC14)に送信する。また、通信LANボード76は、無線通信装置78を介してデータを受信し、受信したデータをプロセッサ64に与える。
たとえば、送信データとしては、テレビ電話機として必要なコマンド、画像データおよび音声データや、ユーザの行動を判定した結果およびユーザの状態を認識した結果であったりする。また、受信データとしては、テレビ電話機として得られる相手の画像データおよび音声データや、相手ユーザの行動を判定した結果および状態を認識した結果であったりする。
図6にはPC14のメモリ68に記憶される、行動テーブルが示される。この行動テーブルとは、ユーザの行動が判定された結果が行動データにされ、その行動データが一定時間(たとえば、1秒)毎に刻々と記録されるテーブルである。
図6を参照して、行動テーブルは、左側から「時刻」、「前傾姿勢」、「発話」、「頭部方向(腹部)」、「視線方向(腹部)」、「顔認識(腹部)」、「頭部方向(モニタ)」、「視線方向(モニタ)」、「顔認識(モニタ)」、「頷き」および「相槌」の列で構成されている。そして、各行動データは、「時刻」の列に同期して、各欄に記録される判定結果から構成される。
「時刻」の列に記録される数値は、RTC64aが出力する日時情報であり、たとえば「10:00:30」は「10時00分30秒」を表す。
「前傾姿勢」の列には、ユーザがモニタ16に対して前傾姿勢を取っているか否かを示す判定結果が記録される。たとえば、「前傾姿勢」の列に「あり」が記録されていればユーザがモニタ16に対して前傾姿勢を取っており、「なし」が記録されていれば、ユーザがモニタ16に対して前傾姿勢を取っていないことを示す。そして、前傾姿勢の「あり」/「なし」は、腹部カメラ12およびモニタカメラ22によって撮影された画像に対して、テンプレートマッチング処理を加えて判定される。たとえば、ユーザの姿勢が前傾視線のテンプレートと一致する場合に前傾姿勢が「あり」と判定され、テンプレートと一致しない場合に前傾姿勢が「なし」と判定される。なお、ロボット10に超音波センサなどの距離を計測可能なセンサを取りつけて、ユーザの姿勢を判定するようにしてもよい。
「発話」の列には、ユーザが発話しているか否かを示す判定結果が記録される。たとえば、「発話」の列に「あり」が記録されていれば、ユーザが発話していることを示し、「なし」が記録されていれば、ユーザが発話していないことを示す。そして、発話の「あり」/「なし」は、マイク20によって集音された音声データの音声レベルから判定される。たとえば、音声データの音声レベルが決められた値以上であれば「あり」と判定され、決められた値未満であれば「なし」と判定される。
「頭部方向(腹部)」および「頭部方向(モニタ)」の列には、ユーザの頭部が向いている方向に有る物が記録される。たとえば、「モニタ」が記録されていれば、ユーザの頭部が向く方向にはモニタ16が有ることを示し、「ロボット」が記録されていれば、ユーザの頭部が向く方向にはロボット10が有ることを示し、「アザー」が記録されていれば、ユーザの頭部が向く方向にはロボット10およびモニタ16が無いことを示す。そして、「頭部方向(腹部)」の列については、腹部モニタ12によって撮影された画像に対してテンプレートマッチング処理を加えて判定される。一方、「頭部方向(モニタ)」の列については、モニタカメラ22によって撮影された画像に対してテンプレートマッチング処理を加えて判定される。たとえば、ユーザの頭部の形がモニタ16の方向を向くテンプレートと一致していれば「モニタ」と判定され、ユーザの頭部の形がロボット10の方向を向くテンプレートと一致していれば「ロボット」と判定され、ユーザの頭部の形がいずれのテンプレートとも一致しなければ「アザー」と判定される。
「視線方向(腹部)」および「視線方向(モニタ)」の列には、ユーザの視線が向いている方向に有る物が記録される。また、「視線方向(腹部)」および「視線方向(モニタ)」の列には、「頭部方向(腹部)」の列と同様に、「モニタ」、「ロボット」および「アザー」が記録される。そして、「視線方向(腹部)」および「視線方向(モニタ)」の列における、「モニタ」、「ロボット」および「アザー」は視線サーバ70の出力に基づいて判定される。たとえば、ユーザの視線方向がモニタ16に向いていれば「モニタ」と判定され、ユーザの視線方向がロボット10に向いていれば「ロボット」と判定され、ユーザの視線方向がロボット10およびモニタ16のいずれの方向にも向いていなければ、「アザー」と判定される。
「顔認識(腹部)」および「顔認識(モニタ)」の列には、ユーザの顔の認識結果が記録される。たとえば、ユーザの顔が認識されていれば「成功」が記録され、ユーザの顔が認識されていなければ「失敗」が記録される。そして、「顔認識(腹部)」の列については、腹部モニタ12によって撮影された画像に対して顔認識処理が実施されることで判定される。一方、「顔認識(モニタ)」の列については、モニタカメラ22によって撮影された画像に対して所定の顔認識処理が実施されることで判定される。
図7(A)にはモニタカメラ22による顔認識結果の成功列が示され、図7(B)には腹部カメラ12による顔認識結果の成功例が示される。まず、図7(A)を参照して、左側が腹部カメラ12による画像であり、右側がモニタカメラ22による画像であり、どちらの画像も同じ時刻に撮影された画像である。このとき、ユーザはモニタカメラ22を注視している状態である。そのため、モニタカメラ22による画像では、ユーザの顔が正面に写っているため、顔認識が成功している。一方、腹部カメラ12による画像では、ユーザの顔は傾いて写っているため、顔認識が失敗している。
次に、図7(B)を参照して、図7(A)と同様に、左側が腹部カメラ12による画像であり、右側がモニタカメラ22による画像であり、同じ時刻に撮影された画像である。このとき、ユーザは腹部カメラ12を注視しているため、腹部カメラ12による画像では顔認識が成功している。一方、モニタカメラ22による画像では顔認識が失敗している。
図6に戻って、「頷き」の列には、ユーザによる頷きの有無が記録される。たとえば、「頷き」の列に「あり」が記録されていればユーザが頷いたことを示し、「なし」が記録されていればユーザが頷かなかったことを示す。そして、ユーザの頷きの有無は、腹部カメラ12およびモニタカメラ22によって撮影された画像に対して、所定のテンプレートマッチング処理を加えることで判定する。たとえば、ユーザの頭部の形が頷いている状態のテンプレートと一致していれば「あり」と判定され、テンプレートと一致していなければ「なし」と判定される。
「相槌」の列には、ユーザによる相槌の有無が記録される。たとえば、「相槌」の列に「あり」と記録されていればユーザが頷いたことを示し、「なし」と記録されていればユーザが頷かなかったことを示す。そして、相槌の有無については、頷きの判定結果と、音声データにおける「あー」や「うん」などの相槌らしい音を判定可能な、音声プロソディの判定結果とに基づいて判断する。たとえば、ユーザの頷きが「あり」ときに相槌らしい音があれば、相槌の判定結果は「あり」と判定される。
なお、上述したテンプレートマッチング処理および顔認識処理は、広く一般的な手法が用いられているため、詳細な説明は省略する。
そして、PC14では、これらの処理によって一定時間毎に記録された行動データから、ユーザの状態を第1所定時間(たとえば、30秒)毎に認識する。具体的には、第1所定時間毎の行動データに基づいて、Ac/Pa認識、Ta/Li認識および興味対象認識の処理を実行し、各処理の認識結果からユーザの状態を決定する。
まず、Ac/Pa認識とは、ユーザが対話に積極的に参加し、対話に集中している「アクティブ:Active(Ac)」状態か、ユーザが対話に非積極的であり、他のものに集中または注意力が散漫な「パッシブ:Passive(Pa)」状態かを認識する処理である。そのため、本実施例のAc/Pa認識では、第1所定時間分のユーザの行動データのうち、視線方向、前傾姿勢、頷きおよび相槌に基づいて、アクティブ状態らしさを示すAC値を算出することで、アクティブ状態またはパッシブ状態を認識する。
たとえば、相手を見る時間をWT、体を倒して近づく前傾姿勢の時間をAT、相槌の頻度をRFで示す場合に、相手を見る時間WTは、行動テーブルにおける「視線方向(腹部)」および「視線方向(モニタ)」の列で、第1所定時間分の行のうち、「あり」と判定された回数をカウントすることで求めることができる。また、前傾姿勢の時間FTは、「前傾姿勢」の列で、第1所定時間分の行のうち、「あり」と判定された回数をカウントすることで求めることができる。さらに、相槌の頻度RFは、「相槌」の列で「あり」と判定された回数を、「頷き」の列で「あり」と判定された回数で割ることで求めることができる。
また、算出した相手を見る時間WT、体を倒して近づく時間ATおよび相槌の頻度RFから、数1に示す式に基づいてAC値を算出する。
[数1]
C1×WT+C2×FT+C3×RF=AC値
C1,C2,C3:定数
そして、このように算出されたAC値を閾値Aに基づいて判断することで、アクティブ状態またはパッシブ状態を認識することができる。つまり、数1に示す式で算出されたAC値が閾値Aより大きければアクティブ状態と認識され、AC値が閾値以下であればパッシブ状態と認識される。なお、定数C1,C2およびC3の値を変化させることで、各パラメータに重みを付けることができる。
次に、Ta/Li認識とは、ユーザが話し手となり発話している「トーク:Talk(Ta)」状態(話手側状態)であるか、相手ユーザの話を傾聴している「リッスン:Listen(Li)」状態(聴取側状態)であるかを認識する処理である。そのため、Ta/Li認識では、第1所定時間分のユーザの行動のうち、ユーザの発話に基づいて認識する。この実施例では、ユーザの発声時間を発話量とし、この発話量が閾値Tに基づいて、トーク状態またはリッスン状態を認識する。
たとえば、発話量をTaとする場合に、発話量Taは、行動テーブルにおける「発話」の列で、第1所定時間分の行のうち、「あり」と判定された回数をカウントすることで求めることができる。そして、このように算出された発話量Taを閾値Tと比較することで、トーク状態またはパッシブ状態を認識することができる。つまり、発話量Taが閾値Tより大きければトーク状態と認識され、発話量Taが閾値T以下であれば、リッスン状態と認識される。
そして、興味対象認識とは、ユーザの興味が「ロボット」、「モニタ」および「アザー」のいずれであるかを認識する処理である。そのため、興味対象認識では、第2所定時間(たとえば、10秒)分のユーザの行動データのうち、ユーザの顔認識および視線方向に基づいて、モニタカメラ22側の顔の認識率Mと、腹部カメラ12側の顔の認識率Sとを算出することで、ユーザの興味が有る物を認識する。
たとえば、認識率Mは、行動テーブルにおける「顔認識(モニタ)」および「視線方向(モニタ)」の列で、第1所定時間分の行のうち、「成功」および「モニタ」と判定された回数をカウントすることで求めることができる。一方、認識率Sは、行動テーブルにおける「顔認識(腹部)」および「視線方向」の列で、「成功」および「ロボット」と判定された回数をカウントすることで求めることができる。そして、このように算出された認識率Mおよび認識率Sと閾値Inとを比較することでユーザの興味対象を認識することができる。つまり、認識率Mおよび認識率Sが共に閾値In以下であれば、興味対象が「アザー」と認識される。また、認識率Mおよび認識率Sが共に閾値Inより大きく、かつ認識率Mが認識率Sより大きければ、興味対象が「モニタ」と認識され、認識率Sが認識率Mより大きければ、興味対象が「ロボット」と認識される。
なお、認識率Sおよび認識率Mは、顔認識の結果だけで求められてもよい。また、顔認識の結果が百分率で示される場合には、1秒毎の認識結果の総積を認識率としてもよい。さらに、興味対象認識では、認識率の代わりに、前傾姿勢の時間割合と視線方向の時間割合と頭部方向の時間割合とから求められる数値に基づいて認識されてもよい。そして、第1所定時間と第2所定時間とは同じ長さであってもよい。
このようにして、Ac/Pa認識、Ta/Li認識および興味対象認識の処理が行われた後に、ユーザの状態は各認識結果を組み合わせることで決定する。具体的なユーザの状態としては、ユーザの興味対象がモニタ16である「アクティブ・トーク・モニタ」、「アクティブ・リッスン・モニタ」、「パッシブ・トーク・モニタ」および「パッシブ・リッスン・モニタ」の4種類と、ユーザの興味対象がロボット10である「アクティブ・トーク・ロボット」、「アクティブ・リッスン・ロボット」、「パッシブ・トーク・ロボット」、「パッシブ・リッスン・ロボット」の4種類と、ユーザの興味対象がロボット10でもモニタ16でもない「アクティブ・トーク・アザー」、「アクティブ・リッスン・アザー」、「パッシブ・トーク・アザー」および「パッシブ・リッスン・アザー」の4種類とから成る、合計12種類である。
ここで、一定時間が1秒、第1所定時間を30秒とした場合に、「アクティブ・トーク・モニタ」、「アクティブ・リッスン・モニタ」、「パッシブ・トーク・モニタ」および「パッシブ・リッスン・モニタ」と認識されるユーザの状態の一例について説明する。なお、「ロボット」および「アザー」におけるユーザの状態については、ユーザの興味対象が異なるだけで「モニタ」の場合と同じであるため、詳細な説明は省略する。
まず、ユーザの興味対象が「モニタ」と認識されている状態で、発話の継続時間が15秒(50%)以上であり、視線方向の判定において「モニタ」が30回のうち18回(60%)以上判定され、さらに頷きが2回以上あれば「アクティブ・トーク・モニタ」と認識される。
次に、ユーザの興味対象が「モニタ」と認識されている状態で、発話の継続時間が9秒(30%)以下であり、視線方向の判定において「モニタ」が30回のうち15回(50%)以上判定され、さらに前傾姿勢の判定において「あり」が30回のうち21回(70%)以上判定されていれば、「アクティブ・リッスン・モニタ」と認識される。
次に、ユーザの興味対象が「モニタ」と認識されている状態で、発話の継続時間が12秒(40%)以下であり、視線方向の判定において「モニタ」が30回のうち6回(20%)以上判定され、さらに頷きが一度のなければ、「パッシブ・トーク・モニタ」と認識される。
そして、ユーザの興味対象が「モニタ」と認識されている状態で、発話の継続時間が9秒(30%)以下であり、頷きが一度も無く、さらに前傾姿勢の判定において「あり」が30回のうち6回(20%)以下であれば、「パッシブ・リッスン・モニタ」と認識される。
なお、このようにして認識されたユーザの状態は、状態データ354(図10)としてメモリ64に記憶されると共に、サーバ24に送信される。また、ユーザの状態の認識には、SVM(Support Vector Machine)が利用されてもよい。
図8にはサーバ24の電気的な構成を示すブロック図が示される。サーバ24は、プロセッサ38,64と同様に、マイクロコンピュータ或いはCPUとも呼ばれる、プロセッサ80が内蔵されている。また、プロセッサ80は、バス82を介して、メモリ84、第1ロボット情報DB86、第2ロボット情報DB88および通信LANボード90に接続されている。
メモリ84は、図示しないROMやRAMが組み込まれており、ROMには主として、サーバ24とPC14a,14bなどとのデータ通信を行うためのプログラムなどが予め記憶されている。また、RAMは、一時記憶メモリとして用いられるとともに、ワーキングメモリとして利用される。
第1ロボット情報DB86は、PC14aから送信されるユーザAの行動データおよび状態データを蓄積するためのデータベースである。また、第2ロボットDB88は、PC14bから送信されるユーザBの行動データおよび状態データを蓄積するためのデータベースである。そして、第1ロボット情報DB86および第2ロボット情報DB88は、HDDやSSDのような記憶媒体を用いて構成される。
通信LANボード90は、PC14の通信LANボード76と同様に、たとえばDSPで構成され、プロセッサ80から与えられた送信データを無線通信装置92に与える。無線通信装置92は送信データを、ネットワーク200を介して外部のコンピュータ(PC14a,14b)に送信する。また、通信LANボード90は、無線通信装置92を介してデータを受信し、受信データをプロセッサ80に与える。
たとえば、受信データはPC14aから送信されるユーザAの行動データであり、プロセッサ80はユーザAの行動データを第1ロボット情報DB86に保存する。さらに、受信データとして、PC14bからユーザAの行動データ取得要求がプロセッサ80に与えられると、プロセッサ80は、ユーザAの行動データを送信データとして、通信LANボード90に与える。
ここで、本願発明の傾聴対話持続システムでは、ユーザの行動データおよび状態データや、相手ユーザの行動データや状態データに基づいて、2人の対話が持続するように、ロボット10の動作を制御する。そして、ロボット10は、ユーザAとユーザBとの対話に対して、「疑似傾聴動作」、「発話制御動作」および「注意の引きつけの動作」の3種類の動作を行い、対話を持続させる。
また、疑似傾聴動作とは、ユーザAとユーザBとが積極的に対話している場合には、どちらか一方の発話を傾聴しているかのように振る舞う動作のことである。さらに、発話制御動作とは、どちらかのユーザが一方的に話している場合に、2人の発話のバランスを取るため、ユーザを見ることで発話を抑制したり、ユーザに話しかけたりすることで発話を促進したりする動作のことである。そして、注意の誘導や引きつけの動作は、ユーザが対話に対して集中していない場合に、ユーザに話しかけることでユーザの注意を引きつける動作の事である。なお、具体的なロボット10の動作については、図27−図41に示すフローチャートを用いて説明する。
図9は、図5に示すPC14におけるメモリ68のメモリマップ300の一例を示す図解図である。図9に示すようにメモリ68はプログラム記憶領域302およびデータ記憶領域304を含む。プログラム記憶領域302には、PC14を動作させるためのプログラムとして、データ通信プログラム312、状況認識プログラム314、ロボット制御プログラム316、カメラ制御プログラム318、発声時間計測プログラム320および乱数生成プログラム322などが記憶される。
データ通信プログラム312は、サーバ24とデータ通信を行うためのプログラムである。状況認識プログラム314は、ユーザの行動を判定し、状態を認識するためのプログラムである。ロボット制御プログラム316は、ロボット10の動作を決定するためのプログラムである。カメラ制御プログラム318は、相手に送信するカメラ画像を決定するためのプログラムである。発声時間計測プログラム320は、ユーザAおよびユーザBの発声時間を計測するためのプログラムである。乱数生成プログラム322は、ロボット10の動作をランダムに決定する際に実行される処理である。
なお、図示は省略するが、PC14を動作させるためのプログラムとしては、テレビで話機能を実現するためのプログラムなどを含む。
また、図10を参照して、データ記憶領域304には、時刻バッファ330、モニタカメラバッファ332、腹部カメラバッファ334、音声バッファ336、判定結果バッファ338、顔認識結果バッファ340、興味対象認識結果バッファ342、データ通信バッファ344、相手行動データバッファ346、状態データバッファ348および乱数バッファ350が設けられる。さらに、データ記憶領域304には、行動テーブルデータ352および状態データ354が記憶されるとともに、Ac/Paフラグ356、Ta/Liフラグ358、状態カウンタ360および発声カウンタ362がさらに設けられる。
時刻バッファ330は、RTC64aが出力する日時情報が一時的に記憶されるバッファである。モニタカメラバッファ332は、モニタカメラ22によって撮影された画像が一時的に記憶されるバッファである。腹部カメラバッファ334は、腹部カメラ12によって撮影された画像が一時的に記憶されるバッファである。音声バッファ336は、マイク20によって集音された音声が一時的に記憶されるバッファである。
判定結果バッファ338は、ユーザの前傾姿勢の有無を判定する姿勢判定、ユーザの発話の有無を判定する発話判定、ユーザの頭部方向を判定する頭部方向判定、ユーザの視線方向を判定する視線方向判定、ユーザの頷きを判定する頷き判定およびユーザの相槌を判定する相槌判定の各判定結果を一時的に記憶するためのバッファである。顔認識結果バッファ340は、モニタカメラ22および腹部カメラ12によって撮影された画像に対して行われる顔認識の結果が一時的に記憶されるバッファである。興味対象認識結果バッファ342は、ユーザが興味を持っていると判定された結果が一時的に記憶されるバッファであり、たとえば「ロボット」、「モニタ」および「アザー」を示すデータが一時的に記憶される。
データ通信バッファ344は、サーバ24とのデータ通信によって得られた相手の行動データや、状態データなどが一時的に記憶されるバッファである。相手動作データバッファ346は、相手の行動データを一時的に記憶するためのバッファである。状態データバッファ348は、相手の状態データや、こちら側のユーザの状態データを一時的に記憶するためのバッファである。乱数データバッファ350は、乱数生成プログラム322によって生成された乱数が一時的に記憶されるバッファである。
行動テーブルデータ352は、図6に示す行動テーブルであり、一定時間毎に最新の行動データが追記される。状態データ354は、第1所定時間分の行動データから認識されるユーザの状態を示すデータであり、たとえば「アクティブ・トーク・ロボット」を示す文字列で構成される。
Ac/Paフラグ356は、Ac/Pa認識結果を示すフラグである。たとえばAc/Paフラグ356は1ビットのレジスタで構成される。Ac/Paフラグ356がオン(成立)されると、レジスタにはデータ値「1」が設定される。一方、Ac/Paフラグ356がオフ(不成立)されると、レジスタにはデータ値「0」が設定される。また、Ac/Paフラグ356は、アクティブ状態と認識されるとオンになり、パッシブ状態と認識されるとオフになる。Ta/Liフラグ358は、Ta/Li認識結果を示すフラグである。つまり、Ta/Liフラグ358はトーク状態と認識されるとオンになり、リッスン状態と認識されるとオフになる。なお、Ta/Liフラグ358の構成については、Ac/Paフラグ356と同様であるため、詳細な説明は省略する。
状態カウンタ360は、ユーザの状態を認識する際に、第1所定時間分の行動データを取得するために用いられるカウンタである。たとえば、状態カウンタ360は、PC14の電源がオンにされるとカウントされ始め、第1所定時間分の行動データが取得される毎にリセットされる。発声カウンタ362は、発声時間計測プログラム320によって計測される発声時間をカウントするためのカウンタである。
なお、図示は省略するが、データ記憶領域304には、各判定に利用されるテンプレートのデータや、様々な計算の結果を一時的に格納するバッファなどが設けられると共に、PC14の動作に必要な他のカウンタやフラグなども設けられる。
図11には状況認識プログラム314を構成するプログラムが示される。図11を参照して、状況認識プログラム314は、画像/音声取得プログラム314a、視線判定プログラム314b、発話判定プログラム314c、頭部方向判定プログラム314d、視線方向判定プログラム314e、顔認識プログラム314f、頷き判定プログラム314g、相槌判定プログラム314h、同期プログラム314j、状態認識プログラム314k、Ac/Pa認識プログラム314m、Ta/Li認識プログラム314nおよび興味対象認識プログラム314pから構成される。
画像/音声取得プログラム314aは、モニタカメラ22および腹部カメラ12によって撮影された画像と、マイク20によって集音された音声とを、バッファに取り込むためのプログラムである。姿勢判定プログラム314bは、ユーザの姿勢が前傾姿勢であるか否かを判定するためのプログラムである。発話判定プログラム314cは、ユーザが発話しているか否かを判定するためのプログラムである。頭部方向判定プログラム314dは、ユーザの頭部方向を判定するためのプログラムである。視線方向判定プログラム314eは、ユーザの視線方向を判定するためのプログラムである。顔認識プログラム314fは、モニタカメラ22および腹部カメラ12によって撮影された画像における顔領域を認識するためのプログラムである。頷き判定プログラム314gは、ユーザが頷いたか否かを判定するためのプログラムである。相槌判定プログラム314hは、ユーザが相槌をしたか否かを判定するためのプログラムである。同期プログラム314jは、姿勢判定結果、発話判定結果、頭部方向判定結果、視線方向判定結果、顔認識結果、頷き判定結果および相槌判定結果を同期して、行動データとするためのプログラムである。
状態認識プログラム314kは、ユーザの状態を第1所定時間毎に認識するためのプログラムである。Ac/Pa認識プログラム314mは、ユーザがアクティブ状態かパッシブ状態かを認識するためのプログラムである。Ta/Li認識プログラム314nは、ユーザがトーク状態かリッスン状態かを認識するためのプログラムである。興味対象認識プログラム314pは、ユーザの興味対対象を認識するためのプログラムである。
図12にはロボット制御プログラム316を構成するプログラムが示される。図12を参照して、全体プログラム316a、アクティブトークプログラム316b、アクティブリッスンプログラム316c、非アクティブプログラム316d、アザープログラム316e、発話継続プログラム316f、発話抑制プログラム316g、発話促進プログラム316h、注意引きつけプログラム316j、傍参与者的疑似傾聴プログラム316k、第1積極的疑似傾聴プログラム316m、ユーザ発話抑制プログラム316m、第2積極的疑似傾聴プログラム316p、注意誘導プログラム316qおよびユーザ発話促進プログラム316rから構成される。
全体プログラム316aは、メインルーチンとも呼ばれ、状態データに応じて、対話が持続するようにロボット10を制御するための全体的な処理を行うプログラムである。アクティブトークプログラム316bは、状態データが「アクティブ・トーク・ロボット」である場合に実行されるプログラムである。アクティブリッスンプログラム316cは、状態データが「アクティブ・リッスン・ロボット」である場合に実行されるプログラムである。非アクティブプログラム316dは、ユーザがパッシブ状態であるか、興味対象が「ロボット」と認識されている場合に実行されるプログラムである。アザープログラム316eは、ユーザの興味対象が「アザー」である場合に実行されるプログラムである。
発話継続プログラム316fは、2人のユーザの対話が継続されるようにロボット10を動作させるためのプログラムである。発話抑制プログラム316gは、ユーザが一方的に発話している場合に発話を抑制するようにロボット10を動作させるためのプログラムである。発話促進プログラム316hは、ユーザが発話をせずに、相手ユーザの発話を一方的に傾聴している場合に、発話を促すようロボット10を動作させるログラムである。注意引きつけプログラム316jは、対話に興味を失っているユーザの注意を引けつけるようにロボット10動作させるためのプログラムである。
傍参与者的疑似傾聴プログラム316kは、2人のユーザの対話が継続している場合に、どちらか一方のユーザの話を傾聴しているかのように、ロボット10を動作させるためのプログラムである。なお、「傍参与者」とは、会話に参加しているが「話し手」でも「聴き手」でもない人物を示す。
第1積極的疑似傾聴プログラム316mは、相手ユーザの話を傾聴しているかのように、ロボット10を動作させるためのプログラムである。ユーザ発話抑制プログラム316nは、たとえばロボット10aの傍に居るユーザAの発話を抑制するように、ロボット10aを動作させるためのプログラムである。第2積極的疑似傾聴プログラム316pは、たとえばロボット10aの傍に居るユーザAの発話を傾聴しているかのように、ロボット10aを動作させるためのプログラムである。注意誘導プログラム316qは、ユーザの注意を誘導するように、ロボット10を動作させるためのプログラムである。ユーザ発話促進プログラム316rは、たとえばロボット10aの傍に居るユーザAの発話を促すように、ロボット10を動作させるためのプログラムである。
以下、PC14によって実行される本願発明のフロー図について説明する。また、図13−図25のフロー図は状況認識プログラム314を構成する各プログラムの処理を示し、図26は発声時間計測プログラム320による処理を示し、図27−図41はロボット制御プログラム316を構成する各プログラムの処理を示し、図42はカメラ制御プログラム318による処理を示す。
図13には画像/音声取得プログラム314aの処理を示すフロー図が示される。たとえば、PC14のプロセッサ64は、ユーザによってPC14の電源がオンにされると、ステップS1で腹部カメラ12による画像データを取得する。つまり、ロボット10から入力される映像信号から画像データを取得し、腹部カメラバッファ334に一旦記憶させる。続いて、ステップS3では、モニタカメラ22による画像データを取得する。つまり、モニタカメラ22から入力される映像信号から画像データを取得し、モニタカメラバッファ332に一旦記憶させる。続いて、ステップS5では、音声データを取得し、ステップS1に戻る。つまり、マイク20によって集音された音声から音声データを抽出し、音声バッファ336に一旦記憶させる。なお、ステップS1−S5の処理は、約1秒毎に繰り返される。
図14には姿勢判定プログラム314bの処理を示すフロー図が示される。プロセッサ64は、ステップS7で画像データを取得したか否かを判断する。つまり、モニタカメラバッファ332および腹部カメラバッファ334に新たな画像データが記憶されたか否かを判断する。ステップS7で“NO”であれば、つまり画像データが取得されていなければステップS7の処理を繰り返し実行する。一方、ステップS7で“YES”であれば、つまり画像データが取得されていれば、ステップS9でユーザの姿勢を判定する。たとえば、モニタカメラバッファ332および腹部カメラバッファ334に記憶される画像データに対してユーザの前傾姿勢の有無を判定する。そして、どちらの画像でも前傾姿勢が「あり」と判定された場合に、姿勢判定結果を「あり」とする。なお、ステップS9の処理を実行するプロセッサ64は姿勢判定手段として機能する。
続いて、ステップS11では、現在時刻を取得する。つまり、時刻バッファ330に記憶される日時情報を取得する。続いて、ステップS13では、姿勢の判定結果に現在時刻を対応付ける。つまり、複数の判定結果を同期させるために、現在時刻を対応付ける。そして、現在時刻が対応付けられた姿勢の判定結果は判定結果バッファ338に一時的に記憶される。
なお、他の実施例では、モニタカメラ22または腹部カメラ12のどちらか一方の画像だけで姿勢判定を行ってもよい。また、図15−図20に示す他の判定処理でも、ステップS11と同様に日時情報を取得し、ステップS13と同様に日時情報を対応付ける処理が存在するが、処理内容は全て同じであるため、他のフロー図では詳細な説明は省略する。
図15には発話判定プログラム314cの処理を示すフロー図が示される。プロセッサ64は、ステップS15で音声データを取得したか否かを判断する。つまり、音声バッファ336に新たな音声データが記憶されたか否かを判断する。ステップS15で“NO”であれば、つまり音声データが取得されていなければステップS15の処理を繰り返し実行する。一方、ステップS15で“YES”であれば、つまり音声データが取得されていればステップS17でユーザの発話を判定する。たとえば、音声バッファ336に記憶される音声データの音声レベルが一定値以上であるか否かを判定する。ステップS19では現在時刻を取得し、ステップS21では発話の判定結果に現在時刻を対応付ける。そして、ステップS19の処理が終了するとステップS15に戻る。なお、ステップS19では、現在時刻が対応付けられた発話の判定結果は、判定結果バッファ338に一旦記憶される。なお、ステップS17の処理を実行するプロセッサ64は発話判定手段として機能する。
図16には頭部方向判定プログラム314dの処理を示すフロー図が示される。プロセッサ64は、ステップS23で画像データを取得したか否かを判断する。つまり、モニタカメラバッファ332および腹部カメラバッファ334に新たな画像データが記憶されたか否かを判断する。ステップS23で“NO”であれば、つまり画像データが新たに取得されていなければステップS23の処理を繰り返す。一方、ステップS23で“YES”であれば、つまり新たな画像データが取得されていればステップS25でユーザの頭部方向を判定する。たとえば、モニタカメラバッファ332に記憶される画像に対してテンプレートマッチング処理を実行することで、「モニタ」、「ロボット」および「アザー」を判定する。さらに、腹部カメラバッファ334に記憶される画像に対しても同様に判定する。なお、ステップS25の処理を実行するプロセッサ64は頭部方向判定手段として機能する。
続いて、ステップS27では現在時刻を取得し、ステップS29では頭部方向の判定結果に現在時刻を対応付ける。そして、ステップS29の処理が終了するとステップS23に戻る。なお、ステップS29では、モニタカメラ22によって撮影された画像の頭部方向の判定結果と、腹部カメラ12によって撮影された画像の頭部方向の判定結果とをそれぞれ判定結果バッファ338に記憶させる。
図17には視線方向判定結果プログラム314eの処理を示すフロー図が示される。プロセッサ64は、ステップS31で画像データを取得したか否かを判断する。つまり、モニタカメラバッファ332および腹部カメラバッファ334に新しい画像が記憶されたか否かを判断する。ステップ31で“NO”であれば、つまり新しい画像データが取得されていなければステップS31の処理を繰り返し実行する。一方、ステップS31で“YES”であれば、つまり画像データが取得されれば、ステップS33でユーザの視線方向を判定する。たとえば、ステップS33では、まず視線サーバ70にモニタカメラバッファ332に記憶される画像データを入力することで、ユーザの視線方向を特定する。次に、視線サーバ70によって特定された視線方向に基づいて「モニタ」、「ロボット」および「アザー」を判定する。そして、腹部カメラバッファ334に記憶される画像に対しても、同様の判定を行う。なお、ステップS33の処理を実行するプロセッサ64は視線方向判定手段として機能する。
続いて、ステップS35では現在時刻を取得し、ステップS37で視線方向の判定結果に現在時刻を対応付ける。そして、ステップS37の処理が終了すれば、ステップS31に戻る。なお、ステップS37の処理では、ステップS29(図16)と同様に、モニタカメラ22によって撮影された画像の視線方向の判定結果と、腹部カメラ12によって撮影された画像の視線方向の判定結果とをそれぞれ判定結果バッファ338に記憶させる。
図18には顔認識処理プログラム314fの処理を示すフロー図が示される。プロセッサ64は、ステップS39で画像データを取得したか否かを判断する。つまり、モニタカメラバッファ332および腹部カメラバッファ334に新しい画像が記憶され、更新されたか否かを判断する。ステップS39で“NO”であれば、つまり画像データが取得されていなければ、ステップS39の処理を繰り返す。一方、ステップS39で“YES”であれば、つまり画像データが取得されれば、ステップS41でユーザの顔を認識する。たとえば、モニタカメラバッファ332に記憶される画像データに対して所定の顔認識処理を加えることで、顔領域を認識できたか否かを判断する。そして、認識できた場合には顔認識結果を「成功」と判定し、認識できなかった場合には顔認識結果を「失敗」と判定する。そして、腹部カメラバッファ334に記憶される画像データに対しても同様の判定を行う。なお、ステップS41の処理を実行するプロセッサ64は顔認識手段として機能する。
続いて、ステップS43では現在時刻を取得し、ステップS45では顔認識結果に現在時刻を対応付ける。そして、ステップS45の処理が終了すれば、ステップS39に戻る。また、ステップS39の処理では、現在時刻が対応付けられた各認識結果を顔認識結果バッファ340に一旦記憶させる。
図19には頷き判定プログラム314gの処理を示すフロー図が示される。プロセッサ64は、ステップS47で画像データを取得したか否かを判断する。つまり、モニタカメラバッファ332および腹部カメラバッファ334が更新されたか否かを判断する。ステップS47で“NO”であれば、つまり画像データが取得されていなければ、ステップS47を繰り返す。一方、ステップS47で“YES”であれば、つまり画像データが取得されれば、ステップS49でユーザの頷きを判定する。たとえば、モニタカメラバッファ332および腹部カメラバッファ334に記憶される画像データに対して、テンプレートマッチング処理を加えて、ユーザの頷きの有無をそれぞれ判定する。そして、2つの判定結果で頷きが「あり」と判定される場合に、ユーザの頷きが「あり」と判定される。なお、ステップS49の処理を実行するプロセッサ64は頷き判定手段として機能する。
続いて、ステップS51で現在時刻を取得し、ステップS53で頷きの判定結果に現在時刻を対応付ける。そして、ステップS53の処理が終了すれば、ステップS47に戻る。また、日時情報が対応付けられた頷きの判定結果は、判定結果バッファ338に記憶される。
図20には相槌判定プログラム314hの処理を示すフロー図が示される。プロセッサ64は、ステップS55で頷き判定が終了したか否かを判断する。たとえば、頷きの判定結果が判定結果バッファ338に記憶されているか否かを判断する。ステップS55で“NO”であれば、つまり頷き判定が終了していなければ、ステップS55の処理を繰り返す。一方、ステップS55で“YES”であれば、つまり頷き判定が終了していれば、ステップS57で発話判定が終了したか否かを判断する。たとえば、発話の判定結果が判定結果バッファ338に記憶されているか否かを判断する。ステップS57で“NO”であれば、つまり発話判定が終了していなければステップS55に戻る。一方、ステップS57で“YES”であれば、つまり発話判定が終了していれば、ステップS59で日時情報に基づいてユーザの相槌を判定する。たとえば、発話判定結果と頷き判定結果とに対応付けられている日時情報に基づいて、それぞれを同期する。そして、頷きの判定結果が「あり」である場合に、音声バッファに記憶される音声データに対して、上記した音声プロソディを判定することで、相槌の判定をする。なお、ステップS59の処理を実行するプロセッサ64は相槌判定手段として機能する。
続いて、ステップS61では、相槌の判定結果に時刻を対応付けて、ステップS55に戻る。つまり、ステップS61では、発話または頷きの判定結果に対応付けられている日時情報を、相槌の判定結果に対応付ける。そして、時刻が対応付けられた相槌の判定結果は、判定結果バッファ340に記憶される。
図21には同期プログラム314jの処理を示すフロー図が示される。プロセッサ64は、ステップS63で各判定が終了したか否かを判断する。たとえば、判定結果バッファ338に姿勢、発話、頭部方向、視線方向、頷きおよび相槌の判定結果が記憶され、かつ顔認識結果バッファ340に顔認識結果が記憶されているか否かを判定する。ステップS63で“NO”であれば、つまり各判定が終了していなければ、ステップS63の処理を繰り返し実行する。一方、ステップS63で“YES”であれば、つまり各判定が終了していれば、ステップS65で各判定結果および顔認識結果を時刻に基づいて同期する。つまり、各判定結果および顔認識結果に対応付けられた時刻に基づいて同期する。
続いて、ステップS67では、同期した各判定結果を行動データとし、行動テーブルに記録する。つまり、図6に示す行動テーブルにおいて、新たな行に各判定結果および顔認識結果を記録する。続いて、ステップS69では、現在の行動データをサーバ24に送信する。そして、ステップS69の処理が終了すればステップS63に戻る。つまり、ステップS69では、行動テーブルにおいて、新たに追加された行に対応する行動データをサーバ24に送信する。
このように、図13−図21の処理が一定時間毎に並列的に実行されることで、ユーザの行動データが判定されるとともに、サーバ24に送信される。そして、ユーザの行動データに複数の判定結果が含まれるため、ユーザの状態が適確に認識される。
なお、ステップS65,S67の処理を実行するプロセッサ64は判定手段として機能する。また、ステップS69の処理を実行するプロセッサ64は送信手段として機能する。
図22には状態認識プログラム314kの処理を示すフロー図が示される。たとえば、PC14のプロセッサ64は、ユーザによってPC14の電源がオンにされると、ステップS71で第1所定時間が経過したか否かを判断する。たとえば、状態カウンタ360の値が第1所定時間を示す値と超えたか否かを判断する。ステップS71で“NO”であれば、つまり第1所定時間が経過していなければ、ステップS71の処理を繰り返し実行する。一方、ステップS71で“YES”であれば、つまり第1所定時間が経過してれば、ステップS73で第1所定時間分の行動データを取得する。つまり、行動テーブルから、現在時刻から第1所定時間前までの行動データを取得する。なお、ステップS73の処理が終了すると、状態カウンタ360はリセットされる。
続いて、ステップS75ではAc/Pa認識処理を実行し、ステップS77ではTa/Li認識処理を実行し、ステップS79では興味対象認識処理を実行する。なお、ステップS75,S77およびS79の処理については、図23、図24および図25に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
続いて、ステップS81では、各認識結果を状態データ354として記憶する。たとえば、Ac/Pa認識結果がアクティブ状態であり、Ta/Li認識結果がトークであり、興味対象認識結果が「ロボット」であれば、状態データ354は、「アクティブ・トーク・ロボット」としてメモリ68に記憶される。続いて、ステップS83では、状態データ354をサーバ24に送信し、ステップS71に戻る。
なお、ステップS75の処理を実行するプロセッサ64は積極性認識手段として機能し、ステップS77の処理を実行するプロセッサ64は話者状態認識手段として機能し、ステップS79の処理を実行するプロセッサ64は興味対象認識手段として機能する。そして、ステップS75−81の処理を実行するプロセッサ64は認識手段として機能する。
図23にはAc/Pa認識プログラム314mの処理を示すフロー図が示される。プロセッサ64はステップS91で相手を見る時間WTを算出し、ステップS93では前傾姿勢の時間FTを算出し、ステップS95では相槌の頻度RFを算出する。つまり、ステップS91,S93およびS95では、上位ルーチンのステップS73で取得された行動データに基づいて、相手を見る時間WT、前傾姿勢の時間FTおよび相槌の頻度RFを算出する。そして、ステップS97では、各算出結果からAC値を算出する。つまり、上述の数1に示す式に基づいてAC値を算出する。続いて、ステップS99では、算出したAC値が閾値Aより大きいか否かを判断する。
ステップS99で“YES”であれば、つまりAC値が閾値Aよりも大きければ、ステップS101でアクティブ状態に設定する。つまり、Ac/Paフラグ356をオンに設定する。一方、ステップS99で“NO”であれば、つまりAC値が閾値A以下であれば、ステップS103でパッシブ状態に設定する。つまり、Ac/Paフラグ356をオフに設定する。なお、ステップS101またはステップS103の処理が終了すれば、Ac/Pa認識処理を終了して状態認識処理に戻る。
図24にはTa/Li認識プログラム314nの処理を示すフロー図が示される。プロセッサ64はステップS111で第1所定時間分の発話判定結果から発話量Taを算出する。つまり、上位ルーチンのステップS73で取得された行動データに基づいて、発話量Taを算出する。続いて、ステップS113では算出された発話量Taが閾値Tよりも大きいか否かを判断する。ステップS113で“YES”であれば、つまり発話量Taが閾値Tよりも大きければ、ステップS115でトーク状態に設定する。つまり、ステップS115ではTa/Liフラグ358をオンにする。一方、ステップS113で“NO”であれば、つまり発話量Taが閾値Ta以下であれば、ステップS117でリッスン状態に設定する。つまり、ステップS117ではTa/Liフラグ358をオフにする。
そして、ステップS115またはステップS117の処理が終了すれば、Ta/Li認識処理を終了して、状態認識処理に戻る。
図25には興味対象認識プログラム314pの処理を示すフロー図が示される。プロセッサ64はステップS121で第2所定時間分の行動データを取得する。つまり、上位ルーチンである、ステップS73で取得された行動データから、第2所定時間分の行動データを取得する。続いて、ステップS123では、モニタカメラ123の顔認識結果および視線判定結果から認識率Mを算出し、ステップS125では、腹部カメラ12の顔認識の結果および視線判定結果から認識率Sを算出する。つまり、ステップS123,S125では、ステップS121で取得した第2所定時間分の行動データに基づいて、認識率Mおよび認識率Sを算出する。なお、ステップS123の処理を実行するプロセッサ64は第1認識率算出手段として機能し、ステップS125の処理を実行するプロセッサ64は第2認識率算出手段として機能する。
続いて、ステップS127では、各認識率は閾値Inより大きいか否かを判断する。つまり、認識率Mおよび認識率Sが閾値Inより大きいか否かを判断する。ステップS127で“NO”であれば、つまり認識率Mおよび認識率Sが共に閾値In以下であれば、ステップS135に進む。ステップS127で“YES”であれば、つまり認識率Mおよび認識率Sが閾値Inより大きければ、ステップS129で、認識率Mが認識率Sよりも大きいか否かを判断する。
ステップS129で“YES”であれば、つまり認識率Mが認識率Sよりも大きければ、ステップS131でモニタ状態に設定する。つまり、ユーザの興味対象がモニタ16であるため、興味対象結果バッファ342に「モニタ」を示すデータを一時記憶させる。一方、ステップS129で“NO”であれば、つまり認識率Mが認識率S以下であれば、ステップS133でロボット状態に設定する。つまり、ユーザの認識対象がロボット12であるため、興味対象認識結果バッファ342に「ロボット」を示すデータを一時的に記憶させる。そして、認識率Mおよび認識率Sが閾値In以下である場合、ステップS135でアザー状態に設定する。つまり、ステップS135では、ユーザの興味対象がロボット12およびモニタ16ではないため、興味対象認識結果バッファ342に「アザー」を示すデータを一時的に記憶させる。
なお、ステップS131,S133およびステップS135の処理が終了すれば、興味対象認識処理を終了して、状態認識処理に戻る。また、本実施例では、興味対象がユーザの顔の認識率M,Sに基づいて設定されるため、ユーザが見る対象を正確に認識することができる。
また、ステップS131,S133およびS135の処理を実行するプロセッサ64は設定手段として機能する。
このように、図22−図25に示す処理が実行されることで、ユーザの状態データがメモリ68に記憶されるとともに、サーバ24に送信される。また、他の実施例ではAc/Pa認識処理、Ta/Li認識処理および興味対象認識処理が並列的に処理されてもよく、この場合は、興味対象認識処理に限り、行動データを第2所定時間毎に取得することで、ユーザの興味対象を認識する。
図26には発声時間計測プログラム320の処理を示すフロー図が示される。プロセッサ20はステップS141で音声レベルが所定値以上か否かを判断する。たとえば、マイク20によって集音された音声の音声レベルが、人間の発話と判断できる所定値以上であるか否かを判断する。ステップS141で“NO”であれば、つまり音声レベルが所定値未満であれば、ステップS141の処理を繰り返す。一方、ステップS141で“YES”であれば、つまり音声レベルが所定値以上であれば、ステップS143で発声カウンタ362をインクリメントする。つまり、ステップS143では発声時間をカウントするために、発声カウンタ362をインクリメントする。なお、ステップS141−S145の処理を実行するプロセッサ64は計測手段として機能する。
続いて、ステップS145では、音声レベルが所定値未満になったか否かを判断する。たとえば、マイク20によって集音された音声の音声レベルが所定値未満になったか否かを判断する。つまり、ステップS145で“NO”であれば、つまり音声レベルが所定値以上であれば、ステップS143に戻る。一方、ステップS145で“YES”であれば、つまり音声レベルが所定値未満であれば、ステップS147で発声カウンタ362を初期化し、ステップS141に戻る。つまり、ユーザの発話が終了したため、発声時間を計測する発声カウンタ362を初期化する。
なお、ステップS141およびステップS145では、マイク20に入力される音声の音声レベルだけに限らず、スピーカ18から出力される音声の音声レベルに基づいて判断する。これにより、相手ユーザの発声時間を計測することも可能になる。
また、他の実施例では、発声カウンタ362を利用せず、行動テーブルにおける発話の判定結果に基づいて発声時間が計測されてもよい。つまり、発話判定において連続して「あり」と判定される回数をカウントすることで、発声時間を測定することができる。また、この場合、たとえばユーザAだけに特化して、発声時間を計測することが可能になり、ユーザAとユーザBとが同時に発話しているときには、正確に各ユーザの発声時間を計測できるようになる。さらに、対話中の全ての発話判定結果が行動テーブルに記録されるようにすれば、対話中の総合発声時間や、各発声時間をそれぞれ算出することができる。
図27には、ロボット制御プログラム316に含まれる全体プログラム316aの処理を示すフロー図が示される。たとえば、PC14のプロセッサ64は、テレビ電話機能による通話が開始されると、ステップS161で終了操作か否かを判断する。たとえば、テレビ電話機能による通話を終了する操作がされたか否かを判断する。ステップS161で“YES”であれば、つまり終了操作が行われると、全体処理を終了する。一方、ステップS161で“NO”であれば、つまり終了操作が行われなければ、ステップS163で状態データ354を参照する。
続いて、ステップS165ではモニタ状態か否かを判断する。つまり、状態データ354に、ユーザの興味対象がモニタ16であること示す「モニタ」が含まれているか否かを判断する。ステップS165で“NO”であれば、つまりユーザの興味対象がモニタ16でなければ、ステップS175に進む。一方、ステップS165で“YES”であれば、つまりユーザの興味対象がモニタ16であれば、ステップS167でアクティブか否かを判断する。つまり、状態データ354に、ユーザがアクティブ状態であることを示す「アクティブ」が含まれているか否かを判断する。ステップS167で“NO”であれば、つまりユーザがパッシブ状態であれば、ステップS177に進む。
一方、ステップS167で“YES”であれば、つまりユーザがアクティブ状態であれば、ステップS169でトークであるか否かを判断する。つまり、状態データ354に、ユーザがトーク状態であることを示す「トーク」が含まれるか否かを判断する。ステップS169で“YES”であれば、つまり、ユーザがトーク状態であれば状態データ354は「アクティブ・トーク・モニタ」であるため、ステップS171でアクティブトーク処理を実行し、ステップS161に戻る。なお、このアクティブトーク処理については、図28に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
ステップS169で“NO”であれば、つまりユーザがリッスン状態であれば状態データ354は「アクティブ・リッスン・モニタ」であるため、ステップS173でアクティブリッスン処理を実行し、ステップS161に戻る。なお、このアクティブリッスン処理については、図29に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
また、ユーザの興味対象がモニタ16以外である場合、ステップS175で、ロボット状態か否かを判断する。つまり、状態データ354に、ユーザの興味対象がロボット10であることを示す「ロボット」が含まれているか否かを判断する。ステップS175で“YES”であれば、つまりユーザの興味対象がロボット10であれば、ステップS177で非アクティブ処理を実行し、ステップS161に戻る。なお、この非アクティブ処理については図30に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。一方、ステップS175で“NO”であれば、つまりユーザの興味対象がロボット10でもモニタ16でもなければ、ステップS179でアザー処理を実行し、ステップS161に戻る。なお、アザー処理については図31に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
なお、他の実施例では、ステップS165,S175およびS179の処理を省略し、ステップS167で、アクティブ・モニタか否かを判断するようにしてもよい。また、ステップS171,S173,S177およびS179の処理を実行するプロセッサ64は動作付与手段として機能する。
図28にはアクティブトークプログラム316bの処理を示すフロー図が示される。なお、図28−図42までのフロー図に示される処理は、PC14aによって実行されるもとして説明する。そのため、「ユーザ」はユーザAを示し、「相手」はユーザB、つまり相手ユーザを示す。
PC14aのプロセッサ64は、ステップS171の処理が実行されると、ステップS191でサーバ24とのデータ通信を確立する。つまり、データ通信処理を実行することで、サーバ24とのデータ通信を確立する。続いて、ステップS193では、相手の状態データを取得する。つまり、サーバ24に記憶されるユーザBの状態データを、サーバ24とのデータ通信によって取得する。そして、取得された相手の状態データは、データ通信バッファ344に一時的に記憶される。
続いて、ステップS195では、相手がモニタ状態か否かを判断する。つまり、データ通信バッファ344に一時的に記憶されたユーザBの状態データに基づいて、ユーザBの興味対象がモニタ16bであるか否かを判断する。ステップS195で“NO”であれば、つまりユーザBの興味対象がモニタ16bでなければ、ステップS207に進む。一方、ステップS195で“YES”であれば、つまりユーザBの興味対象がモニタ16bであれば、ステップS197で相手がアクティブか否かを判断する。つまり、取得されたユーザBの状態データに基づいて、ユーザBがアクティブ状態であるか否かを判断する。ステップS197で“NO”であれば、つまりユーザBがパッシブ状態であれば、ステップS207に進む。
一方、ステップS197で“YES”であれば、つまりユーザBがアクティブ状態であれば、ステップS199で相手がトークであるか否かを判断する。つまり、ユーザBの状態データに基づいて、ユーザBがトーク状態であるか否かを判断する。ステップS199で“YES”であれば、つまりユーザBがトーク状態であればステップS201で発話継続処理を実行する。そして、発話継続処理が終了すれば、アクティブトーク処理を終了して、全体処理に戻る。なお、この発話継続処理については、図32に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
また、ステップS199で“NO”であれば、つまりユーザBがリッスン状態であれば、ステップS203でユーザと相手との状態データを一時記憶する。つまり、ユーザAの状態を示す状態データ354と、データ通信バッファ344に記憶されるユーザBの状態データとを状態データバッファ348に一旦格納する。続いて、ステップS205では、発声時間が閾値Lより短いか否かを判断する。つまり、発声カウンタ362によってカウントされたユーザAの発声時間が閾値Lより短いか否かを判断する。
ステップS205で“YES”であれば、つまりユーザAの発声時間が閾値Lよりも短ければ、ステップS201に進む。一方、ステップS205で“NO”であれば、つまりユーザAの発声時間が閾値L以上であれば、ユーザAが一方的に話しすぎている状態のため、ステップS207で発話抑制処理を実行する。そして、ステップS207の処理が終了すれば、アクティブトーク処理を終了して、全体処理に戻る。なお、発話抑制処理については、図33に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
以下、図29−図31に示すフロー図において、図28のフローと重複するフローについては、詳細な説明を省略する。
図29にはアクティブリッスンプログラム316cの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS173の処理が実行されると、ステップS211でサーバ24とのデータ通信を確立し、ステップS213では相手の状態データを取得する。続いて、ステップS215では、相手がモニタ状態であるか否かを判断する。ステップS215で“NO”であれば、つまりユーザBの興味対象がモニタ16b以外であれば、ステップS227に進む。
ステップS215で“YES”であれば、つまりユーザBの興味対象がモニタ16bであれば、ステップS217で相手がアクティブか否かを判断する。ステップS217で“NO”であれば、つまりユーザBがパッシブ状態であれば、ステップS227に進む。一方、ステップS217で“YES”であれば、つまりユーザBがアクティブ状態であれば、ステップS219で相手がトークであるか否かを判断する。ステップS219で“NO”であれば、つまりユーザBがリッスン状態であれば、ステップS227に進む。一方、ステップS219で“YES”であれば、つまりユーザBがトーク状態であれば、ステップS221でユーザと相手との状態データを一時記憶する。
続いて、ステップS223では発声時間が閾値Lよりも短いか否かを判断する。つまり、発声カウンタ362によってカウントされたユーザBの発声時間が、閾値Lよりも短いか否かを判断する。ステップS223で“YES”であれば、つまりユーザBの発声時間が閾値Lよりも短ければ、ステップS225で発話継続処理を実行する。そして、ステップS225の処理が終了すれば、アクティブリッスン処理を終了して、全体処理に戻る。一方、ステップS223で“NO”であれば、つまりユーザBの発声時間が閾値L以上であれば、相手ユーザであるユーザBが一方的に話しすぎている状態のため、ステップS227で発話促進処理を実行する。また、ステップS227の処理が終了すれば、アクティブリッスン処理を終了して、全体処理に戻る。なお、発話促進処理については、図34に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
そして、ステップS207の発話抑制処理およびステップS227の発話促進処理が実行されると、ロボット10aはユーザAの発話を制御するように動作する。したがって、ユーザAとユーザBとがバランス良く発話するようになるため、対話が持続するようになる。
図30には非アクティブプログラム316dの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS177の処理が実行されると、ステップS231で発話促進処理を実行する。そして、ステップS231の処理が終了すれば、非アクティブ処理を終了して、全体処理に戻る。たとえば、対話に非積極的なユーザの発話を促進することで、ユーザを対話に参加させ、対話を持続させる。
図31にはアザープログラム316eの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS179の処理が実行されると、ステップS241で注意引きつけ処理を実行する。そして、ステップS241の処理が終了すると、アザー処理を終了して、全体処理に戻る。
なお、注意引きつけ処理の詳細な説明は省略するが、この処理が実行されると、ロボット10aは、ユーザAの注意を引きつけるように動作する。つまり、ユーザAの興味対象がモニタ16(ユーザB)でも、ロボット10aでなければ、ロボット10aは、ユーザAが対話に興味を持つように注意を引きつける。このように、アクティブ状態ではないユーザに、対話へ興味を持たせることで、対話が持続するようになる。
図32には発話継続プログラム316fの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS201またはステップS225の処理が実行されると、ステップS261で行動データを参照する。つまり、ステップS261では、ユーザAの行動データを、行動テーブルデータ352から参照する。続いて、ステップS263では、発話しているか否かを判断する。つまり、ユーザAの行動データにおいて、発話判定結果が「あり」であるか否かを判断する。ステップS263で“YES”であれば、つまりユーザAが発話していれば、ステップS265で傍参与者的疑似傾聴処理を実行する。また、ステップS265の処理が終了すると、発話継続処理を終了して、上位ルーチンに戻る。なお、傍参与者的疑似傾聴処理については、図36のフロー図を用いて後述するため、ここでの詳細な説明は省略する。
また、ステップS263で“NO”であれば、つまりユーザAが発話していなければ、ステップS267で、ステップS191と同様に、サーバ24とのデータ通信を確立する。続いて、ステップS269では相手の行動データを取得する。つまり、ユーザBの行動データをサーバ24から取得する。続いて、ステップS271では、相手の行動データを一時記憶する。つまり、取得されたユーザBの行動データを相手行動データバッファ346に一旦格納する。
続いて、ステップS273では、相手が発話しているか否かを判断する。つまり、相手行動データバッファ346に記憶されている、ユーザBの行動データを読み出し、発話判定結果が「あり」となっているか否かを判断する。
ステップS273で“YES”であれば、つまりユーザBが発話していれば、ステップS275で第1積極的疑似傾聴処理を実行する。また、ステップS275の処理が終了すれば、発話継続処理を終了して上位ルーチンに戻る。なお、第1積極的疑似傾聴処理については、図37に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。一方、ステップS273で“NO”であれば、つまりユーザBが発話していなければ、ステップS277で直前の動作を継続し、処理が終了すれば、発話継続処理を終了して上位ルーチンに戻る。たとえば、ステップS277では、前回の処理で「ユーザAを見る」の動作命令が発行されていれば、今回の処理でも同じ動作命令を発行する。
なお、傍参与者的疑似傾聴処理および第1積極的疑似傾聴処理では、ユーザAまたはユーザBに対して、ロボット10が疑似傾聴を行うように動作命令が付与される。つまり、ユーザAおよびユーザBは、ロボット10の疑似傾聴によって、自身の話を聴いてもらっているように感じることができるため、対話が持続するようになる。
以下、図33,図34に示すフロー図において、図32のフローと重複するフローについては、詳細な説明を省略する。
図33には発話抑制プログラム316gの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS207の処理が実行されると、ステップS281で行動データを取得する。続いて、ステップS283では発話しているか否かを判断する。ステップS283で“YES”であれば、つまりユーザAが発話していれば、ステップS285で傍参与者的疑似傾聴処理を実行し、ステップS285の処理が終了すれば、発話抑制処理を終了してアクティブトーク処理に戻る。
一方、ステップS283で“NO”であれば、つまりユーザAが発話していなければ、ステップS287でサーバ24とのデータ通信を確立し、ステップS289で相手の行動データを取得する。そして、ステップS291では相手の行動データを一時記憶する。続いて、ステップS293では、相手が発話しているか否かを判断する。ステップS293で“YES”であれば、つまりユーザBが発話してれば、ステップS295で第1積極的疑似傾聴処理を実行する。また、ステップS295の処理が終了すれば、発話抑制処理を終了してアクティブトーク処理に戻る。
また、ステップS293で“NO”であれば、つまりユーザBが発話していなければ、ステップS297でユーザ発話抑制処理を実行する。そして、ステップS297の処理が終了すれば、発話抑制処理を終了してアクティブトーク処理に戻る。
なお、ユーザ発話抑制処理の詳細な説明は後述するが、この処理が実行されると、ロボット10はユーザの発話を抑制するように動作する。つまり、ユーザAが一方的に発話している場合には、ユーザAの発話が抑制される。
図34には発話促進プログラム316hの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS227またはステップS231の処理が実行されると、ステップS301で行動データを参照する。続いて、ステップS303では発話しているか否かを判断する。ステップS303で“YES”であれば、つまりユーザAが発話していれば、ステップS305で傍参与者的疑似傾聴処理を実行する。一方、ステップS303で“NO”であれば、つまりユーザAが発話していなければ、ステップS307でサーバ24とのデータ通信を確立し、ステップS309で相手の行動データを取得する。そして、ステップS311では、相手の行動データを一時記憶する。続いて、ステップS313では、相手が発話しているか否かを判断する。ステップS313で“YES”であれば、つまりユーザBが発話していれば、ステップS315で第1積極的疑似傾聴処理を実行する。
また、ステップS313で“NO”であれば、つまりユーザBが発話していなければステップS317でユーザがロボット10を見ているか否かを判断する。つまり、ユーザAの行動データで、視線方向判定結果が「ロボット」であるか否かを判断する。
ステップS317で“YES”であれば、つまりユーザAがロボット10aを見ていれば、ステップS319でユーザ発話促進処理を実行する。そして、ステップS319の処理が終了すれば、発話促進処理を終了して、上位ルーチンに戻る。
なお、ユーザ発話促進処理の詳細な説明は後述するが、この処理が実行されると、ロボット10aはユーザAが発話するように動作する。たとえば、上位ルーチンが非アクティブ処理であれば、ユーザAが会話に参加できるように発話を促進、つまり促すようにロボット10が動作する。これにより、対話に非積極的なユーザが発話するため、ユーザAが対話に参加するようになる。
また、ステップS207,S227,S297およびS319の処理を実行するプロセッサ64は、発話制御動作付与手段として機能する。さらに、ステップS269,S289およびS309の処理を実行するプロセッサ64は取得手段として機能する。
一方、ステップS317で“NO”であれば、つまりユーザAがロボット10aを見ていなければ、ステップS321で注意引きつけ処理を実行する。そして、ステップS321の処理が終了すれば、発話促進処理を終了して、上位ルーチンに戻る。
なお、注意引きつけ処理の詳細な説明は後述するが、この処理が実行されると、ロボット10aはユーザAの注意を引きつけるように動作する。たとえば、上位ルーチンが非アクティブ処理であれば、ユーザAの注意を引きつけることで、ユーザAが会話に参加できるようにロボット10が動作する。これにより、対話に非積極的なユーザは注意を引きつけられ、対話に参加する。
なお、ステップS177,S231,S319およびS321の処理を実行するプロセッサ64は参加動作付与手段として機能する。
ここで、発話促進処理の上位ルーチンがアクティブリッスン処理である場合に、ステップS319またはステップS321の処理でユーザの発話を促進したり、注意を引きつけたりするようにロボット10が動作することで、ユーザAが発話するようになる。つまり、ユーザが相手の話を積極的に傾聴している状態が長く続けば、ユーザAが発話が求められる。
図35には注意引きつけプログラム316jの処理を示すフロー図が示される。PC14aのプロセッサ64は、たとえば、ステップS251の処理が実行されると、ステップS331で乱数生成処理を実行する。たとえば、ステップS331では乱数生成処理では桁数の少ない疑似乱数を1つ生成し、生成した乱数を乱数バッファ350に格納する。
続いて、ステップS333では、乱数が奇数であるか否かを判断する。つまり、乱数バッファ350に格納される乱数を「2」で割ったときの余りが「1」であるか否かを判断する。ステップS333で“YES”であれば、つまり乱数が奇数であれば、ステップS335で「ユーザを見る」の動作命令を発行する。つまり、ユーザAを見るような動作命令をロボット10aに付与する。そして、ステップS335の処理が終了すれば、注意引きつけ処理を終了して上位ルーチンに戻る。
また、ステップS333で“NO”であれば、つまり乱数が偶数であればステップS337で、再び乱数生成処理を実行する。また、ステップS337の処理で作成された乱数は、ステップS331で作成された乱数を消去した後に記憶される。つまり、ステップS337の処理が実行されると、乱数バッファ350に記憶される乱数が更新される。
続いて、ステップS339では、乱数が奇数か否かを判断する。つまり、ステップS337で生成された乱数が奇数であるか否かを判断する。ステップS339で“YES”であれば、つまり乱数が奇数であれば、ステップS341で「ユーザに声をかける」の動作命令を発行する。たとえば、発行される動作命令は、「ねえねえ」などの合成音声を、口32に設けられたスピーカ56から出力させる。そして、ユーザAは、合成音声を聴くことで、ロボット10aに話しかけられたように感じる。
また、ステップS339で“NO”であれば、つまり乱数が偶数であれば、ステップS343で「ユーザと同じものを見る」の動作命令を発行する。つまり、ユーザAの行動データにおける、視線判定結果に基づいて、ロボット10aの頭部モータ48および眼球モータ50を駆動させる動作命令を、ロボット10aに付与する。
たとえば、ユーザAの視線判定結果が「ロボット」であれば、ロボット10aが自身の胴体28を見るように、頭部モータ48および眼球モータ50を駆動させる動作命令を発行する。また、視線判定結果が「モニタ」であれば、ロボット10aがモニタ16aを見るように、頭部28を動作させる動作命令を発行する。そして、視線判定結果が「アザー」であれば、ロボット10aが周囲をきょろきょろするように、頭部28を動作させる動作命令を発行する。なお、視線判定結果が4パターン以上ある場合には、さらに動作命令が多様化する。また、行動データにおける視線判定結果が空間座標で示される場合には、ロボット10aの空間座標位置と視線判定結果の空間座標位置とに基づいて、ユーザAが注視する対象をより正確に判断して、見るようにしてもよい。
このように、注意引きつけ処理では、ユーザを見たり、ユーザに声を掛けたり、ユーザと同じものを見たりするようにロボット10を動作させる動作命令がランダムに発行される。そして、このようにロボット10が動作することで、ユーザの注意が引きつけられる。
なお、右腕30Lまたは左腕30Lを動かしてユーザAの注意を引きつけてもようにしてもよい。また、ステップS321,S335,S341およびS343の処理を実行するプロセッサ64は注意引付手段として機能する。
以下、図36−図40に示すフロー図において、図35のフローと重複するフローについては、詳細な説明を省略する。
図36には傍参与者的疑似傾聴プログラム316kの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS361で行動データを参照する。続いて、ステップS363では、話し始めかを判断する。たとえば、発声カウンタ362で発声時間がカウントされる場合には、発声カウンタ362の値が所定の値(たとえば、2秒を示す値)よりも小さいか否かを判断する。また、行動テーブルにおける発話判定結果に基づいて発声時間が計測されている場合には、発話判定結果が「なし」から「あり」となってから所定回数(たとえば、2回)以内であるか否かを判断する。
ステップS363で“YES”であれば、つまりユーザAが話し始めていれば、ステップS367で第2積極疑似傾聴処理を実行する。そして、ステップS367の処理が終了すれば、傍参与者的疑似傾聴処理を終了して、上位ルーチンに戻る。なお、第2積極的疑似傾聴処理については、図39に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
また、ステップS363で“NO”であれば、ステップS365でロボット10aを見ているか否かを判断する。つまり、参照されたユーザAの行動データで、視線方向判定が「ロボット」であるか否かを判断する。ステップS365で“YES”であれば、つまりユーザAがロボット10aを見ていれば、ステップS367に進む。一方、ステップS365で“NO”であれば、つまりユーザAがロボット10aを見ていなければ、ステップS369で乱数生成処理を実行し、ステップS371で生成された乱数が奇数であるか否かを判断する。ステップS371で“NO”であれば、つまり乱数が偶数であれば、ステップS367に進む。一方、ステップS371で“YES”であれば、つまり乱数が奇数であれば、ステップS373で第1積極的疑似傾聴処理を実行する。そして、ステップS373の処理が終了すると、傍参与者的疑似傾聴処理を終了して、上位ルーチンに戻る。
このように、傍参与者的疑似傾聴処理では、ユーザBに対して疑似傾聴を行う第1疑似傾聴処理と、ユーザAに対して疑似傾聴を行う第2疑似傾聴処理とが、ユーザAの発話や、視線に基づいて選択される。
図37には第1積極的疑似傾聴プログラム316mの処理を示すフロー図が示される。PC14aのプロセッサ64は、たとえばステップS373の処理が実行されると、ステップS381で、乱数生成処理を実行し、ステップS383では生成された乱数が奇数であるか否かを判断する。ステップS383で“YES”であれば、つまり乱数が奇数であれば、ステップS385で「モニタ16aに顔を向ける」の動作命令を発行する。つまり、ユーザBの映像が表示されるモニタ16aの方向に、頭部28の頭部方向および眼球34の視線方向が向くように、頭部モータ48および眼球モータ50を駆動させる動作命令を、ロボット10aに付与する。そして、ステップS385の処理が終了すれば、第1積極的疑似傾聴処理を終了して、上位ルーチンに戻る。
また、ステップS383で“NO”であれば、つまり乱数が偶数であれば、ステップS387で再び乱数生成処理を実行し、ステップS389で乱数が奇数であるか否かを判断する。ステップS389で“YES”であれば、つまり乱数が奇数であればステップS391で「モニタ16a側に体を傾ける」の動作命令を発行する。つまり、体(頭部26および胴体28など)がモニタ16aに傾くように、腰モータ52を駆動させる動作命令を、ロボット10aに付与する。そして、ステップS391の処理が終了すれば、第1積極的疑似傾聴処理を終了して、上位ルーチンに戻る。
さらに、ステップS389で“NO”であれば、つまり乱数が偶数であれば、ステップS393で「相槌をうつ」の動作命令を発行する。たとえば、人間の相槌のように、スピーカ56から「あー」などの合成音声を出力するとともに、頭部26がモニタ16a側に頷くように頭部モータ48を駆動させる動作命令を、ロボット10aに付与する。そして、ステップS393の処理が終了すれば、第1積極的疑似傾聴処理を終了して、上位ルーチンに戻る。
このように、第1積極的疑似傾聴処理では、相手ユーザの映像が映るモニタ16に対して、ロボット10の顔(頭部26および眼球34の方向)を向けたり、ロボット10の体を傾けたり、相槌をうったりすることで、相手ユーザに対して傾聴しているかのようにロボット10が動作する。そのため、たとえユーザAがユーザBの話を傾聴していなくても、ロボッ10aがユーザBの話を疑似傾聴することで、ユーザBは自身の話を聴いてもらっているように感じることができる。
なお、ステップSS275,S295,S315,S373,S385,S391およびS393の処理を実行するプロセッサ64は相手傾聴動作付与手段として機能する。
図38にはユーザ発話抑制プログラム316nの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS297の処理が実行されると、ステップS401で、行動データを参照する。続いて、ステップS403では、ステップS365と同様に、ロボット10aを見ているか否かを判断する。ステップ403で“NO”であれば、つまりユーザAがロボット10aを見ていなければ、ステップS405で注意引きつけ処理を実行する。そして、ステップS405の処理が終了すれば、ユーザ発話抑制処理を終了して、発話抑制処理に戻る。なお、ステップS179,S241,S321,S335,S341,S343およびS405の処理を実行するプロセッサ64は興味動作付与手段として機能する。
また、ステップS403で“YES”であれば、つまりユーザAがロボット10aを見ていなければ、ステップS407で乱数生成処理を実行し、ステップS409で乱数が奇数か否かを判断する。ステップS409で“YES”であれば、つまり乱数が奇数であれば、ステップS411で「ユーザを見る」の動作命令を発行する。つまり、ユーザAの方向に、頭部28および眼球34の方向が向くように、頭部モータ48および眼球モータ50を駆動させる動作命令を、ロボット10aに付与する。そして、ステップS411の処理が終了すれば、ユーザ発話抑制処理を終了して、発話抑制処理に戻る。
一方、ステップS409で“NO”であれば、ステップS413で乱数生成処理を再度実行し、ステップS415で乱数が奇数であるか否かを判断する。ステップS415で“YES”であれば、つまり乱数が奇数であれば、ステップS417で「発話を止める」の動作命令を発行する。つまり、ステップS417では、発話を止めさせるような合成音声をスピーカ56から出力させる動作命令を、ロボット10aに付与する。また、発話を止めさせるような合成音声とは「ちょっと待って」などである。そして、ステップS417の処理が終了すれば、ユーザ発話抑制処理を終了して、発話抑制処理に戻る。
さらに、ステップS415で“NO”であれば、つまり乱数が偶数であれば、ステップS419で再び乱数生成処理を実行し、ステップS421で乱数が奇数であるか否かを判断する。ステップS421で“YES”であれば、つまり生成された乱数が奇数であればステップS423で「モニタ16aを指し示す」の動作命令を発行する。つまり、左腕30Lまたは右腕30Rの先端がモニタ16aの方を指し示すように、右腕モータ46Rまたは左腕モータ46Lを駆動させる動作命令を、ロボット10aに付与する。そして、ステップS423の処理が終了すれば、ユーザ発話抑制処理を終了して、発話抑制処理に戻る。
そして、ステップS421で“NO”であれば、つまり生成された乱数が偶数であれば、ステップS425で注意誘導処理を実行する。また、ステップS425の処理が終了すれば、ユーザ発話抑制処理を終了して、発話抑制処理に戻る。なお、注意誘導処理については、図40に示すフロー図を用いて後述するため、ここでの詳細な説明は省略する。
このように、ユーザ発話抑制処理では、積極的に発話するユーザAに対して、ロボット10aがユーザAを見たり、発話を止める音声を発したり、モニタ16aを指示したり、注意を引きつけたり、注意を誘導したりすることで、発話を抑制する。したがって、一方的に話すユーザの注意が誘導されるため、発話が抑制される。また、ユーザの注意が相手に誘導される場合には、相手が発話する機会を得ることができるため、対話がより持続するようになる。
なお、ステップS297,S405,S411,S417,S423およびS425の処理を実行するプロセッサ64は発話抑制動作付与手段として機能する。
図39には第2積極的疑似傾聴プログラム316pの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS367の処理が実行されると、ステップS431で乱数生成処理を実行し、ステップS433で乱数が奇数か否かを判断する。ステップS433で“YES”であれば、つまり乱数が奇数であれば、ステップS435で「ユーザに顔を向ける」の動作命令を発行する。つまり、つまりユーザAの方向に、顔(頭部26および眼球34)の方向が向くように、頭部モータ48および眼球モータ50を駆動させる動作命令を、ロボット10aに付与する。また、ステップS435の処理が終了すれば、第2積極的疑傾聴処理を終了して、傍参与者的疑似傾聴処理に戻る。
一方、ステップS433で“NO”であれば、つまり乱数が偶数であれば、ステップS437で乱数生成処理を実行し、ステップS439で乱数が奇数か否かを再び判断する。ステップS439で“YES”であれば、つまり乱数が奇数であれば、ステップS441で「ユーザA側に体を傾ける」の動作命令を発行する。つまり、ロボット10aの体(頭部26および胴体28)がユーザA側に傾くように、腰モータ52を駆動させる動作命令を、ロボット10aに付与する。
また、ステップS439で“NO”であれば、つまり乱数が偶数であれば、ステップS443で「相槌をうつ」の動作命令を発行する。つまり、頭部26がユーザA側に頷くように頭部モータ48を駆動させ、人間の相槌のような合成音声をスピーカ56から出力させる動作命令を、ロボット10aに付与する。そして、ステップS443の処理が終了すれば、第2積極的疑似傾聴処理を終了して、傍参与者的疑似傾聴処理に戻る。
このように、ロボット10aは、ユーザAに対して顔を向けたり、体を傾けたり、相槌をうったりすることで、ユーザAの発話を傾聴しているかのような動作を行う。
なお、ステップS171,S173,S201,S225,S265,S285,S305,S367,S435,S441およびS443の処理を実行するプロセッサ64は傾聴動作付与手段として機能する。
図40には注意誘導プログラム316qの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS425の処理が実行されると、ステップS451で乱数生成処理を実行し、ステップS453で乱数が奇数であるか否かを判断する。そして、ステップS453で“YES”であれば、つまり乱数が奇数であれば、ステップS455で「モニタ16aを見る」の動作命令を発行する。たとえば、ステップS455では、モニタ16aの方向に、頭部28の頭部方向および眼球34の視線方向が向くように、頭部モータ48および眼球モータ50を駆動させる動作命令を、ロボット10aに付与する。そして、ステップS455の処理が終了すれば、注意誘導処理を終了して、ユーザ発話抑制処理に戻る。
一方、ステップS453で“NO”であれば、つまり乱数が偶数であれば、ステップS457で乱数生成処理を再度実行し、ステップS459で乱数が奇数であるか否かを判断する。そして、ステップS459で“YES”であれば、つまり乱数が奇数であれば、ステップS455に進む。一方、ステップS459で“NO”であれば、つまり生成された乱数が偶数であれば、ステップS461で、ステップS411と同様に、「ユーザAを見る」の動作命令を発行する。そして、ステップS461の処理が終了すれば、注意誘導処理を終了して、ユーザ発話抑制処理に戻る。
このように、注意誘導処理が何度か実行されると、ユーザAとモニタ16aとを交互に見るような動作を行うようになるため、ユーザAの注意が誘導される。特に本実施例では、ロボット10aは、ユーザAよりもモニタ16aを見る回数が多くなるように設定されているため、ユーザAの注意はモニタ16a、つまりユーザBに誘導される。また、他の実施例では、注意誘導処理を複数回繰り返すことで、より効果的にユーザAの注意を誘導してもよい。
なお、ステップS425,S455およびS461の処理を実行するプロセッサ64は注意誘導手段として機能する。
図41にはユーザ発話促進プログラム316rの処理を示すフロー図が示される。PC14aのプロセッサ64は、ステップS319の処理が実行されると、ステップS471で「ユーザに質問する」の動作命令を発行する。たとえば、ステップS471では、「今日の食事のことについて聞いてみたら?」などの合成音声を、口32に設けられたスピーカ56から出力されるような動作命令を、ロボット10aに付与する。そして、ステップS471の処理が終了すれば、ユーザ発話促進処理を終了して、発話促進処理に戻る。
このように、ユーザAがユーザBに対して質問をさせるようなことを、ロボット10aが発話することで、ユーザBが発話するようになり、対話が持続するようになる。
なお、ステップS227,S319およびS471の処理を実行するプロセッサ64は発話促進動作付与手段として機能する。また、ステップS319およびS471の処理を実行するプロセッサ64は発話促し手段として機能する。
図42にはカメラ制御プログラム318の処理を示すフロー図が示される。PC14aのプロセッサ64は、テレビ電話機能によって通話が始まると、ステップS481でモニタカメラ22aの画像を送信する。つまり、テレビ電話機能において利用される画像データを、ネットワーク200を介してPC14bに送信する。続いて、ステップS483では、興味対象認識結果を参照する。つまり、状態データ354に含まれる、興味対象の認識結果を参照する。
続いて、ステップS485では、アザー状態か否かを判断する。つまり、ユーザAの興味対象の認識結果が「アザー」であるか否かを判断する。ステップS485で“YES”であれば、つまりユーザAがロボット10aまたはモニタ16aを見ていなければ、ステップS483に戻る。一方、ステップS485で“NO”であれば、つまりユーザAがロボット10aまたはモニタ16aを見ていれば、ステップS487でモニタ状態か否かを判断する。つまり、ユーザAの興味対象がモニタ16であるか否かを判断する。
ステップS487で“YES”であれば、つまりユーザAの興味対象がモニタ16aであれば、ステップS489でモニタカメラ22aの画像を送信する。つまり、ユーザAがモニタ16を見ることで、ユーザAの顔がモニタカメラ22aによって正面から撮影されていれば、ステップS489で、モニタカメラ22aの画像をPC14bに送信する。一方、ステップS487で“NO”であれば、つまりユーザAの興味対象がロボット10aであれば、ステップS491で腹部カメラ12aの画像を送信する。つまり、ユーザAがロボット10aを見ることで、ユーザAの顔が腹部カメラ12aによって正面から撮影されていれば、ステップS491で、腹部カメラ12aの画像をPC14bに送信する。
なお、ステップS489またはステップS491の処理が終了すれば、ステップS483に戻る。また、ステップS489およびS491の処理を実行するプロセッサ64は画像送信手段として機能する。
これにより、たとえばユーザAの顔が認識されている画像がPC14bに送信されるため、モニタ16bに表示される画像には必ずユーザAの顔が表示されるようになる。そのため、ユーザBは、たとえユーザAがロボット10aに話しかけている状態であったとしても、ユーザB自身に話しかけられているように感じるため、対話が持続するようになる。
この実施例によれば、傾聴対話持続システム100は、相手ユーザが表示されるモニタ16、ユーザの音声が集音されるマイク20およびユーザを撮影するモニタカメラ22と接続されるPC14と、腹部カメラ12が設けられるロボット10とを含む。
PC14では、モニタカメラ22および腹部カメラ12によって撮影されたユーザの画像と、マイク20によって集音された音声とに基づいてユーザの行動が判定され、さらにメモリ68に記憶される。また、PC14では、第1所定時間分の行動データからユーザの状態を認識する。そして、たとえばユーザの状態が「アクティブ・トーク・モニタ」と認識されていれば、ロボット10は、ユーザに対して疑似傾聴を行うように、動作命令がPC14から付与される。また、ユーザの状態が「パッシブ・リッスン・モニタ」と認識されていれば、ロボット10はユーザに対して話しかけるなどして注意を引きつけ、ユーザを対話に参加させる。
このように、ユーザの状態に応じてロボット10が対話を持続させるように動作するため、コミュニケーション障害のある者同士の対話を持続させることができる。
なお、腹部カメラ12およびモニタカメラ22以外に、モニタ16およびロボット10以外の位置でユーザの顔を撮影する第3カメラを設置し、その第3カメラによってユーザの興味対象が「アザー」であるか否かの判定を補完的に行うようにしてもよい。つまり、第3カメラによって、ユーザの顔認識が失敗した状態と、ユーザの興味対象が「アザー」である状態とを区別できるようにする。そして、たとえば顔認識が失敗したときの行動データを興味対象認識処理に反映させないようにすることで、傾聴対話持続システム100がユーザの興味対象を精度よく認識できるようにしてもよい。
さらに、ユーザの視線方向を特定する第4カメラを設置し、その第4カメラによってユーザの視界にロボット10が入っているか否かの判定を補完的に行うようにしてもよい。そして、傾聴対話持続システム100では、上記判定結果に基づいて、ロボット10による発話や、ユーザの注意の引きつけの必要性が判断されてもよい。たとえば、PC14は、ユーザの視界にロボット10が入っていなければ、ロボット10を必ず発話するように動作させる。一方、PC14は、ユーザの視界にロボット10が入っていれば、ロボット10を必ずユーザの注意の引きつけるように動作させる。
このように、カメラを3台以上設置することで、興味対象の認識精度を向上させたり、ロボット10をより効果的に動作させたりすることができる。なお、第3カメラおよび第4カメラの代わりに、1台のカメラで上記2つの判定が行われてもよい。また、より多くのカメラを設置することで、ユーザの行動の判定および状態の認識の精度を向上させたり、ロボット10に付与される動作命令の判断をより高度なものにしたりしてもよい。
また、他の実施例は、PC14がロボット10に内蔵されていてもよく、この場合にロボット10は自律的に傾聴動作や発話機能を実行する。また、この場合、ロボット10は、ユーザのようなコミュニケーションの対象(コミュニケーション対象)との間で、身振り手振りのような身体動作および音声の少なくとも一方を含むコミュニケーション行動を実行する機能を有する相互作用指向のロボット(コミュニケーションロボット)であってもよい。
また、PC14およびネットワーク200を利用せずに電話網などを介して、ユーザの画像と音声とがPC14に送受信されてもよい。また、電話機能をモニタ16などが有していれば、PC14を利用せずに、モニタ16、スピーカ18、マイク20およびモニタカメラ22のみでテレビ電話機の機能が実現されてもよい。そして、モニタ16、スピーカ18、マイク20およびモニタカメラ22が同一の筐体に組み込まれてもよい。さらに、この場合、ロボット10とテレビ電話機とが接続された状態で、テレビ電話の通話が開始される。
また、PC14に代えて、サーバ24によってユーザの行動および状態が判定および認識され、ロボット10に対して動作命令を付与するようにしてもよい。この場合、腹部カメラ12およびモニタカメラ22によって撮影された画像と、マイク20によって集音された音声とはサーバ24に直接送信され、ロボット10はサーバ24からの動作命令に従って動作する。さらに、ユーザの状態を認識する処理だけが、サーバ24で実行されてもよい。つまり、図22−図25に示す処理がサーバ24のプロセッサ80によって実行され、PC14は第1所定時間毎に状態認識結果を取得する。
また、傾聴対話持続システム100の他の実施例としては、ユーザAおよびユーザBの状態認識結果によらず、ユーザAの状態データのみに基づいてロボット10aが「疑似傾聴動作」、「発話制御動作」および「注意の引きつけの動作」を行ってもよい。たとえば、ユーザAが発話すれば、ロボット10aが疑似傾聴動作を行い、ユーザAの発声時間が長くなれば、ロボット10aがユーザAを見ることで発話を抑制する。そして、ユーザAが発話していなかったり、モニタ16aおよびロボット10aを見ていなかったりすれば、ロボット10aはユーザAの注意を引きつける動作を行う。
そして、状態データは行動データと同様、図6に示すテーブルのような形式で記憶されてもよい。また、状態データがテーブル形式で記憶される際には、ユーザの状態変化を示すログデータとして利用されてもよい。そして、状態データのテーブルに基づいて作成されるグラフが、モニタ16に表示されてもよい。