図1を参照して、この実施例の遠隔地間対話システム(以下、単に「システム」とも言う。)10は、遠隔地に離れた対話者同士が対話を行うためのものである。システム10は少なくとも2つの対話装置12(12a,12b)を含む。2つの対話装置12は、ネットワーク、たとえば公衆インターネット網を介して接続されており、対話装置12a側の対話者Aおよび対話装置12b側の対話者Bの発話した音声の音声データを互いに通信する。また、この実施例のシステム10は、発話タイミング制御サーバ(以下、単に「サーバ」とも言う。)14を含み、サーバ14はネットワークを介して少なくとも2つの対話装置12と通信可能に接続される。
この実施例では、一方の対話装置12としてコンピュータ12aが適用され、他方の対話装置12としてコミュニケーションロボット(以下、単に「ロボット」とも言う。)12bが適用された場合を説明する。
対話装置12aはマイク16およびスピーカ18を備える。また、対話装置12aはたとえばパーソナルコンピュータであり、CPU、メインメモリ、通信装置および入力装置等を備えている。メインメモリには、この発明の対話装置12として機能するために必要なプログラムおよびデータが記憶される。プログラムおよびデータは、メインメモリに予め固定的に記憶されてもよいし、または、情報記憶媒体やネットワークから取得されてよい。CPUは、当該プログラムに従って、メインメモリのうちのワーキングメモリに一時的なデータを生成または取得しつつ対話のための処理を実行する。
マイク16は対話者の発話した音声を取得するためのものであり、当該音声は音声入出力ボードでデータに変換されて、音声データとしてメインメモリに記憶される。スピーカ18は、対話相手の音声およびシステム10の備える音声を出力するためのものである。CPUは受信した音声データを音声入出力ボードに与えて当該音声をスピーカ18から出力する。通信装置は、ネットワークを介して他方の対話装置12やサーバ14にデータを送受信する。また、入力装置は、キーボードまたはポインティングデバイス等である。
この実施例では、相手側の対話装置12としてロボット12bが使用されるので、ユーザが入力装置を用いてロボット12bの身振りを指示可能になっている。ロボット12bの身振りは、表示装置の画面に表示されたリストから選択されてよいし、あるいは入力装置の各キーに割り当てられてもよい。対話者Aは発話しながら入力装置を用いて動作を指示することによって、相手側のロボット12から自分の音声を出力することができ、しかも当該ロボット12に所望の身振りを行わせることができる。
なお、対話装置12aは、音声入出力可能かつ通信可能なコンピュータであればよく、PCに限られず、ゲーム機、携帯電話、携帯ゲーム機などの他のコンピュータであってよい。
他方の対話装置12bは人間のような身体部位を有するロボットであり、身体部位を動かすことによって所定の身振りを対話者Bに提示することができる。このロボット12bは、マイク20およびスピーカ22を備えている。詳しくは、図2にロボット12bの外観の一例が示され、図3には当該ロボット12の電気的な構成の一例が示される。
図2を参照して、ロボット12bは台車24を含み、この台車24の下面には、このロボット12bを自律移動させる車輪26が設けられる。この車輪26は、車輪モータ(図3において参照番号「28」で示す。)によって駆動され、台車24すなわちロボット12bを前後左右任意の方向に動かすことができる。なお、図2では示さないが、この台車24の前面には、衝突センサ(図3において参照番号「30」で示す。)が取り付けられ、この衝突センサ30は、台車24への人や他の障害物との接触を検知する。ロボット12bの移動中に接触を検知すると、直ちに車輪26の駆動を停止することができる。
台車24の上には、多角形柱のセンサ取付パネル32が設けられ、このセンサ取付パネル32の各面には、超音波距離センサ34が取り付けられる。この超音波距離センサ34は、取付パネル32すなわちロボット12bの周囲の主として人との間の距離を計測するためのものである。
台車24の上には、さらに、ロボット12bの胴体が、その下部が上述の取付パネル32に囲まれて、直立するように取り付けられる。この胴体は下部胴体36と上部胴体38とから構成され、これら下部胴体36および上部胴体38は、連結部40によって連結される。連結部40には、図示しないが、昇降機構が内蔵されていて、この昇降機構を用いることによって、上部胴体38の高さすなわちロボット12bの高さを変化させることができる。昇降機構は、腰モータ(図3において参照番号「42」で示す。)によって駆動される。
上部胴体38のほぼ中央には、1つの全方位カメラ44と、1つのマイク20とが設けられる。全方位カメラ44は、ロボット12bの周囲を撮影するもので、後述の眼カメラ46と区別される。マイク20は、上述のように、周囲の音、とりわけ人の声を取り込む。
上部胴体38の両肩には、それぞれ、肩関節48Rおよび48Lによって、上腕50Rおよび50Lが取り付けられる。肩関節48Rおよび48Lは、それぞれ3軸の自由度を有する。すなわち、右肩関節48Rは、X軸,Y軸およびZ軸の各軸廻りにおいて上腕50Rの角度を制御できる。Y軸は、上腕50Rの長手方向(または軸)に平行な軸であり、X軸およびZ軸は、そのY軸に、それぞれ異なる方向から直交する軸である。左肩関節48Lは、A軸,B軸およびC軸の各軸廻りにおいて上腕50Lの角度を制御できる。B軸は、上腕50Lの長手方向(または軸)に平行な軸であり、A軸およびC軸は、そのB軸に、それぞれ異なる方向から直交する軸である。
上腕50Rおよび50Lのそれぞれの先端には、肘関節52Rおよび52Lを介して、前腕54Rおよび54Lが取り付けられる。肘関節52Rおよび52Lは、それぞれ、W軸およびD軸の軸廻りにおいて、前腕54Rおよび54Lの角度を制御できる。
なお、上腕50Rおよび50Lならびに前腕54Rおよび54Lの変位を制御するX,Y,Z,W軸およびA,B,C,D軸では、「0度」がホームポジションであり、このホームポジションでは、上腕50Rおよび50Lならびに前腕54Rおよび54Lは下方向に向けられる。
また、図2では示さないが、上部胴体38の肩関節48Rおよび48Lを含む肩の部分や上述の上腕50Rおよび50Lならびに前腕54Rおよび54Lを含む腕の部分には、それぞれ、タッチセンサ(図3において参照番号「56」で包括的に示す。)が設けられていて、これらのタッチセンサ56は、人がロボット12bのこれらの部位に接触したかどうかを検知する。
前腕54Rおよび54Lのそれぞれの先端には、手に相当する球体58Rおよび58Lがそれぞれ固定的に取り付けられる。なお、この球体58Rおよび58Lに代えて、この実施例のロボット12bと異なり指の機能が必要な場合には、人の手の形をした「手」を用いることも可能である。
上部胴体38の中央上方には、首関節60を介して、頭部62が取り付けられる。この首関節60は、3軸の自由度を有し、S軸,T軸およびU軸の各軸廻りに角度制御可能である。S軸は首から真上に向かう軸であり、T軸およびU軸は、それぞれ、このS軸に対して異なる方向で直交する軸である。頭部62には、人の口に相当する位置に、上述のスピーカ22が設けられる。なお、スピーカ22は、ロボット12bが、それの周囲の人に対して音声または声によってコミュニケーションを図るために用いられてよい。また、スピーカ22は、ロボット12の他の部位たとえば胴体に設けられてもよい。
また、頭部62には、目に相当する位置に眼球部64Rおよび64Lが設けられる。眼球部64Rおよび64Lは、それぞれ眼カメラ46Rおよび46Lを含む。なお、左右の眼球部64Rおよび64Lをまとめて参照符号「64」で示し、左右の眼カメラ46Rおよび46Lをまとめて参照符号「46」で示すこともある。眼カメラ46は、ロボット12bに接近した人の顔や他の部分ないし物体等を撮影してその映像信号を取り込む。
なお、上述の全方位カメラ44および眼カメラ46のいずれも、たとえばCCDやCMOSのように固体撮像素子を用いるカメラであってよい。
たとえば、眼カメラ46は眼球部64内に固定され、眼球部64は眼球支持部(図示せず)を介して頭部62内の所定位置に取り付けられる。眼球支持部は、2軸の自由度を有し、α軸およびβ軸の各軸廻りに角度制御可能である。α軸およびβ軸は頭部62に対して設定される軸であり、α軸は頭部62の上へ向かう方向の軸であり、β軸はα軸に直交しかつ頭部62の正面側(顔)が向く方向に直交する方向の軸である。この実施例では、頭部62がホームポジションにあるとき、α軸はS軸に平行し、β軸はU軸に平行するように設定されている。このような頭部62において、眼球支持部がα軸およびβ軸の各軸廻りに回転されることによって、眼球部64ないし眼カメラ46の先端(正面)側が変位され、カメラ軸すなわち視線方向が移動される。
なお、眼カメラ46の変位を制御するα軸およびβ軸では、「0度」がホームポジションであり、このホームポジションでは、図2に示すように、眼カメラ46のカメラ軸は頭部62の正面側(顔)が向く方向に向けられ、視線は正視状態となる。
図3を参照して、このロボット12bは、全体の制御のためにマイクロコンピュータまたはCPU66を含み、このCPU66には、バス68を通して、メモリ70,モータ制御ボード72,センサ入力/出力ボード74および音声入力/出力ボード76が接続される。
メモリ70は、図示しないが、ROMやHDDおよびRAM等を含み、ROMまたはHDDには、このロボット12bをこの発明の対話装置12として機能させるためのプログラムおよびデータが予め格納されている。CPU66は、このプログラムに従って処理を実行する。また、RAMは、バッファメモリやワーキングメモリとして使用される。
モータ制御ボード72は、たとえばDSP(Digital Signal Processor)で構成され、右腕、左腕、頭および眼等の身体部位を駆動するためのモータを制御する。すなわち、モータ制御ボード72は、CPU66からの制御データを受け、右肩関節48RのX,YおよびZ軸のそれぞれの角度を制御する3つのモータと右肘関節52Rの軸Wの角度を制御する1つのモータを含む計4つのモータ(図3ではまとめて「右腕モータ」として示す。)78の回転角度を調節する。また、モータ制御ボード72は、左肩関節48LのA,BおよびC軸のそれぞれの角度を制御する3つのモータと左肘関節52LのD軸の角度を制御する1つのモータとを含む計4つのモータ(図3ではまとめて「左腕モータ」として示す。)80の回転角度を調節する。モータ制御ボード72は、また、首関節60のS,TおよびU軸のそれぞれの角度を制御する3つのモータ(図3ではまとめて「頭部モータ」として示す。)82の回転角度を調節する。モータ制御ボード72は、また、腰モータ42および車輪26を駆動する2つのモータ(図3ではまとめて「車輪モータ」として示す。)28を制御する。さらに、モータ制御ボード72は、右眼球部64Rのα軸およびβ軸のそれぞれの角度を制御する2つのモータ(図3ではまとめて「右眼球モータ」として示す。)84の回転角度を調節し、また、左眼球部64Lのα軸およびβ軸のそれぞれの角度を制御する2つのモータ(図3ではまとめて「左眼球モータ」として示す。)86の回転角度を調節する。
なお、この実施例の上述のモータは、車輪モータ28を除いて、制御を簡単化するためにそれぞれステッピングモータまたはパルスモータであるが、車輪モータ28と同様に、直流モータであってよい。また、この実施例では、ロボット12bの腕、頭、眼などの身体部位を駆動するアクチュエータとして電力を駆動源とするモータを用いた。しかしながら、このロボット12bとしては、たとえば空気圧(または負圧)、油圧、圧電素子あるいは形状記憶合金などによる他のアクチュエータによって身体部位を駆動するロボットが適用されてもよい。
センサ入力/出力ボード74も、同様に、DSPで構成され、各センサやカメラからの信号を取り込んでCPU66に与える。すなわち、超音波距離センサ34の各々からの反射時間に関するデータがこのセンサ入力/出力ボード74を通して、CPU66に入力される。また、全方位カメラ44からの映像信号が、必要に応じてこのセンサ入力/出力ボード74で所定の処理が施された後、CPU66に入力される。眼カメラ46からの映像信号も、同様にして、CPU66に与えられる。また、タッチセンサ56からの信号がセンサ入力/出力ボード74を介してCPU66に与えられる。
スピーカ22には音声入力/出力ボード76を介して、CPU66から音声データが与えられ、それに応じて、スピーカ22からはそのデータに従った音声または声が出力される。また、マイク20からの音声入力が、音声入力/出力ボード76を介して音声データとしてCPU66に取り込まれる。
通信LANボード88も、同様に、DSPで構成され、CPU66から与えられた送信データを無線通信装置90に与えて、当該データを無線通信装置90から送信させる。また、通信LANボード88は無線通信装置90を介してデータを受信し、受信データをCPU66に与える。
図1に戻って、サーバ14は、両対話者の発話のタイミングを制御するために設けられる。サーバ14は、CPU、メインメモリ、通信装置等を備える。メインメモリにはこのサーバ14を制御するためのプログラムおよびデータが記憶される。CPUは当該プログラムに従って処理を実行する。
また、サーバ14は音声解析履歴データベース(DB)92および間パターンDB94を含む。音声解析履歴DB92には、対話装置12で取得された対話者の音声の解析データの履歴が記憶される。
間パターンDB94には、後述するように、対話に適切な間を与えるための間パターンデータ(図4参照)が記憶されている。間パターンデータは、予め発話の計測を行って得た発話データからパターン認識によって抽出される。計測を実際の使用者を対象として行うと、間の取り方の個人的特徴を抽出できる。ただし、標準的なまたは一般的な間の取り方も存在すると考えられるので、任意の人を被験者としてその発話を計測して間パターンデータを抽出してよい。
このシステム10では、各対話装置12が、一定時間ΔTごとにマイク16または20で音声を検出する。ΔTはたとえば1フレームまたは所定のフレーム数であってよい。1フレームはたとえば1/30秒である。対話装置12は、検出した結果すなわち発話の有無に応じた処理を行う。対話装置12は、検出時刻における発話状態(音声取得状態)および実行した処理(音声出力状態)など、当該装置12における対話状態に関する情報をサーバ14に送信する。サーバ14は、当該対話状態に関する情報を受信して、当該対話装置12における状態を逐一記憶する。このような対話状態の履歴は、発話フラグテーブル(図5参照)としてメモリに記憶される。発話フラグテーブルでは、後述するように、検出時刻ごとの対話装置12における少なくとも音声取得状態および音声出力状態を含む対話状態を示すフラグが記憶されている。
なお、便宜上、ここでは、対話装置12a側からみた動作を説明する。しかし、対話装置12aと対話装置12bとの相違は、主に身体動作の提示に関する機能のみであるから、対話装置12bの動作も、対話装置12aの場合と同様である。
対話装置12aは、マイク16から音声を検出した場合には、サーバ14の発話フラグテーブルを参照する。そして、対話装置12aは、1つ前の検出時刻における(つまりΔT前の)相手側の状態に応じた処理を実行する。具体的には、前検出時刻における相手の状態フラグがSPEAKINGフラグでない場合には、つまり、前検出時刻において相手が自分に音声を送信している状態ではない場合には、対話装置12aは、マイク16で検出した音声データをメモリにローカルファイルとして記録しつつ、当該音声データを相手側の対話装置12bに送信する。これに応じて、対話装置12bは、当該音声データを受信して当該音声をスピーカ22から出力する。このように、一方の対話者Aが発話し、かつ、前検出時刻で他方の対話者Bの音声が送信されていない場合には、対話者Aの音声データが直ちに送信され、当該音声が相手側の対話装置12bで出力されて、相手Bに聞かせられる。
また、この場合、対話装置12aは、SPEAKINGフラグをサーバ14に送信し、これに応じて、サーバ14は発話フラグテーブルに当該対話装置12aの当該検出時刻tにおける状態として当該SPEAKINGフラグを記憶する。SPEAKINGフラグは、一方の対話者が発話している状態、すなわち、発話音声が直接相手側に送信されて再生されている状態を意味する。さらに、対話装置12aは、メモリのSENDフラグをオンにして、自分の処理状態として、音声を相手に送信中であることを記憶する。
なお、当該音声を記録したローカルファイルには、当該発話が終わったときに音声解析が実行され、当該発話音声の特徴ないし状態はサーバ14の音声解析履歴DB92に記憶される。
一方、対話装置12aはマイク16から音声を検出しなかった場合には、SILENTフラグをサーバ14に送信し、これに応じて、サーバ14は発話フラグテーブルに当該SILENTフラグを記憶する。SILENTフラグは、当該検出時刻tにおいて対話者が発話してない状態を意味する。このように、音声が検出されない場合には、発話フラグテーブルにSILENTフラグが記録される。
サーバ14では、両対話者とも発話していない状態(SILENTフラグ)が検出されたとき、間パターンと対話における現在までの発話状況(間の状況)との照合が行われる。間の状況は、少なくとも対話の空白時間(無音時間)、および当該空白前の対話における発話音声の特徴(音声解析結果)を含む。
間パターンDB94に記憶される間パターンデータの一例が図4に示される。間パターンDB94には、会話に適切な間を与えることができる複数の間パターンデータが記憶されている。間パターンは、少なくとも空白時間とその前の発話音声の特徴に関する情報を含む。この実施例では、間パターンデータは、会話の空白時間、最終発話者、条件(I)、間機能言葉、発話者および動作コマンド等の情報を含む。空白時間(t)は、両者無音状態が継続している時間の条件である。最終発話者は、当該空白前の対話での最後の発話者AまたはBの条件である。条件(I)は、当該空白前の対話の音声の解析結果の条件であり、たとえば基本周波数(ピッチ)、振幅および音節の平均持続時間等の要素を含む。
このような空白時間とその前の発話音声の特徴によって規定される間パターンに見合う間の状況が検出されたとき、当該間パターンに基づく言葉および身振りが対話に挿入される。具体的には、この実施例では、最終発話者、条件(I)および空白時間条件(t)に合う対話後の空白時間が生じた場合に、当該パターンで指定された発話者側から間機能言葉が発せられる。また、発話者の代わりに当該間機能言葉を発する対話装置12がロボット12bである場合には、当該出力する言葉に対応する身振りも動作コマンドに従って再現される。
間機能言葉は、無音時間に挿入されることによって無音を間として機能させ会話に適切な間を与えるための言葉である。たとえば、応答、合の手、間投詞などの言葉であってよい。図4では、「うんうん」、「うーん」、「はいはい」および「えーと」などが間機能言葉として示される。また、各間機能言葉には、当該言葉とともに提示される身体動作を実行するための動作コマンドが対応付けられている。図4では、「うんうん」には「うなづく」のコマンド、「うーん」には「首傾げる」のコマンド、「はいはい」には「うなづく」のコマンド、「えーと」には「視線を上方に向ける」コマンドがそれぞれ対応付けられる。
なお、図4において、発話者は、人間である対話者を意味しており、当該間機能言葉を出力する対話装置12は、この発話者の相手側の場所に存在する対話装置12である。たとえば、図4の一番上のパターンの場合、最後の発話者が対話者Aであり、間機能言葉を出力する対話装置は、発話者Bの相手である対話者A側の対話装置12aとなる。一番上のパターンは「うんうん」という言葉と「うなづく」行動に対応付けられており、最終発話者の相手側である発話者が応答する動作を、最終発話者側に存在するロボット12bが表現することで、間が与えられる。一方、上から2番目のパターンは「うーん」という言葉と「首を傾げる」行動に対応付けられており、最終発話者の相手側に存在するロボット12bが発話および身振りをさらに続けることによって、間が与えられる。
間パターンを用いた照合の結果、現在の間の状況にマッチする間パターンデータが間パターンDB94に存在する場合には、つまり、間パターンに従って適切な間を取る必要がある状況であると判断される場合には、サーバ14は、必要な対話装置12に間を取るための言葉の再生を指示する。この実施例では、当該言葉の音声データと再生指示とが送信される。これに応じて、当該対話装置12側で当該音声が出力される。さらに、対話装置12が身体表現可能な対話装置12bである場合には、サーバ14は当該間を取るための言葉に対応する身振りの実行を指示する。この実施例では、当該身振りに動作コマンドと再生指示とが送信される。これに応じて、当該対話装置12bでは、対応する身体部位が動かされて当該身振りが実行される。
このように、対話に無発話状態(無音状態)が検出されたときに、現在の間の状況と間パターンとの照合を行うようにした。そして、必要があれば適切な間を取るように言葉や身振りを空白時間に挿入するようにしたので、対話における空白時間を適切な時間に維持することができる。このため、遅延によって対話における空白時間が長くなって対話者に違和感を与えてしまうようなことを回避できる。したがって、対話者は発話のタイミングを計りやすくなり、両対話者の発話が重複する事態が生ずるのを防止することができる。このように、言葉や身振りの挿入によって対話者の発話タイミングを制御することができるので、対話を継続させたり発話を促進したりすることができるし、自然な会話の流れを作り出すことができる。したがって、円滑な対話を成立させることができる。
また、このシステム10では、万一両対話者の発話が重複した場合には、一方の発話の出力を遅らせることによって、両発話が完全に重なってしまうのを回避する機能を備えるようにしている。
具体的には、対話装置12aで音声が検出された場合において、前検出時刻の相手の状態フラグがSPEAKINGフラグであるときには、つまり、両者の発話が重複している場合には、対話装置12aは、マイク16で検出した音声の録音を開始し、当該音声データを音声ファイルとしてメモリに記憶する。さらに、対話装置12aは、RECORDINGフラグをサーバ14に送信し、これに応じて、サーバ14は発話フラグテーブルに当該対話装置12aの当該検出時刻tにおける状態として当該RECORDINGフラグを記憶する。REDORDINGフラグは、音声データを録音中であり、当該音声が相手側に送信されていない状態を意味する。
また、対話装置12aは、メモリのRECORDフラグをオンにして、自分の処理状態として、音声を録音中であることを記憶する。
また、サーバ14の発話フラグテーブルでは、録音した音声ファイルの再生を制御するための情報としてPLAYフラグが記憶される。この実施例では、対話装置12aは、録音しているときは、PLAYフラグの値に1を加算するようにサーバ14に指示する。PLAYフラグの初期値は0であり、録音が行われているときは毎検出時刻ごとに前の検出時刻の値に1だけ加算され、録音が行われていないときには前の検出時刻の値が維持される。
その後、対話装置12aで音声が検出されなくなったときには、録音した音声ファイルがサーバ14に送信される。これに応じて、サーバ14は、受信した音声ファイルを、当該録音が行われた検出時刻tに対応付けてメモリに記憶する。発話フラグテーブルでは、当該音声ファイルを格納した記憶位置が記憶される。なお、音声ファイルにはサーバ14に送信される前に音声解析処理が施され、当該解析データがサーバ14に送信されて音声解析履歴DB92に記憶される。
サーバ14は、両対話装置12とも音声を出力していないことが検出された場合、つまり、両対話者の状態のいずれにもSPEAKINGフラグが記憶されていないことが検出された場合、いずれかの対話者の音声ファイルが再生されずに記憶されているか否かを判定する。未再生の録音ファイルが残っている場合、つまり、PLAYフラグの値が1以上である場合には、録音の開始された時刻の早い方の音声ファイルの再生が実行される。具体的には、サーバ14は、当該ファイルの再生が終了するまで、音声データと再生指示とを相手側の対話装置12に送信する。これに応じて、対話装置12は、受信した音声データに基づいて、当該音声を出力する。
このようにして、両対話者の発話が重複した場合には、後から発話し始めた側の音声を録音し、その後両方の発話が終了したときに、当該録音音声を相手側で出力することができる。なお、両発話が同時に始まった場合には優先順位に従って音声を遅延再生できる。したがって、重複したときの発話の出力を遅らせることができるので、円滑な遠隔地間対話を成立させることができる。
図5には、サーバ14に記憶される発話フラグテーブルの一例が示される。発話フラグテーブルでは、検出時刻tごとに、ユーザ、状態フラグ、対象、保存音声ファイルの記憶位置、保存コマンドファイルの記憶位置、およびPLAYフラグ等の情報が記憶される。ユーザ情報は、当該データの主体であり、たとえばAは当該データが対話装置12aの状態であることを意味し、Bは当該データが対話装置12bの状態であることを意味する。また、対象は、ユーザの発話対象を示す。
状態フラグは、対話装置12での音声取得状態および音声出力状態を示し、上述のように、SPEAKINGフラグ、SILENTフラグ、RECORDINGフラグが記憶される。なお、図5の時刻t=T+2ΔTでは、状態フラグはINTERPOLATINGフラグである。上述のように、両対話者の状態フラグがSILENTフラグであった場合において、間パターンに従って間機能言葉が挿入されたときには、当該時刻の状態フラグとして、このINTERPOLATINGフラグが上書きされるようになっている。これによって、当該検出時刻が、対話における空白時間としては計測されなくなる。
保存音声ファイルは、録音された音声ファイルの記憶位置を示している。たとえば、図5では、時刻T+4ΔTおよび時刻T+5ΔTにおいて、ユーザAの状態フラグとしてRECORDINGフラグが記憶されており、当該時刻の録音に対応する音声ファイルの保存場所が示されている。また、時刻T+4TでのPLAYフラグは1であり、録音が開始されたことを意味し、次の時刻T+5TでのPLAYフラグは2であり、録音が継続されていることを意味し、その次の時刻T+6TでのPLAYフラグは2のままであり、録音が終了されていることを意味する。
なお、保存コマンドファイルは、録音が行われている間に、ユーザによって当該対話装置12aで入力された動作コマンドを記録したファイルの記憶位置を示している。このコマンドファイルは音声ファイルと一緒に相手側対話装置12bに送信され、したがって、対話装置12bでは、録音した音声とともに入力指示された身振りが実行される。
図6から図9には、対話装置12のCPUの入力処理における動作の一例が示される。入力処理を開始すると、図6の最初のステップS1では、初期化が行われる。たとえば、SENDフラグがオフされ、RECORDフラグがオフされ、また、時刻(またはフレーム番号)tに現在の時刻T(または初期値T)が代入される。続くステップS3から図9のステップS69までの処理は一定時間ΔTごとに、たとえば1フレームごとに繰り返し実行される。
ステップS3では、マイク16または20の入力をチェックし、ステップS5で当該入力データに基づいて、音声入力があるか否かを判断する。ステップS5で“YES”であれば、つまり、対話者が発話している場合には、ステップS7で、サーバ14の発話フラグテーブルを参照する。たとえば、対話装置12は発話フラグの要求をサーバ14に送信する。サーバ14はこれに応じて発話フラグテーブルのデータを当該対話装置12に送信する。対話装置12は発話フラグテーブルデータを受信してメモリに記憶する。なお、開始後には音声入力の無い状態が続くので、最初の発話の前には発話フラグテーブルには両対話者の状態としてSILENTフラグが記憶されている。
続いて、ステップS9で、間計測処理を実行する。この間計測処理の動作の一例は図10に詳細に示される。間計測処理を開始すると、図10の最初のステップS81では、発話フラグテーブルに基づいて、現時刻tのΔT前の時刻における自分の状態フラグがSILENTフラグであるか否かを判断する。このステップS81では、現在の検出時刻で音声入力があり、かつ、前回の検出時刻で音声入力がなかったか否かを判断している。つまり、この対話装置12側のユーザが話し始めたタイミングであるか否かを判断している。
ステップS81で“YES”であれば、今回話し始めるまでの2種類の間を発話フラグテーブルに基づいて計測する。具体的には、ステップS83で、自分が前に言葉を話し終えてから話し始めるまでの空白時間を計測する。また、ステップS85で、相手が言葉を話し終えてから自分が話し始めるまでの空白時間を計測する。そして、ステップS87で、計測データをサーバ14に送信する。これに応じて、サーバ14は間計測データを記憶する。ステップS87を終了し、または、ステップS81で“NO”である場合には、処理は図6のステップS11に戻る。
このようにして、間の計測データの履歴をサーバ14で記憶していくことによって、対話者がどのような間を取りながら対話を行っているかをサーバ14で記録することができる。この間の履歴データと音声解析履歴データから、間のパターンを抽出することができる。
続いて、図6のステップS11では、発話フラグテーブルに基づいて、ΔT前のときの対話相手のフラグがSPEAKINGフラグであるか否かを判断する。このステップでは、相手が話しているのに、この対話装置12側の対話者も発話をしているのか否かを判断している。ステップS11で“YES”であれば、つまり、両対話者の発話が重複した場合には、ステップS13で、RECORDフラグはオンであるか否かを判断する。
ステップS13で“NO”であれば、つまり、発話の重複が始まったばかりである場合には、ステップS15で、音声の録音を開始し、取得した音声データを音声ファイル化してメモリに記憶する。たとえば、音声データはPCM方式データであり、音声ファイルはWAVE形式であってよい。なお、音声データを送信前に適宜な方式で圧縮し、再生前に復号するようにしてよい。また、ステップS17で、メモリのRECORDフラグをオンにして、録音中であることを記憶する。
なお、相手が先に話し始めている場合には、対話装置12は相手側から音声を受信してスピーカから出力しているので、この対話装置12側の対話者は、通常は無理に発話を続けずに、自分の発話を止めて相手の音声を聞くと考えられる。このため、録音される音声は非常に短時間のものになると考えられるので、この実施例では、音声は録音完了後に一括してサーバ14へ送信するようにしている。しかし、他の実施例では、その都度サーバ14に音声を送信するようにしてもよい。
一方、ステップS13で“YES”であれば、つまり、既に録音を開始している場合には、ステップS19で、ステップS15で開始された録音を継続し、取得した音声データを音声ファイルに記憶する。
ステップS17またはS19を終了すると、ステップS21で、サーバ14の発話フラグテーブルにRECORDINGフラグを記録する。具体的には、対話装置12は、時刻t、発話者(この対話装置12の識別情報)、対象(相手側対話装置12の識別情報)等の情報とともに、録音中であることを示す情報(RECORDINGフラグ)をサーバ14に送信する。これに応じて、サーバ14は、受信した情報に基づいて、発話フラグテーブルに、時刻、発話者、対象およびRECORDINGフラグを記憶する。
なお、システム10が3つ以上の対話装置12を含む場合、発話の対象(相手側対話装置12の識別情報)を入力装置の操作等によって選択できるようにしてもよい。
さらに、ステップS23で、サーバ14の発話フラグテーブルのPLAYフラグに、ΔT前の値に1を加算した値を記録する。具体的には、対話装置12は、時刻t、発話者および対象等の情報とともに、PLAYフラグの増加指示をサーバ14に送信する。これに応じて、サーバ14は、発話フラグテーブルのPLAYフラグの時刻tの1つ前の値を読み出して、この値に1を加算し、当該算出値を時刻tのPLAYフラグの値として記憶する。未再生の音声ファイルが残っていない状態で録音が開始されたときは、PLAYフラグに1が記憶され、録音が継続中である限りPLAYフラグの値は時刻tの進行に合わせて1つずつ増加される。ステップS23を終了すると、処理は図9のステップS59に進む。
一方、ステップS11で“NO”である場合には、処理は図7のステップS25に進む。つまり、この対話装置12側の対話者が発話している場合において、1つ前の時刻で相手側が発話の無い状態、または録音中であるときは、この対話装置12側の対話者の音声を相手に聞かせる。
また、ステップS5で“NO”である場合には、つまり、この対話装置12側で対話者が発話していない場合には、処理は図8のステップS35に進む。
図7のステップS25では、サーバ14の発話フラグテーブルにSPEAKINGフラグを記録する。具体的には、対話装置12は、時刻t、発話者、対象等の情報とともに、発話中であることを示す情報(SPEAKINGフラグ)をサーバ14に送信する。これに応じて、サーバ14は、受信した情報に基づいて、発話フラグテーブルに、時刻、発話者、対象およびSPEAKINGフラグを記憶する。
続くステップS27で、取得した音声データを音声ファイル化して、メモリにローカルファイルとして記憶する。また、ステップS27で、取得した音声データとその再生指示を相手側の対話装置12に直接(すなわちサーバ14を介さずに)送信する。相手側の対話装置12は、音声データと再生指示を受信すると、当該音声データの再生処理を実行して、当該音声をスピーカ18または22から出力する。このようにして、この対話装置12側のみで発話が行われている場合、あるいは相手側が録音中である場合には、この対話装置12側の音声がローカルファイルに記録されつつ相手側に直接送信され、相手側の対話装置12で直ちに当該音声が再生されて出力される。
また、ステップS31では、メモリのSENDフラグをオンにして、送信中であることを記憶する。さらに、ステップS33では、サーバ14の発話フラグテーブルのPLAYフラグに、ΔT前の値をそのまま記録する。具体的には、対話装置12は、時刻t、発話者および対象等の情報とともに、PLAYフラグの維持指示をサーバ14に送信する。これに応じて、サーバ14は、発話フラグテーブルのPLAYフラグの時刻tの1つ前の値を読み出して、この値を時刻tのPLAYフラグの値として記憶する。このように、録音中でない場合には、PLAYフラグの値として前回の値が維持される。ステップS33を終了すると、処理は図9のステップS59に進む。
この対話装置12で音声入力が行われていない場合には、図8のステップS35で、RECORDフラグがオンであるか否かを判断する。ステップS35で“YES”であれば、つまり、1つ前の時刻まで録音が行われていた場合には、ステップS37で、音声ファイルへの音声の録音を終了する。また、ステップS39で、音声の録音中に入力装置を用いて入力された動作コマンドのコマンドファイルへの記録を終了する。さらに、ステップS41で、メモリのRECORDフラグをオフにする。
そして、ステップS43で、録音した音声ファイルに対する音声解析処理を実行する。この音声解析処理の動作の一例が図11に詳細に示される。なお、図8のステップS53で実行される音声解析処理の動作も同じである。
音声解析処理を開始すると、図11のステップS91で、メモリに録音された音声ファイルを読み込む。なお、図8のステップS53で実行される場合には、このステップS91では、ローカルファイルの音声データを読み込む。
次に、ステップS93で、読み込んだ音源の基本周波数(ピッチ)および振幅を算出する。また、ステップS95では、音声データを音節に分割する処理を試みる。そして、ステップS97で、分割した音節が存在するか否かを判断する。ステップS97で“YES”であれば、続くステップS99で、当該音節の持続時間を算出する。さらに、当該音節の持続時間の平均を算出する。ステップS99を終了すると、ステップS97に戻って、分割した音節が残っている場合には、当該音節についてステップS99の処理を繰返す。ステップS97で“NO”であれば、ステップS101で、音声解析データをサーバ14に送信する。したがって、音声解析データは、基本周波数、振幅、および音節の平均持続時間等の情報を含む。この音声解析データは、たとえば、時刻、発話者、対象等の情報に対応付けられてサーバ14に送信される。これに応じて、サーバ14は、受信した音声解析データを音声解析履歴DB92に記憶する。このようにして、発話音声の特徴が抽出されて、その履歴が記録される。ステップS101を終了すると、この音声解析処理を終了して、図8のステップS45(ステップS43の場合)、またはステップS55(ステップS53の場合)へ戻る。
ステップS43を終了すると、ステップS45で、録音した音声ファイルとコマンドファイルとをサーバ14に送信する。音声ファイルとコマンドファイルとは、たとえば時刻、発話者、対象等の情報に対応付けられてサーバ14に送信される。これに応じて、サーバ14は、受信した音声ファイルとコマンドファイルとをメモリの所定領域に保存する。発話フラグテーブルでは、録音された時刻の保存音声ファイル情報として、音声ファイルの記憶位置が登録されるとともに、同時刻の保存コマンドファイル情報として、コマンドファイルの記憶位置が登録される(図5参照)。ステップS45を終了すると処理はステップS55に進む。
一方、ステップS35で“NO”であれば、ステップS47でSENDフラグがオンであるか否かを判断する。ステップS47で“YES”であれば、つまり、1つ前の時刻まで音声を相手側の対話装置12に送信していた場合には、ステップS49で、音声のローカルファイルへの記録を終了し、ステップS51で、メモリのSENDフラグをオフにする。そして、ステップS53で、ローカルファイルの音声データに対して、上述のような図11の音声解析処理を実行する。ステップS53を終了すると、または、ステップS47で“NO”である場合には、処理はステップS55へ進む。
ステップS55では、サーバ14の発話フラグテーブルにSILENTフラグを記録する。具体的には、対話装置12は、時刻t、発話者、対象等の情報とともに、音声入力が無いことを示す情報(SILENTフラグ)をサーバ14に送信する。これに応じて、サーバ14は、受信した情報に基づいて、発話フラグテーブルに、時刻、発話者、対象およびSILENTフラグを記憶する。
また、ステップS57で、図7のステップS33と同様にして、サーバの発話フラグテーブルのPLAYフラグに、ΔT前の値をそのまま記録する。ステップS57を終了すると、処理は図9のステップS59へ進む。
図9のステップS59からS67では、相手側の対話装置12がロボット12bである場合の処理である。したがって、相手側がロボット12bでない場合には、これらの処理は行われなくてよい。
図9のステップS59では、動作コマンドの入力をチェックする。具体的には、入力装置からの入力データを取得して、ロボット12bの身振りのための動作コマンドが選択されたか否かを判定する。たとえば、動作コマンドはディスプレイに選択可能なリストとして表示されてよい。なお、この対話装置12がロボット12bである場合には、入力装置とディスプレイを設ける必要がある。
そして、ステップS61で、選択された動作コマンドがあるかどうかを判断し、“YES”であれば、ステップS63で、メモリのRECORDフラグがオンであるか否かを判断する。ステップS63で“YES”であれば、つまり、音声録音中の場合には、ステップS65で、動作コマンドをメモリのコマンドファイルに記憶する。このように、音声を録音している場合には、動作コマンドの入力も同時に記録して、録音終了後に上述のステップS45でサーバ14に送信するようにしているので、両対話者の発話が重複した場合には、発話と身振りに対して同時に遅延を与えてから相手側で再生することができる。
一方、ステップS63で“NO”であれば、ステップS67で、動作コマンドと再生指示とを相手側の対話装置12bに直接送信する。相手側の対話装置12bは、動作コマンドと再生指示を受信すると、当該動作コマンドに対応するプログラムおよびデータに従って動作し、その身振りを実行する。
ステップS65またはS67を終了したとき、またはステップS61で“NO”の場合には、ステップS69で、所定時間ΔT(たとえば1フレーム)を加算することで時刻(あるいはフレーム番号)tを更新する。そして、図6のステップS3に戻って、次の時刻tにおける処理を繰返す。このようにして、対話装置12では、この対話装置12側の対話者の発話の状態および相手側の発話の状態に応じた処理が実行される。
図12にはサーバ14の継続促進処理における動作の一例が示される。また、図13には、サーバ14の遅延再生処理における動作の一例が示される。
なお、サーバ14の他の処理、たとえば受信処理、発話フラグテーブルの作成処理および送信処理などのフロー図は省略する。サーバ14は上述のような各処理を並列的に実行している。サーバ14は、上述のように、対話装置12からデータを受信したときは、当該データをメモリに記憶し、必要に応じて当該データに対応する所定の処理を実行する。たとえば、サーバ14は、対話装置12から発話や処理の状態に関するデータを受信したときは発話フラグテーブルを作成する。音声ファイルおよび動作コマンドファイル等を受信したときは、これらのファイルを記憶するとともに、発話フラグテーブルに記憶位置を書き込む。音声解析データを受信したときは、当該データを音声解析履歴DB92に記憶する。また、対話装置12から発話フラグテーブルの要求があったときは、当該対話装置12に発話フラグテーブルを送信する。
図12に示す継続促進処理では、サーバ14のCPUは、ステップS111で初期化を実行し、たとえば変数tに初期値Tを設定する。この初期値Tは発話フラグテーブルの時刻tの最初の値Tであり、つまり、対話装置12における時刻tの初期値Tである。したがって、継続促進処理は発話フラグテーブルの作成後に実行される。続くステップS113からS135の処理をサーバ14のCPUは一定時間ΔTごとに、たとえば1フレームごとに繰り返し実行する。
ステップS113では、メモリの発話フラグテーブルを参照する。たとえば現時刻tのデータを読み出す。そして、ステップS115で、対話者同士でSILENTフラグであるか否かを判断する。たとえば、現時刻tにおいてユーザと発話対象が互いに対になっている両対話者が存在しており、かつ、当該両対話者の状態フラグがSILENTフラグであることを判定する。たとえば図5では、時刻T+ΔTのときがこの状態に相当する。
ステップS115で“YES”であれば、つまり、対話において無音状態になっている場合には、ステップS117で、空白時間を算出する。たとえば、現時刻t以前の発話フラグテーブルのデータを読み出して、現時刻tから遡って両対話者のどちらかの状態フラグがSILENTフラグでなくなるまでに掛かった時間(またはフレーム数)を算出する。
続いて、ステップS119で、音声解析履歴DB92から対話者らの最新のデータを抽出する。具体的には、現時刻tに最も近い時刻の発話者の音声解析データから、基本周波数、振幅および音節の平均持続時間等を読み出す。このように、ステップS117とS119で、少なくとも空白時間と当該空白前の発話音声の特徴を含む間の状況が検出される。
そして、ステップS121で、現在の間の状況と間パターンとの照合を実行して、ステップS123で、現在の対話の間の状況にマッチする間パターンがあるか否かを判断する。上述の図4のように、間パターンデータ内には、空白時間(t)および条件(I)設定されているので、このような間パターンに合う空白時間および発話音声の特徴(基本周波数、振幅、音節の平均持続時間など)を有する間の状況(すなわち、最終発話者の発話後の無音状態)が生じているか否かを判定する。マッチする間パターンがある場合には、当該間パターンに対応する間機能言葉を選択する。また、間パターンデータに設定されている最終発話者と発話者との関係(相手か自分か)に基づいて、間機能言葉を発話させる対話装置12を特定する。
ステップS123で“YES”であれば、つまり、現在の対話における間の状況が、間パターンに基づく間を挿入すべき状況になっていると判定される場合には、ステップS125で、選択した間機能言葉の音声ファイルをメモリの作業領域に読み出して、ピッチ、抑揚パターンを調整して、当該調整した間機能言葉の音声ファイルを生成する。これによって、発話者の発話の特徴(たとえば、高揚した口調、淡々とした発話など)に合わせた間機能言葉を出力することが可能になる。したがって、会話に合成音声が挿入されても対話者に違和感をさほど覚えさせないようにすることができるし、また、それまでの会話の調子や流れを継続させることができる。
また、ステップS127で、選択された間機能言葉に適した動作コマンドを選択する。この実施例では、間パターンデータにおいて、間機能言葉に対応する動作コマンドが登録されているので、当該動作コマンドを選択する。
そして、ステップS129で、音声ファイルと動作コマンドファイルを、発話させる対話装置12に送信する。ファイル送信後、ステップS131で、音声と動作の再生指示を同じ対話装置12に送信する。これによって、対話における無音領域に言葉や身振りを挿入することができる。なお、その対話装置12は、音声ファイルの再生を実行し、当該音声を出力する。また、対話装置12がロボット12bである場合には、さらに動作コマンドの再生を実行し、当該動作コマンドに対応する身振りを行う。
さらに、ステップS133で、発話フラグテーブルにおいて、現時刻tの状態フラグにINTERPOLATINGフラグを上書きする(図5の時刻T+2ΔTを参照)。これによって、以降のステップS117では、当該時刻tが無音であるとは見なされないようにすることができる。
一方、ステップS123で“NO”である場合には、つまり、未だ、間パターンに従った間を与える必要がない場合には、処理はそのままステップS135に進む。ステップS135では、所定時間ΔT(たとえば1フレーム)を加算することで時刻(あるいはフレーム番号)tを更新する。なお、このサーバ14におけるΔTは対話装置12におけるΔTと同一である。そして、ステップS113に戻って、次の時刻tにおける処理を繰返す。このようにして、対話において無音が検出された場合には、必要に応じて言葉や身振りを挿入することによって、無音時間を適切な間に変えることができる。
図13に示す遅延再生処理では、サーバ14のCPUは、ステップS151で初期化を実行する。たとえば、PLAYINGフラグをオフにする。PLAYINGフラグは録音された音声ファイルおよび動作コマンドファイルを再生中であるか否かを示す。また、図12の継続促進処理と同様に、変数tに初期値Tを設定する。この初期値Tは発話フラグテーブルの時刻tの最初の値Tであり、つまり、対話装置12における時刻tの初期値Tである。したがって、この遅延再生処理も発話フラグテーブルの作成後に実行される。続くステップS153からS179の処理をサーバ14のCPUは一定時間ΔTごとに、たとえば1フレームごとに繰り返し実行する。
ステップS153では、メモリの発話フラグテーブルを参照する。ステップS155で、メモリのPLAYINGフラグがオンであるか否かを判断する。ステップS115で“NO”であれば、つまり、再生中ではない場合には、ステップS157で、現時刻tにおける両対話者のどちらかの状態フラグとしてSPEAKINGフラグがあるか否かを判断する。ステップS157で“YES”の場合、一方が発話をしており、その音声が他方の対話装置12から出力されているはずである。したがって、遅延再生は行わず処理はステップS179に進む。
一方、ステップS157で“NO”であれば、つまり、両対話装置12で音声が出力されていない場合には、ステップS159で、両対話者のどちらかのPLAYフラグが1以上であるか否かを判断する。ステップS159で“NO”であれば、録音されたが未再生である音声ファイルが存在しないので、処理はそのままステップS179に進む。
しかし、ステップS159で“YES”であれば、つまり、録音されたが未再生の音声ファイルが残っている場合には、ステップS161で、PLAYフラグが1である時刻tが早いユーザを発話フラグテーブルから参照する。つまり、録音を開始した時刻が早いユーザを特定する。なお、録音の開始が両対話者で同時刻である場合には、予め設定しておいた優先順位(たとえばB>A)に基づいて、ユーザを特定する。
続いて、ステップS164で、再生のための設定を実行し、変数Fに1を設定し、変数Uに特定したユーザを設定する。変数Fは音声再生のためのフレームカウンタである。また、ステップS165で、メモリのPLAYINGフラグをオンにして、再生中であることを記憶する。そして、ステップS167で、変数UのPLAYフラグが変数Fの値である音声および動作を再生する。具体的には、当該音声ファイルを読み出して、当該ユーザの相手側の対話装置12に音声ファイルと再生指示とを送信する。なお、当該動作コマンドファイルも保存されている場合には、当該動作コマンドファイルも読み出して、音声ファイルと一緒に相手側の対話装置12に送信する。これに応じて、当該対話装置12は、音声ファイルおよび動作コマンドファイルを記憶するとともに、その再生を実行する。これによって、音声がスピーカ18または22から出力され、動作コマンドもあった場合には、当該身振りも実行される。このようにして、録音されていた音声および記憶されていた動作の再生が開始される。
ステップS167を終了すると、処理はステップS179へ進む。ステップS179では、時刻tに所定時間ΔTが加算されて時刻tが更新される。ステップS179を終了すると、処理はステップS153へ戻って、次の時刻tにおける処理を繰返す。
再生が開始されると、ステップS155で“YES”と判断され、続くステップS169で、時刻tにおける変数UのPLAYフラグが変数Fの値に等しいか否かを判断する。上述のように、録音が終了した場合には、PLAYフラグの値は前時刻の値を維持するので、このステップS169では、再生中の音声ファイルの再生を完了したか否かを判定している。
ステップS169で“NO”であれば、つまり、音声ファイルの再生が未だ完了していない場合には、ステップS171で、変数Fをインクリメントする。その後、ステップS173で、変数UのPLAYフラグが変数Fの値である音声および動作を再生する。これによって、上述のステップS167と同様にデータが送信され、次のフレームの音声および動作が対話装置12で再生される。ステップS173を終了すると、処理はステップS179へ進む。
一方、ステップS169で“YES”であれば、つまり、音声ファイルの再生を完了した場合には、ステップS175で、メモリのPLAYINGフラグをオフにする。また、ステップS177で、変数UのPLAYフラグの値を全て変数Fの値だけ減算する。なお、減算の結果、値が負になったとき、当該PLAYフラグの値は0に設定される。これによって、再生された変数Uおよび時刻tのPLAYフラグの値がすべて0になる。また、当該変数Uのユーザの未再生の音声ファイルが存在する場合には、当該ユーザの最も古く録音された音声ファイルのうち最も早い時刻のPLAYフラグの値が1になる。したがって、次回は、当該未再生の音声を再生することが可能になる。ステップS177を終了すると、処理はステップS179へ進む。
このようにして、両対話者の発話の重複によって録音された音声および記録された動作コマンドを、後から再生することができる。
図14には、対話装置12のCPUの出力処理の動作の一例が示される。この出力処理は上述の図6から図9の入力処理と並列的に実行される。また、この出力処理は一定時間ごと、たとえば1フレームごとに繰り返し実行される。
ステップS191では、音声を受信したか否かが判断され、“YES”であれば、ステップS193で、受信した音声ファイルないし音声データをメモリに記憶する。
続いて、ステップS195では、動作コマンドを受信したか否かが判断され、“YES”であれば、ステップS197で、受信した動作コマンドファイルをメモリに記憶する。
続いて、ステップS199では、再生指示を受信したか否かが判断され、“YES”であれば、ステップS201で、音声を再生する。具体的には、対話装置12のCPUは、受信した音声ファイルを再生を開始し、当該音声データを音声入出力ボードに与えてスピーカから当該音声を出力する。また、当該対話装置12が身体動作機能を有する対話装置12bである場合には、ステップS203で、動作を再生する。具体的には、当該動作コマンドに従って対応する身振りを実行する。動作コマンドに対応する身振りを実行するためのプログラムおよび制御データは、対話装置12bのメモリ70に予め記憶されている。CPU66は動作コマンドに対応するプログラムに従って制御データをモータ制御ボード72に与えて、対応するモータを制御する。これによって対応する身体部位が動かされて所定の身振りが表現される。
なお、上述の実施例では、両対話者の発話が重複したとき、後から発話された方の音声を録音して、その後どちらも発話しなくなってから、当該録音音声を相手側で出力するようにしていた。しかし、他の実施例では、両対話者の発話が重複したときには、後から発話された方の音声をキャンセルするようにしてもよい。
また、上述の各実施例では、間機能言葉の音声データをサーバ14が記憶しておいて、サーバ14から対話装置12に送信するようにしていた。しかし、他の実施例では、間機能言葉の音声データを各対話装置12に予め記憶させておいて、サーバ14から再生すべき間機能言葉を指定する情報を送信するようにしてもよい。
また、上述の各実施例では、システム10は、身体動作機能を有しない対話装置12aと身体動作機能を有する対話装置12bとを含んでいた。しかし、他の実施例では、身体動作機能を有しない対話装置12aのみが使用されてよく、この場合には、動作コマンド関連の処理が不要である。逆に、身体動作機能を有する対話装置12bのみが使用されてもよい。
また、上述の各実施例では、システム10は対話装置12とは別に各対話装置12の音声取得状態および音声出力状態を示す情報(すなわち発話フラグテーブル)を管理するサーバ14を備えた。しかし、他の実施例では、サーバ14を別途に設けずに、サーバ14の機能(発話フラグテーブルの管理、継続促進処理、遅延再生処理など)を一方の対話装置12に備えさせるようにしてよいし、あるいは2つの対話装置12に分散して備えさせるようにしてもよい。