(57)【特許請求の範囲】
【請求項１】
顔を有する頭部と下半身を備えるアンドロイドロボットを制御するシステムであって、
笑い声を発話する笑い区間が開始するとき前記顔の表情動作を開始させる表情動作開始 手段、
前記笑い区間が終了してから所定時間後に前記表情動作を終了させる表情動作終了手段、および
前記笑い区間において前記下半身を動作させる下半身動作手段を備える、アンドロイドロボット制御システム。
【請求項２】
前記表情動作終了手段は、平常時の顔の表情に戻す表情戻し手段を含む、請求項１記載のアンドロイドロボット制御システム。
【請求項３】
前記表情動作終了手段は、前記表情戻し手段によって平常時の顔の表情に戻す前に、緩衝的な表情を挿入する表情挿入手段を含む、請求項２記載のアンドロイドロボット制御システム。
【請求項４】
前記顔は目および口唇を有し、
前記表情動作開始手段は、目を細める表情および口角を上げる表情の少なくとも一方を開始させる、請求項１ないし３のいずれかに記載のアンドロイドロボット制御システム。
【請求項５】
前記笑い区間において前記頭部を動作させる頭部動作手段をさらに備える、請求項１ないし４のいずれかに記載のアンドロイドロボット制御システム。
【請求項６】
前記アンドロイドロボットは上半身を含み、
前記笑い区間において前記上半身を動作させる上半身動作手段をさらに備える、請求項1ないし５のいずれから記載のアンドロイドロボット制御システム。
【請求項７】
顔を有する頭部と下半身を備えるアンドロイドロボットを制御する装置であって、
笑い声を発話する笑い区間が開始するとき前記顔の表情動作を開始させる表情動作開始手段、
前記笑い区間が終了してから所定時間後に前記表情動作を終了させる表情動作終了手段、および
前記笑い区間において前記下半身を動作させる下半身動作手段を備える、アンドロイドロボット制御装置。
【請求項８】
顔を有する頭部と下半身を備えるアンドロイドロボットを制御するシステムのコンピュータによって実行されるプログラムであって、
前記コンピュータを、笑い声を発話する笑い区間が開始するとき前記顔の表情動作を開始させる表情動作開始手段、前記笑い区間が終了してから所定時間後に前記表情動作を終了させる表情動作終了手段、および前記笑い区間において前記下半身を動作させる下半身動作手段として機能させる、アンドロイドロボット制御プログラム。
【請求項９】
顔を有する頭部と下半身を備えるアンドロイドロボットを制御するシステムにおいて前記システムが実行する制御方法であって、
笑い声を発話する笑い区間が開始するとき前記顔の表情動作を開始させる表情動作開始ステップ、
前記笑い区間が終了してから所定時間後に前記表情動作を終了させる表情動作終了ステップ、および
前記笑い区間において前記下半身を動作させる下半身動作ステップを含む、アンドロイドロボット制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明はアンドロイドロボットの制御システム、装置、プログラムおよび方法に関し、特にたとえば、笑い声に伴うアンドロイドロボットの動作を制御する、アンドロイドロボットの制御システム、装置、プログラムおよび方法に関する。
【背景技術】
【０００２】
笑いは日常会話で頻繁に発生し、人対人のコミュニケーションにおいて重要な役割を果たし、人対ロボットのインタラクションにおいても重要な役割を担うと考えられる。人の姿を持つアンドロイドロボットの場合は、人らしい振る舞いが要求され、笑いに伴う自然な動作を生成することが重要である。
【０００３】
非特許文献１‐３に示すように、発明者等はこれまでアンドロイドロボットを用いた研究開発を進め、発話音声に伴う口唇動作および頭部動作における人らしい自然な動作生成に関して追究してきた。しかしながら、笑い声に伴う自然な動作生成に関しては手つかずの状態であった。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】石井カルロス寿憲, 劉超然, 石黒浩, 萩田紀博: “遠隔存在感ロボットのためのフォルマントによる口唇動作生成手法”, 日本ロボット学会誌, vol. 31, no. 4, pp.83-90, Apr. 2013.
【非特許文献２】Ishi, C.T., Liu, C., Ishiguro, H., and Hagita, N. (2010).“Head motion during dialogue speech and nod timing control in humanoid robots,” Proceedings of 5th ACM/IEEE International Conference on Human-Robot Interaction (HRI 2010), 293-300.
【非特許文献３】Liu, C., Ishi, C., Ishiguro, H., Hagita, N. (2013). Generation of nodding, head tilting and gazing for human-robot speech interaction. International Journal of Humanoid Robotics (IJHR), vol. 10, no. 1, January, 2013.
【発明の開示】
【発明が解決しようとする課題】
【０００５】
アンドロイドロボットを用いた従来の遠隔操作システムでは、笑顔を形成する機能は存在するが、思わず笑ってしまった不随意的な笑いでは、操作者が笑い動作ボタンを押すタイミングを逃してしまう問題がある。また、笑い方によってもそれに伴う動作は変わる。したがって、笑いイベントを検出し、それに適した笑い動作を自動的に生成することが重要となる。
【０００６】
それゆえに、この発明の主たる目的は、新規な、アンドロイドロボットの制御システム、装置、プログラムおよび方法を提供することである。
【０００７】
この発明の他の目的は、笑い声に伴う自然な動作を生成できる、アンドロイドロボットの制御システム、装置、プログラムおよび方法を提供することである。
【課題を解決するための手段】
【０００８】
この発明は、上記の課題を解決するために、以下の構成を採用した。なお、括弧内の参照符号および補足説明等は、本発明の理解を助けるために後述する実施の形態との対応関係を示したものであって、本発明を何ら限定するものではない。
【０００９】
第１の発明は、顔を有する頭部および下半身を備えるアンドロイドロボットを制御するシステムであって、笑い声を発話する笑い区間が開始するとき顔の表情動作を開始させる表情動作開始手段、笑い区間が終了してから所定時間後に表情動作を終了させる表情動作終了手段、および笑い区間において下半身を動作させる下半身動作手段を備える、アンドロイドロボット制御システムである。
【００１０】
第１の発明では、アンドロイドロボット制御システム（１０：実施例において対応する部分を例示する参照符号。以下、同じ。）は、顔を有する頭部（２６）および下半身（３４）を備えるアンドロイドロボット（１２）を制御するシステム（１０）である。表情動作開始手段（３６：Ｓ７３，Ｓ７５）は、笑い声を発話する笑い区間が開始するとき、顔がたとえば目を細める表情および／または口角を上げる表情になるように、顔の表情動作を開始させる。表情動作終了手段（３６：Ｓ８１，Ｓ８５，Ｓ８７）は、笑い区間が終了してから所定時間後（たとえば１秒後）に、上述の表情動作を終了させる。下半身動作手段（３６：Ｓ１１７）は、たとえばアンドロイドロボットの腰を笑い区間において前屈または後傾させる。
【００１１】
第１の発明によれば、笑い区間が開始すると同時またはほぼ同時に表情動作を開始し、かつ笑い区間が終了時には遅れて表情動作を終了するので、アンドロイドロボットにおいて、笑い声に伴う自然な表情を生成することができる。その上、たとえば腰のような下半身の動きによって、一層自然なアンドロイドロボットの笑い動作を生成することができる。
【００１２】
第２の発明は、第１の発明に従属し、表情動作終了手段は、平常時の顔の表情に戻す表情戻し手段を含む、アンドロイドロボット制御システムである。
【００１３】
第２の発明では、表情動作終了手段は表情戻し手段（３６：Ｓ８５，Ｓ８７）を含み、この表情戻し手段は、笑い区間の終了後所定時間の後に、顔を平常時の顔の表情に戻す。表情動作として、たとえば目を細める表情および／または口角を上げる表情であるとき、目や口角を平常時の状態に戻す。
【００１４】
第２の発明によれば、笑い区間では笑いに伴う表情にし、笑い区間が終了すると平常時の表情に戻すので、人と同様の切り替え（笑い区間と平常時）ができる。
【００１５】
第３の発明は、第２の発明に従属し、表情動作終了手段は、表情戻し手段によって平常時の顔の表情に戻す前に、緩衝的な表情を挿入する表情挿入手段を含む、アンドロイドロボット制御システムである。
【００１６】
第３の発明では、表情挿入手段（３６：Ｓ８１）は、上述の表情戻し手段によって平常時の顔の表情に戻す前に、緩衝的な表情を挿入する。表情動作がたとえば目を細める表情および／または口角を上げる表情であるとき、目を瞬間的に閉じる瞬き動作を挿入する。この瞬きのような緩衝的な表情を挿入することによって、笑顔の表情から平常の顔の表情に突然戻る不自然さが減少する。
【００１７】
第３の発明によれば、緩衝的な表情を挿入することによって、笑顔の表情から平常時の表情に突然戻る不自然さを減少させることができる。
【００１８】
第４の発明は、第１ないし第３のいずれかの発明に従属し、顔は目および口唇を有し、表情動作開始手段は、目を細める表情および口角を上げる表情の少なくとも一方を開始させる、アンドロイドロボット制御システムである。
【００１９】
第４の発明によれば、アンドロイドロボットに笑いに伴う目や口の自然な表情を生成することができる。
【００２０】
第５の発明は、第１ないし第４のいずれかの発明に従属し、笑い区間において頭部を動作させる頭部動作手段をさらに備える、アンドロイドロボット制御システムである。
【００２１】
第５の発明では、頭部動作手段（３６：Ｓ５３）は、笑い区間において、たとえば笑い声の高さ（Ｆ０）に応じた角度で、頭部を上げる（仰向かせる）。
【００２２】
第５の発明によれば、頭部の動きによって、一層自然なアンドロイドロボットの笑い動作を生成することができる。
【００２３】
第６の発明は、第１ないし５のいずれかに従属し、アンドロイドロボットは上半身を含み、笑い区間において上半身を動作させる上半身動作手段をさらに備える、アンドロイドロボット制御システムである。
【００２４】
第６の発明では、上半身動作手段（３６：Ｓ１０１，Ｓ１０３）はたとえばアンドロイドロボットの肩を笑い区間において上下動させせる。
【００２５】
第６の発明によれば、上半身の動きによって、一層自然なアンドロイドロボットの笑い動作を生成することができる。
【００２９】
第７の発明は、顔を有する頭部（２６）および下半身（３４）を備えるアンドロイドロボット（１２）を制御する装置（１０）であって、笑い声を発話する笑い区間が開始するとき顔の表情動作を開始させる表情動作開始手段（３６：Ｓ７３，Ｓ７５）、笑い区間が終了してから所定時間後に表情動作を終了させる表情動作終了手段（３６：Ｓ８１，Ｓ８５，Ｓ８７）、および笑い区間において下半身を動作させる下半身動作手段（３６：Ｓ１１７）を備える、アンドロイドロボット制御装置である。
【００３０】
第８の発明は、顔を有する頭部（２６）および下半身（３４）を備えるアンドロイドロボット（１２）を制御するシステム（１０）のコンピュータによって実行されるプログラムであって、コンピュータを、笑い声を発話する笑い区間が開始するとき顔の表情動作を開始させる表情動作開始手段（３６：Ｓ７３，Ｓ７５）、笑い区間が終了してから所定時間後に表情動作を終了させる表情動作終了手段（３６：Ｓ８１，Ｓ８５，Ｓ８７）、および笑い区間において下半身を動作させる下半身動作手段（３６：Ｓ１１７）として機能させる、アンドロイドロボット制御プログラムである。
【００３１】
第９の発明は、顔を有する頭部（２６）および下半身（３４）を備えるアンドロイドロボット（１２）を制御するシステム（１０）においてシステムが実行する制御方法であって、笑い声を発話する笑い区間が開始するとき顔の表情動作を開始させる表情動作開始ステップ（３６：Ｓ７３，Ｓ７５）、笑い区間が終了してから所定時間後に表情動作を終了させる表情動作終了ステップ（３６：Ｓ８１，Ｓ８５，Ｓ８７）、および笑い区間において下半身を動作させる下半身動作ステップ（３６：Ｓ１１７）を含む、アンドロイドロボット制御方法である。
【発明の効果】
【００３２】
この発明によれば、アンドロイドロボットにおいて、自然な笑いを生成できる。
【００３３】
この発明の上述の目的，その他の目的，特徴および利点は、図面を参照して行う以下の実施例の詳細な説明から一層明らかとなろう。
【図面の簡単な説明】
【００３４】
【図１】図１はこの発明の一実施例のアンドロイドロボット制御システムを示す図解図である。
【図２】図２は図１実施例に用いられるアンドロイドロボットの一実施例を示す図解図である。
【図３】図３は図２のアンドロイドロボットの電気的な構成を示すブロック図である。
【図４】図４は図３に示すメモリのメモリマップの一例を示す図解図である。
【図５】図５は図１実施例におけるアンドロイドロボットの発話動作の一例を示すフロー図である。
【図６】図６は図５に示す口唇動作制御処理の一例を示すフロー図である。
【図７】図７は図５に示す頭部動作制御処理の一例を示すフロー図である。
【図８】図８は図５に示す笑い区間検出処理の一例を示すフロー図である。
【図９】図９は図５に示す表情動作制御処理の一例を示すフロー図である。
【図１０】図１０は図５に示す上半身動作制御処理の一例を示すフロー図である。
【図１１】図１１は図５に示す下半身動作制御処理の一例を示すフロー図である。
【発明を実施するための最良の形態】
【００３５】
図１を参照して、この実施例のアンドロイドロボット制御システム（以下、単に「システム」ということがある。）１０は、アンドロイドロボット１２を含む。アンドロイドロボット１２は、人間に酷似した姿形（外観など）を有する人型ロボットであり、人間に酷似した動作（振り、振る舞い、発話）を行う。
【００３６】
アンドロイドロボット１２は、インターネットや電話通信回線のようなネットワーク１４を介して遠隔操作端末１６に接続される。遠隔操作端末１６は、ＰＣ、ＰＤＡ、スマートフォン、タブレット端末のような汎用のコンピュータであり、この遠隔操作端末１６には、スピーカ１８、マイク２０およびモニタ２２が接続される。図示は省略するが、遠隔操作端末１６には、タッチパネルやキーボードのような入力装置が含まれる。また、遠隔操作端末１６の動作を制御するためのプログラムおよびデータは、遠隔操作端末１６に内蔵しているメモリ（図示せず）に記憶されており、同じく内蔵のＣＰＵ（図示せず）によって遠隔操作端末１６全体的な動作が制御される。
【００３７】
図２は図１の実施例に用いるアンドロイドロボット１２の一例を示すが、他の外観、構造を持つ任意のアンドロイドロボットが利用可能であることを予め指摘しておく。
【００３８】
アンドロイドロボット１２は、胴体部２４およびその胴体部２４の上に設けられた頭部２６を含む。頭部２６には、目（眼球）の上下に、上瞼２８ａおよび下瞼２８ｂが形成され、それらの上瞼２８ａおよび下瞼２８ｂの上下動を制御することによって、目を開けたり閉じたりする動作が可能となる。頭部２６にはさらに口唇が形成され、それの両端が口角３０となる。口角３０も同様に上下動可能である。
【００３９】
胴体部２４の上端（頭部の下方）が肩３２であり、胴体部２４の中ほどが腰３４である。肩３２は上下動可能であり、腰３４は前屈および後傾が可能である。
【００４０】
アンドロイドロボット１２の上述の各部分を動かすための以下に説明するアクチュエータは、この実施例では、いずれもパルス電力によって駆動されるステッピングモータであり、ステッピングモータの回転量はパルス数で決まる。パルス数が指令値として与えられる。なお、初期値とは、当該アクチュエータによって変位される対象部位を平常状態にするためのパルス数（指令値）である。
【００４１】
上述の上瞼２８ａの上下動を制御するのが、アクチュエータＡ１であり、このアクチュエータＡ１は「０−２５５」の指令値に応じて動作する。初期値は「６４」である。アクチュエータＡ１は、指令値「０」で上瞼２８ａが一番上の位置（目を大きく見開いた状態）になり、指令値「２５５」で一番下の位置（目をきつく閉じた状態）になるように、設定されている。
【００４２】
アクチュエータＡ２、Ａ３およびＡ４は眼球を左右上下に動かすためのアクチュエータである。
【００４３】
アクチュエータＡ５は、下瞼２８ｂの上下動を制御するアクチュエータであり、「０−２５５」の指令値に応じて動作する。初期値は「０」である。アクチュエータＡ５は、指令値「２５５」で下瞼２８ｂが一番上の位置（目をきつく閉じた状態）になり、指令値「０」で一番下の位置（目を大きく見開いた状態）になるように設定されている。
【００４４】
アクチュエータＡ５は、上述のアクチュエータＡ１とともに、アンドロイドロボット１２の笑いに伴う表情動作の制御のために用いられる。
【００４５】
アクチュエータＡ６は額を動かすためのアクチュエータであり、アクチュエータＡ７は眉間を動かすためのアクチュエータである。
【００４６】
アクチュエータＡ８は、口角３０を上げるためのアクチュエータであり、「０−２５５」の指令値に応じて動作する。初期値は「０」である。アクチュエータＡ８は、指令値「２５５」で口角３０が一番上の位置に変位した状態となり、指令値「０」で一番下の位置になるように設定されている。アクチュエータＡ８は、アンドロイドロボット１２の笑いに伴う表情動作の制御のために用いられる。
【００４７】
アクチュエータＡ９は舌を上下方に動かすためのアクチュエータである。
アクチュエータＡ１０は口唇を左右に広げるアクチュエータであり、アクチュエータＡ１１は口唇を前に突き出すためのアクチュエータである。これらのアクチュエータＡ１０、Ａ１１は後述の口唇動作の制御のために用いられる。
【００４８】
Ａ１３は顎を突き出したり引いたりするためのアクチュエータであり、「０−２５５」の指令値に応じて動作する。初期値は「３２」である。アクチュエータＡ１３は、指令値「０」で顎を最も上げた（つまり口を閉じた）状態にし、指令値「２５５」で顎を最も下げた（つまり口を開けた）状態とするように設定されている。アクチュエータＡ１３は、後述の口唇動作の制御に用いられ、アンドロイドロボット１２の笑いに伴う表情動作の制御のためにも用いられる。
【００４９】
アクチュエータＡ１４は頭部２６を左右に傾動させるためのアクチュエータである。
【００５０】
アクチュエータＡ１５は頭部２６を俯仰させるためのアクチュエータであり、「０−２５５」の指令値で動作する。初期値は「１２８」である。アクチュエータＡ１５は、指令値「２５５」で頭部２６が最も仰向いた状態になり、指令値「０」で最も直立している状態になるように、設定されている。
【００５１】
アクチュエータＡ１６は頭部を左右に回動させるためのアクチュエータである。
【００５２】
アクチュエータＡ１７は肩３２を上下動するためのアクチュエータであり、「０−２５５」の指令値で動作する。初期値は「０」である。アクチュエータＡ１７は、指令値「２５５」で肩３２が一番上の位置になり、指令値「０」で一番下の位置になるように、設定されている。
【００５３】
アクチュエータＡ１８は腰３４を前屈させまたは後傾させるためのアクチュエータであり、「０−２５５」の指令値で動作する。初期値は「３２」である。アクチュエータＡ１８は、指令値「２５５」で腰３４が最も前屈した状態になり、指令値「０」で最も後傾した状態になるように、設定されている。
【００５４】
アクチュエータＡ１９は腰３４を左右に回動（ひねる）ためのアクチュエータである。
【００５５】
アンドロイドロボット１２は、図５に示すように、アンドロイドロボット１２の全体制御を司るＣＰＵ３６を備える。ＣＰＵ３６は、バス３８を通して通信モジュール４０に接続され、したがって、ＣＰＵ３６は通信モジュール４０を介して、ネットワーク１４すなわち遠隔操作端末１６と、有線で、または無線で、通信可能に接続される。
【００５６】
ＣＰＵ３６はまた、バス３８を通してメモリ４２にアクセスでき、このメモリ４２に設定されているプログラムやデータ（図４：後述）に従って、バス３８を通してアクチュエータ制御回路４４に上述のような指令値を与え、各アクチュエータＡ１‐Ａｎの動作を制御する。アクチュエータ制御回路４４は、ＣＰＵ３６から与えられる指令値に応じた数のパルス電力を生成し、それを該当するステッピングモータに与えることによって、各アクチュエータＡ１‐Ａｎを駆動する。
【００５７】
ただし、アクチュエータとしてはこのようなステッピングモータを用いるものの他、サーボモータを用いるアクチュエータ、流体アクチュエータなど任意のアクチュエータが利用可能である。
【００５８】
センサＩ／Ｆ（インタフェース）４６は、バス３８を介して、ＣＰＵ３６に接続され、触覚センサ４８および眼カメラ５０からのそれぞれの出力を受ける。
【００５９】
触覚センサ４８ないし皮膚センサは、たとえばタッチセンサであり、アンドロイドロボット１２の触覚の一部を構成する。つまり、触覚センサ４８は、人間や他の物体等がアンドロイドロボット１２に触れたか否かを検出するために用いられる。触覚センサ４８からの出力（検出データ）は、センサＩ／Ｆ４６を介してＣＰＵ３６に与えられる。したがって、ＣＰＵ３６は、人間や他の物体等がアンドロイドロボット１２に触れたこと（およびその強弱）を検出することができる。
【００６０】
眼カメラ５０は、イメージセンサであり、アンドロイドロボット１２の視覚の一部を構成する。つまり、眼カメラ５０は、アンドロイドロボット１２の眼から見た映像ないし画像を検出するために用いられる。この実施例では、眼カメラ５０の撮影映像（動画ないし静止画）に対応するデータ（画像データ）は、センサＩ／Ｆ４６を介してＣＰＵ３６に与えられる。ＣＰＵ３６は、撮影映像の変化を検出するのみならず、その画像データを、通信モジュール４０およびネットワーク１４（図１）を介して遠隔操作端末１６に送信する。そして、遠隔操作端末１６は、受信した画像データをモニタ２２に出力する。したがって、眼カメラ５０の撮影映像がモニタ２２に表示される。
【００６１】
また、スピーカ５４およびマイク５６は、入出力Ｉ／Ｆ５２に接続される。スピーカ５４は、アンドロイドロボット１２が発話を行う際に音声を出力する。遠隔操作端末１６の操作者ないしオペレータ（以下、「遠隔オペレータ」ということがある。）が直接発話を行う場合、ネットワーク１４、通信モジュール４０および入出力Ｉ／Ｆ５２を通して当該音声が出力される。具体的には、遠隔オペレータがマイク２０を通して発話すると、対応する音声データが遠隔操作端末１６からネットワーク１４を介してＣＰＵ３６に与えられる。そして、ＣＰＵ３６は、その音声データを、入出力Ｉ／Ｆ５２を介してスピーカ５４から出力する。
【００６２】
マイク５６は、音センサであり、アンドロイドロボット１２の聴覚の一部を構成する。このマイク５６は、指向性を有し、主として、アンドロイドロボット１２と対話（コミュニケーション）する人間（ユーザ）の音声を検出するために用いられる。
【００６３】
アンドロイドロボット１２のメモリ４２は、たとえばＲＡＭやＨＤＤであり、図４に示すように、プログラム領域５８およびデータ領域６０を含む。
【００６４】
プログラム領域５８には、音声処理プログラム６２が記憶される。音声処理プログラム６２は、音声認識プログラムおよび音声合成プログラムを含む。音声認識プログラムは、マイク５６を通して入力される、人間がアンドロイドロボット１２に対して発話した内容をＣＰＵ３６が認識するためのプログラムであり、ＣＰＵ３６は、たとえばＤＰマッチングや隠れマルコフ法（Hidden Markov Model：ＨＭＭ）により、人間の発話内容を音声認識する。
【００６５】
ＣＰＵ３６は、その音声認識プログラムに従って、遠隔オペレータがマイク２０を通して入力した発話（笑い声を含む）を認識する。たとえば、上述のＨＭＭ法やディープニューラルネットワーク（Deep. Neural Network：ＤＮＮ）のような音響モデルを用いて笑い声を検出できる。そして、この実施例では、「ハッハッハ」(“hahaha”)や「フッフッフ」(“huhuhu”)のような特定パターンの笑い声かどうかを検出し、当該特定パターンである笑い声を検出したとき、後述のように、アンドロイドロボット１２の上半身（肩３２）および下半身（腰３４）をその笑い声に付随するように動作させる。
【００６６】
遠隔オペレータの音声を直接スピーカ５４から出力する外に、アンドロイドロボット１２から音声合成によって発話させることができる。ＣＰＵ３６は、遠隔操作端末１６から音声合成によってスピーカ５４から発話する指示が入力されたとき、この遠隔操作端末１６から与えられる音声合成データに従って合成した音声をスピーカ５４に出力する。
【００６７】
口唇動作制御プログラム６４は、アンドロイドロボット１２がスピーカ５４から発話するとき、その発話音声（遠隔オペレータの声または合成音声）に適合する口唇形状となるように、たとえば図２に示すアクチュエータＡ１０‐Ａ１１を制御するためのプログラムである。
【００６８】
笑い動作制御プログラム６６は、この実施例に従ってアンドロイドロボット１２の笑い動作を制御するためのプログラムであって、頭部制御プログラム６６ａ、笑い区間検出プログラム６６ｂ、表情制御プログラム６６ｃ、上半身（肩）制御プログラム６６ｄおよび下半身（腰）制御プログラム６６ｅを含む。この笑い動作制御プログラム６６は、基本的には、アンドロイドロボット１２によって笑い声に伴う自然な動作を生成するためのプログラムである。
【００６９】
頭部制御プログラム６６ａは、後述のように、アンドロイドロボット１２の頭部２６（図２）を笑い動作に適合するよう動作させるプログラムであり、具体的には、後述のように、笑い声に応じて頭部２６を少しずつ仰向くように制御する。
【００７０】
笑い区間検出プログラム６６ｂは、後述のように、遠隔オペレータからの笑い声の区間を検出するためのプログラムである。ＣＰＵ３６は、遠隔オペレータの音声信号から、所定周期毎に所定フレーム長の、たとえばＭＦＣＣ係数（メル周波数ケプストラム係数：Mel Frequency Cepstrum Coefficient）、フォルマント周波数およびＦ０（基本周波数）などの音響特徴を検出し、そのフレーム長の間に笑い声があるかどうか検出する。
【００７１】
なお、図１実施例のようにアンドロイドロボット１２が遠隔操作端末１６すなわち遠隔オペレータによって制御されるのではなく、発現する動作や発話すべき内容が予め設定されている自律的なアンドロイドロボット１２の場合、この笑い検出プログラム６６ｂは不要である。自律的アンドロイドロボットの場合、笑い区間は予め設定されているので、検出する必要がないからである。
【００７２】
しかも、自律的アンドロイドロボットの場合には、笑い区間が既知であるばかりでなく、笑い声の音響的特徴、パターン、大きさなどもすべて既知であるので、それらを検出するための動作も不要となる。したがって、後述の各フロー図で説明する動作は、笑い区間、音響的特徴、パターン、大きさなどの既知の数値に基づいて制御すればよい。
【００７３】
表情制御プログラム６６ｃは、笑い声の区間に合わせてアンドロイドロボット１２の目や口の表情を制御するためのプログラムである。
【００７４】
上半身（肩）制御プログラム６６ｄは、後述のように、笑い声の区間に合わせてアンドロイドロボット１２の上半身（肩）３２の動作を制御するためのプログラムである。
【００７５】
下半身（腰）制御プログラム６６ｅは、笑い声の区間に合わせてアンドロイドロボット１２の下半身（腰）３４の動作を制御するためのプログラムである。
【００７６】
メモリ４２のデータ領域６０は、種々のデータを記憶するための領域である。音声データ領域６８は、遠隔操作端末１６から送られてくる遠隔オペレータの音声の音声データおよびマイク５６から入力される音声データを一時的に記憶する。辞書データ領域７０は、データベース領域として機能し、そこには前述の音声認識や音声合成のために必要な辞書などのデータが記憶される。その他、データ領域６０は、ＣＰＵ３６の動作に必要な、タイマ、レジスタ、フラグなどの所要の領域７２を含む。
【００７７】
アンドロイドロボット１２は、人間に酷似した姿形を有して人間の動作に酷似した動作を行うロボットであるから、遠隔オペレータの発話音声を出力したり、音声合成した音声をスピーカ５４から出力する際に、たとえば口唇を動かさなかったり単に音声に関係なく口唇を動かしたりするだけでは人間に強い違和感を与えてしまう。そこで、この実施例のシステム１０では、アンドロイドロボット１２が出力する発話音声に合わせてその口唇を主とした顔面動作を生成する。
【００７８】
さらに、人間が笑うとき、笑い声を発するだけでなく、顔の表情や身体的な表情も笑い声に合わせて変化するが、アンドロイドロボット１２が笑い声を発するときにできるだけ自然に見えるように、顔や身体の表情の動作を生成する。
【００７９】
このシステム１０の動作を図５および図６‐図１１に示すフロー図を参照しながら説明する。
【００８０】
図５には、ＣＰＵ３６の発話処理の動作の一例が示される。ＣＰＵ３６は、この発話処理を一定時間ごとに繰り返し実行する。
【００８１】
図５のステップＳ１では、音声データを受信したか否かを判断する。遠隔オペレータが発話したとき、遠隔操作端末１６からマイク２０で取得された発話音声の音声データが送信されてくるので、この音声データをネットワーク１４を介して受信したか否かが判断される。なお、遠隔操作端末１６は、発話音声を所定のサンプリングレート（たとえば、８ｋＨｚ）で音声データとして取得し、取得した音声データを所定のパケット長（たとえば２０ｍｓ）で一定時間ごとに送信する。
【００８２】
ステップＳ１で“ＹＥＳ”であれば、ステップＳ３で、音声記憶処理を開始する。音声記憶処理はＣＰＵ３６によって他の処理と並列的に実行される。この音声記憶処理によって、受信される音声データが順次メモリ４２のデータ領域６０の音声データ領域６８に記憶される。音声記憶処理は、発話音声が検出されなくなって音声データが受信されなくなったときに終了される。
【００８３】
続いて、ステップＳ５で、口唇動作制御処理を開始する。口唇動作制御処理はＣＰＵ３６によって他の処理と並列的に実行される。この口唇動作制御処理では、取得された発話音声の解析が行われて、当該音声に基づいて口唇動作が制御される。口唇動作制御処理の動作の一例は後述する図６に示される。
【００８４】
ステップＳ７で、頭部動作制御処理を開始する。頭部動作制御処理はＣＰＵ３６によって他の処理と並列的に実行される。この頭部動作制御処理では、取得された発話音声の解析が行われて、当該音声に基づいて頭部動作が制御される。頭部動作制御処理の動作の一例は後述する図７に示される。
【００８５】
ステップＳ９で、笑い区間の検出処理を開始する。笑い区間の検出処理はＣＰＵ３６によって他の処理と並列的に実行される。この笑い区間の検出処理では、取得された発話音声の解析が行われて、当該音声に基づいて、笑い区間かどうかを検出する。笑い区間の検出処理の動作の一例は後述する図８に示される。
【００８６】
ただし、自律的アンドロイドロボットの場合、上述したようにこのステップＳ９による笑い区間の検出処理は不要である。
【００８７】
ステップＳ１１で、表情動作制御処理を開始する。表情動作制御処理はＣＰＵ３６によって他の処理と並列的に実行される。この表情動作制御処理では、取得された発話音声の解析が行われて、当該音声に基づいて頭部すなわち顔の表情動作が制御される。表情動作制御処理の動作の一例は後述する図９に示される。
【００８８】
ステップＳ１３で、上半身（肩）動作制御処理を開始する。上半身動作制御処理はＣＰＵ３６によって他の処理と並列的に実行される。この上半身動作制御処理では、取得された発話音声の解析が行われて、当該音声に基づいて肩すなわち上半身の表情動作が制御される。上半身動作制御処理の動作の一例は後述する図１０に示される。
【００８９】
ステップＳ１５で、下半身（腰）動作制御処理を開始する。下半身動作制御処理はＣＰＵ３６によって他の処理と並列的に実行される。この下半身動作制御処理では、取得された発話音声の解析が行われて、当該音声に基づいて腰すなわち下半身の表情動作が制御される。下半身動作制御処理の動作の一例は後述する図１１に示される。
【００９０】
なお、ステップＳ１３における上半身動作制御処理およびステップＳ１５における下半身動作制御処理は必須というものではなく、両方とも省略されてもよく、あるいはどちらかが省略されてもよい。
【００９１】
ステップＳ１７では、音声取得から一定時間経過したか否かを判断する。この実施例では、取得した発話音声を一定量の遅延のもとに再生するようにしているので、この判定によって、音声データの取得（受信）から一定時間の経過を待つ。
【００９２】
ステップＳ１７で“ＹＥＳ”であれば、ステップＳ１９で、音声再生処理を開始する。音声再生処理はＣＰＵ３６によって他の処理と並列的に実行される。この音声再生処理では、取得された音声データがメモリ４２の音声データ領域６８から読み出されて入出力Ｉ／Ｆ５２に与えられ、これによって、アンドロイドロボット１２のスピーカ５４から当該音声が出力される。音声再生処理は、取得した音声データをすべて再生し終わったときに終了される。
【００９３】
なお、ステップＳ１で“ＮＯ”の場合、つまり、発話が行われていないときには、そのまま図５の発話処理を終了する。
【００９４】
ステップＳ５で開始される口唇動作制御処理の動作の一例を図６を参照して説明する。まず、ステップＳ２１で、音響特徴の変動量を抽出する。
【００９５】
アンドロイドロボット１２のような物体の場合、画像のようにフレームごとに口唇形状を制御することは困難である。従って、まず、遠隔オペレータの音声の周波数やケプストラムの解析を行い、音響特徴の変動が高い位置を検出する。音響特徴の変動量は、たとえば、ある時刻における前後所定時間（たとえば２０ｍｓ程度）のフレームのパラメータ（たとえばＭＦＣＣ）の平均二乗誤差として算出される。
【００９６】
次に、ステップＳ２３で、この変動量（ＭＦＣＣ平均二乗誤差など）が閾値を超えたか否かを判断する。実験によって、音素の変化を表す程度に、この変動量に閾値を設定しておく。閾値を超えた変動量のピーク位置がアンドロイドロボット１２の動作指令発行時点を決める際の基礎となる。
【００９７】
ステップＳ２３で“ＮＯ”の場合、処理はステップＳ２１へ戻り、次の時刻を基点とする音声データについて処理を繰り返す。
【００９８】
一方、ステップＳ２３で“ＹＥＳ”の場合、ステップＳ２５で、音響特徴の高い変動量が検出された時点の前後所定時間（たとえば１００ｍｓ程度）の音声から音響特徴（たとえばＭＦＣＣ）を抽出し、ステップＳ２７で、非線形モデルを用いて口唇形状の推定を行う。推定の手法として、線形回帰分析、ニューラルネットワーク、ＨＭＭ、ＫＮＮ（ケイ近傍法：k-nearest neighbor algorithm）などが挙げられる。音響特徴と口唇形状の間には非線形な関係があるので、ニューラルネットワークのような非線形なモデルを用いることがある。そのためには、予め収録したビデオデータまたはモーションキャプチャによる口唇形状のデータベースによってモデル学習を行っておき、メモリ４２の辞書データ領域７０にモデル学習による非線形マッピングのための情報を記憶しておく必要がある。
【００９９】
続いて、ステップＳ２９で、推定された口唇形状を形成するための制御情報を設定し、ステップＳ３１で動作遅延を推定する。具体的には、アンドロイドロボット１２のアクチュエータＡ１０およびＡ１１の制御情報に関しては、アクチュエータ制御の静的特徴と動的特徴を考慮する。つまり、静的特徴としては、特定の口唇形状に近づけるためのアンドロイドロボット１２のアクチュエータＡ１０およびＡ１１の制御情報を予め手動的に取得しておき、口唇形状と制御情報とを対応付けたデータベースをメモリ４２の辞書データ領域７０に記憶しておく。また、動的特徴としては、特定の形状をターゲットとして口唇を動かした際に、指令を発行した時点からアンドロイドロボット１２が実際にターゲットの形状に辿りつくまでにかかる時間（これを動作遅延と呼ぶ。）を実験により取得しておき、制御情報（口唇形状）と動作遅延とを対応付けたデータベースをメモリ４２の辞書データ領域７０に記憶しておく。後述のステップＳ３７では、この動作遅延の情報を基に、音声と同期を取るために、動作指令を送る時点が早められたり遅くされたりする。
【０１００】
ステップＳ３３では、所定時間の推定を行ったか否かを判断する。この実施例では、音響特徴を抽出した範囲よりも広い範囲、たとえば複数の音素や単語単位で、口唇動作の再構成をすることを想定しているので、このステップＳ３３の判定を行う。ステップＳ３３で“ＮＯ”の場合、ステップＳ２１に戻って処理を繰り返す。
【０１０１】
ステップＳ３３で“ＹＥＳ”であれば、ステップＳ３５で、区間を通じた口唇動作の最適化処理を行う。つまり、比較的短い期間の音声に関して、ステップＳ２１やステップＳ２５の処理を行い、これらの音声を束ねたより長い区間を通じて動作の最適化を試みる。推定された口唇形状は完全にはアンドロイドロボット１２では再現できない場合もあるため、推定された口唇形状の時系列を元に、この口唇動作を簡略化するなど必要な変換を行う。
【０１０２】
続いて、ステップＳ３７で、動作遅延に基づいて、音声再生開始タイミングを基準として、各動作指令の発行タイミングを設定する。つまり、特定の口唇形状を形成するための動作指令の発行タイミングは、当該音声との同期をとるために、当該推定遅延に基づいて音声再生開始タイミングを基準として設定される。
【０１０３】
そして、ステップＳ３９で、動作指令発行処理を開始する。動作指令発行処理はＣＰＵ３６によって他の処理と並列的に実行される。この動作指令発行処理では、各動作指令の発行タイミングになったと判断されたときに、アクチュエータＡ１０およびＡ１１の指令値が発行される。
【０１０４】
ステップＳ４１では、未処理の音声データが残っているか否かを判断し、“ＹＥＳ”であれば、ステップＳ２１に戻って処理を繰り返す。このようにして、アンドロイドロボット１２においては、遠隔オペレータの発話音声が当該音声に適合した口唇動作を伴って出力される。一方、ステップＳ４１で“ＮＯ”であれば、この口唇動作制御処理を終了して、図５に戻る。
【０１０５】
この実施例によれば、遠隔オペレータの発話音声の音響特徴から非線形モデルを用いて口唇形状を推定し、発話音声の再生開始タイミングを基準として当該口唇形状を形成するまでにかかる動作遅延を考慮してアクチュエータＡ１０，Ａ１１の動作指令の発行タイミングを設定するようにしたので、アンドロイドロボット１２において遠隔オペレータの発話音声に適合させた口唇動作を実現することができる。したがって、アンドロイドロボット１２の応対する人間に対して違和感を与えることなく、自然な対話を行うことができる。
【０１０６】
図５のステップＳ７データの頭部動作制御処理の一例が、図７のフロー図に示される。最初のステップＳ５１では、ＣＰＵ３６は、図５のステップＳ３でメモリ４２の音声データ領域６８に記憶された音声データに含まれる基本周波数（ピッチ）Ｆ０を抽出する。つまり、フレーム長３２ｍｓの音声データを１０ｍｓのフレーム間隔で解析し、音声の基本周波数Ｆ０を検出する。基本周波数Ｆ０を検出する、一般的な手法として、たとえばＬＰＣ（Linear Predictive Coding：線形予測符号化）の残差波形の自己相関関数のピーク探索によるものが挙げられるが、これに限定されるものではない。
【０１０７】
そして、次のステップＳ５３では、ＣＰＵ３６は、ステップＳ５１で検出した基本周波数Ｆ０に応じて、頭部２６（図２）を縦方向に動かす。
【０１０８】
発明者等の実験では、頭部運動に関しては、頭部２６の縦方向動作の制御方法として、音声のピッチ（Ｆ０）に連動させた。基本周波数Ｆ０から頭部アクチュエータＡ１５(図２)の指令値へ変換する式は数１となる。
［数１］
A15 = 140 + (F0 - center_F0)*F0_scale
A15<0 → A15=0
A15>255 → A15=255
ここで、center_F0 は話者（遠隔オペレータ）の平均的な基本周波数Ｆ０（男性の場合は１２０Ｈｚ前後、女性の場合は２４０Ｈｚ前後）をsemitone（セミトーン：半音）で表した値である。基本周波数Ｆ０は現在時刻の値（semitone 単位）であり、F0_scale は平均Ｆ０に対する音程の差を頭部２６の上下運動にマッピングするスケールファクタである。すなわち、F0_scaleは、頭部２６の縦方向の回転角度と音程（声の高さ）の比例値である。
【０１０９】
この実施例では、F0_scale を１とし、１semitone の変化がおおよそ１度の頭部回転（仰角）に対応することとした。
【０１１０】
ステップＳ５５で、音声データ領域６８に未処理の音声データがあるかどうか判断し、“ＹＥＳ”ならステップＳ５１に戻り、“ＮＯ”なら図５に戻る。
【０１１１】
実験の結果、このように、笑い声の声の高さに連動して頭部動作を付加することにより、頭部２６を動かさない場合と比べて不自然な動きにならないことを確認することができた。
【０１１２】
図５のステップＳ９での笑い声区間検出動作は、図８に示される。笑い声区間を検出するのは、笑い声区間の最初と最後、すなわち開始と終了を知る必要があるからである。
【０１１３】
図８のステップＳ６１で、ＣＰＵ３６は、メモリ４２の音声データ領域６８にステップＳ３(図５)で記憶された音声データをフレーム長３２ｍｓの音声データを１０ｍｓのフレーム間隔で解析し、その音声データに含まれる音響特徴、前述のＭＦＣＣ係数および基本周波数Ｆ０を抽出する。
【０１１４】
そして、ステップＳ６３で、ＣＰＵ３６は、このような音響特徴に基づいて、該当のフレーム長の区間に、遠隔オペレータの笑い声による発話があるかどうか検出する。もし、笑い声が検出されると、たとえばメモリ４２のデータ領域６２の領域７２の笑いフラグ(図示せず)を「１」にセットし、笑い声を検出しなければ、当該笑いフラグを「０」にリセットする。
【０１１５】
ステップＳ６５で、音声データ領域６８に未処理の音声データがあるかどうか判断し、“ＹＥＳ”ならステップＳ６１に戻り、“ＮＯ”なら図５に戻る。
【０１１６】
図９は、図５のステップＳ１１における表情動作制御処理を示すフロー図である。
【０１１７】
発明者等の実験においては、笑い動作を分析するために、予め収集しておいたマルチモーダル対話音声データベースを用いた。このデータベースは、さまざまな年代の話者における、対話者の音声、頭部のモーションキャプチャデータおよびビデオデータを含む。各対話は１０分程度で、自由会話となっている。データベースには発話区間と書き起こしが存在し、笑い声が含まれるかの情報も存在する。
【０１１８】
実験での分析には１１名の話者のデータを用い、およそ１０００個の笑い声区間が抽出された。各笑い声区間に対し、ビデオを見ながら表情や動作に関連するラベルを付与してデータセットを作成した。
【０１１９】
まず、笑いの象徴的な表情として、口角を上げて目を細める動作が挙げられるが、やはりデータセットでも目を細める動作が多く（目を閉じる動作も含むと５５％以上で）、殆ど（９０％以上）の笑い区間で口角が上がっていた。また、殆ど（９０％以上）の笑い区間は頭部や胴体の何らかの動きが伴い、半分以上は縦方向の動きである結果が得られた。
【０１２０】
笑い声と動作の詳細なタイミングを調べるため、データベース内の女子大学院生２人による１対話において、瞬きの瞬間と口角を上げる開始および終了時間の切り出しを行った。
【０１２１】
その結果、笑顔の表情の（目を細めて、口角を上げる）タイミングは笑い声の開始時刻と一致することが多く、笑顔から平常時の表情に戻るタイミングは、１名の話者では笑い声が終了して平均０．８秒（標準偏差０．５秒）で、もう１名の話者では平均１．０秒（標準偏差０．７秒）である結果が得られた。
【０１２２】
このような知見に基づいて、図９の最初のステップＳ７１でＣＰＵ３６は、メモリ４２のデータ領域６０の領域７２に設定されている上述の笑いフラグを見て、笑い区間が開始したかどうか判断する。ステップＳ７１で“ＮＯ”が判断されると、再度ステップＳ７１を繰り返する。
【０１２３】
実験の結果、人は笑い区間が開始すると直ちに表情が変化することが分かっているので、ＣＰＵ３６は、ステップＳ７１で笑い区間の開始を検出するとすぐ（笑い区間の開始と同時にまたはほぼ同時に）、ステップＳ７３で目を細める表情を生成するとともに、ステップＳ７５で口角３０を上げる表情を生成する。
【０１２４】
ステップＳ７３において、ＣＰＵ３６は、笑いに伴って目を細める表情を生成するために、図２に示す上瞼２８ａのためのアクチュエータＡ１および下瞼２８ｂのためのアクチュエータＡ５を制御する。前述のように、アクチュエータＡ１およびＡ５はともに「０−２５５」の範囲の指令値に応答するが、この実施例では、目を細める動作として、アクチュエータＡ１に指令値「１２８」を与え、アクチュエータＡ５に指令値「１２８」を与えるようにした。上瞼２８ａおよび下瞼２８ｂがともに、中間位置に変位され、「目を細める」表情が生成される。
【０１２５】
ステップＳ７５において、ＣＰＵ３６は、笑いに伴って口角を上げる表情を生成するために、図２に示すアクチュエータＡ８を制御する。前述のように、アクチュエータＡ８は「０−２５５」の範囲の指令値に応答するが、この実施例では、口角を上げる動作として、アクチュエータＡ８に指令値「１２８」を与えるようにした。口角３０が、中間位置に変位され、「口角を上げる」表情が生成される。
【０１２６】
なお、アクチュエータＡ１、Ａ５およびＡ８の上述の指令値「１２８」は、笑顔がはっきり認識できることを実験の結果を確認して決めたものである。したがって、必ずしもこの指令値にこだわる必要はない。
【０１２７】
また、この実施例では、ステップＳ７３とＳ７５の両方を実行して「目を細める表情」および「口角を上げる表情」の両方を同時に提示するようにした。しかしながら、ステップＳ７３およびＳ７５の一方だけを実行して笑いに伴う表情動作を制御するようにしてもよい。
【０１２８】
ステップＳ７７で、上述の笑いフラグ（図示せず）を見て、笑い区間が終了したと判断したとき、上述の実験の結果と同じように、笑い区間が終了して所定時間経過した後に表情を平常状態に戻す処理を実行する。実験では、１名は０．８秒で、もう１名が１．０秒だったので、この実施例では、ステップＳ７９で１秒経過するまで待って、次のステップＳ８１に進むようにしている。
【０１２９】
ステップＳ８１では、ＣＰＵ３６は、笑い区間の終了に伴って目を閉じる表情を生成するために、図２に示す上瞼２８ａのアクチュエータＡ１および下瞼２８ｂのアクチュエータＡ５を制御する。前述のように、アクチュエータＡ１およびＡ５はともに「０−２５５」の範囲の指令値に応答するが、この実施例では、目を閉じる動作として、アクチュエータＡ１およびＡ５にともに指令値「２５５」を与える。応じて、上瞼２８ａが最下位位置に変位し下瞼２８ｂが最上位位置に変位するので、「目を閉じる」表情が生成される。
【０１３０】
その後、ステップＳ８３でのたとえば０．１秒のような所定時間の経過の後、ステップＳ８５およびＳ８７が実行される。上述のステップＳ７９やこのステップＳ８３においては、メモリ４２のデータ領域６０の領域７２に設定されるタイマ（図示せず）を利用して時間経過を計測する。
【０１３１】
発明者等の実験の結果を踏まえて、実施例では、笑い声の区間が終了した時点の１秒後（分析結果から得られた平均的な時間差）に平常時の表情に戻すようにする。
【０１３２】
このとき、実験によれば、笑顔から平常時の表情に戻る際に、瞬きが伴うことが多い傾向がみられ、実施例では、平常時の表情に戻す前に緩衝的に表情を挿入することとした。この瞬き動作を加えることにした。制御方法としては、ステップＳ８１おけるように１番および５番のアクチュエータＡ１およびＡ５を最大指令値（「２５５」）まで変更して目を閉じ、その１００ｍｓ後に平常時の眼の開きに戻るように制御した。
【０１３３】
ステップＳ８５において、ＣＰＵ３６は、笑い区間の終了に伴って瞼を平常時の上述に戻すために、上瞼２８ａのためのアクチュエータＡ１および下瞼２８ｂのためのアクチュエータＡ５を制御する。前述のように、アクチュエータＡ１およびＡ５はともに「０−２５５」の範囲の指令値に応答するが、この実施例では、平常時の瞼の状態として、アクチュエータＡ１に指令値として初期値「６４」を与え、アクチュエータＡ５に指令値として初期値「０」を与えるようにした。それによって、上瞼２８ａがやや上に変位し、下瞼２８ｂが最下位位置に変位され、平常状態の表情が生成される。
【０１３４】
笑顔の表情から平常の顔の表情に戻る瞬間にステップＳ８３でのような瞬きの表情を生成したことによって、笑顔の表情から平常の顔の表情に突然戻る不自然さが減少する効果が確認できた。
【０１３５】
ステップＳ８７において、ＣＰＵ３６は、笑い区間の終了に伴って口角をやや上げる表情を生成するために、図２に示すアクチュエータＡ８を制御する。アクチュエータＡ８は「０−２５５」の範囲の指令値に応答するが、このステップＳ８５では、口角をやや上げた表情を生成するために、アクチュエータＡ８に指令値「６４」を与えるようにした。
【０１３６】
笑い声区間以外のわずかな笑顔を表現するための口角を少し上げるステップＳ８７での動作は、ステップＳ７５での笑い声に伴う「口角を上げる」動作と区別するため、便宜的に「口角２」と呼ぶ。平常時の表情（笑い声以外の区間）をわずかな笑顔にすることにより、表情のギャップの不自然さを減少する効果が期待される。つまり、口角３０を平常時に戻すためのステップＳ８７でアクチュエータＡ８の指令値として初期値「０」を与えたとすれば、そのとき口角３０は最下位位置にあり、まったく笑いを見せない表情である。笑い区間では、その表情から、ステップＳ７５でのように口角８０が中間位置まで変位されるので、口角３０が笑い区間になって突然上がった印象となる。もし「口角２」として平常時でも口角が少しでも上がっていれば、そのような突然変化したように見える不自然さがなくなるのである。
【０１３７】
ステップＳ８９で、音声データ領域６８に未処理の音声データがあるかどうか判断し、“ＹＥＳ”ならステップＳ７１に戻り、“ＮＯ”なら図５に戻る。
【０１３８】
図５のステップＳ１３における上半身（肩）動作制御処理が図１０のフロー図に示される。ステップＳ９１では、ＣＰＵ３６は、笑い声の区間が開始したかどうか、つまり、笑いフラグが「１」にセットされたかどうか判断する。“ＮＯ”なら元に戻って同じ判断を繰り返し、“ＹＥＳ”なら、ステップＳ９３において、笑い区間が所定時間、たとえば５００ｍｓ以上継続しているかどうか判断する。このステップＳ９３では、笑いフラグが「１」になってからの経過時間を領域７２（図４)に設定したタイマで計測することによって、笑い区間が所定時間以上継続しているかどうか判断できる。
【０１３９】
ステップＳ９３で“ＮＯ”の場合、ステップＳ９５で、笑いフラグを参照して、それが「０」にリセットされたかどうか、つまり、笑い区間が終了したかどうか判断する。ステップＳ９５で“ＹＥＳ”なら、ＣＰＵ３６の処理はステップＳ９１に戻り、“ＮＯ”なら、ステップＳ９５に戻る。
【０１４０】
なお、ステップＳ９３で、笑い区間が所定時間以上継続しているかどうか判断するのは、この実施例では、所定時間以上笑いが継続しなければ上半身動作制御処理を行わないようにしているためである。上半身動作制御処理が比較的時間を要し、短い笑い区間でも上半身動作制御を行うと却って不自然さを感じてしまうからである。ただし、ステップＳ９３での判断のために設定される所定時間は、任意の時間に設定されればよく、極端な場合それが「０」であってもよい。
【０１４１】
ステップＳ９３で“ＹＥＳ”が判断されると、つまり、笑い区間が所定時間以上継続していると判断したとき、次のステップＳ９７において、ＣＰＵ３６は、基本周波数Ｆ０の最大値が閾値、たとえばcenter_F0＋2semitones（発話者の平均Ｆ０＋２セミトーン）以上かどうか判断する。ただし、基本周波数Ｆ０は、たとえば図５のステップＳ３で取得した音声データを解析することによって、たとえば図７のステップＳ５１と同様にして、検出することができる。ステップＳ９７データ“ＮＯ”の判断をしたとき、ＣＰＵ３６の処理はステップＳ９５に進む。
【０１４２】
ステップＳ９７で“ＹＥＳ”を判断したとき、ＣＰＵ３６は、ステップＳ９９において、そのとき発話されている笑い声が先に説明したような特定のパターンの笑い声かどうか判断する。
【０１４３】
つまり、この実施例で上半身（肩）を動作させるためには、笑い区間が充分に長く、基本周波数Ｆ０が高く、笑い声が母音と有気子音の交互パターンであることという３条件が充足される必要がある。ただし、このうちの１つが充足されただけでこの上半身動作制御処理を実行するようにしてもよい。
【０１４４】
ＣＰＵ３６は、音声認識プログラムに従って、笑い声を認識した結果。、それが「ハッハッハ」(“hahaha”)や「フッフッフ」(“huhuhu”)のような母音と有気子音の交互パターン（特定のパターン）の笑い声であると判断したとき、ステップＳ１０１に進んで、笑い声の有気子音部分（”h”の部分）で、肩３２（図２）を上げるように、アクチュエータＡ１７に対して「１２８」の指令値を設定する。したがって、肩３２が最上位位置と最下位位置との間の中間の高さ位置まで上げられる。
【０１４５】
そして、次のステップＳ１０３で、笑い声の母音部分（”a”または”u”の部分）でそのアクチュエータＡ１７に対する指令値を「０」として設定する。したがって、肩３２が最下位位置まで戻される。
【０１４６】
次のステップＳ１０５で、笑いフラグを見て、ＣＰＵ３６は、笑い区間が終了したかどうか判断する。“ＮＯ”のときはそのままステップＳ１０１まで戻り、ステップＳ１０１およびステップＳ１０３を繰り返す。つまり、この実施例では、母音および有気子音の「パルス」毎に、肩３２を上下に動かす。たとえば、「ハッハッハ」では肩を３回上下に動かし、「ハッハッハッハッハ」では５回動かす。
【０１４７】
ステップＳ１０７で、ＣＰＵ３６は、音声データ領域６８に未処理の音声データがあるかどうか判断し、“ＹＥＳ”ならステップＳ９１に戻り、“ＮＯ”なら図５に戻る。
【０１４８】
図５のステップＳ１５における上半身（腰）動作制御処理が図１１のフロー図に示される。ステップＳ１１１では、ＣＰＵ３６は、笑い声の区間が開始したかどうか、つまり、笑いフラグが「１」にセットされたかどうか判断する。“ＮＯ”なら元に戻って同じ判断を繰り返し、“ＹＥＳ”なら、ステップＳ１１３において、笑い区間が所定時間、たとえば５００ｍｓ以上継続しているかどうか判断する。このステップＳ１１３では、ステップＳ９３（図１０）と同様に、笑いフラグが「１」になったときとりがされるタイマの計測時間に基づいて、笑い区間が所定時間以上継続しているかどうか判断できる。
【０１４９】
ステップＳ１１３で“ＮＯ”の場合、ステップＳ１１５で、笑いフラグを参照して、それが「０」にリセットされたかどうか、つまり、笑い区間が終了したかどうか判断する。ステップＳ１１５で“ＹＥＳ”なら、ＣＰＵ３６の処理はステップＳ１１１に戻り、“ＮＯ”なら、ステップＳ１１５に戻る。つまり、下半身（腰）を動かす条件は、笑い区間が十分長いことである。
【０１５０】
なお、ステップＳ１１３で、笑い区間が所定時間以上継続しているかどうか判断するのは、この実施例では、所定時間以上笑いが継続しなければ下半身動作制御処理を行わないようにしているためである。下半身動作制御処理が比較的時間を要し、短い笑い区間でも下半身動作制御を行うと却って不自然さを感じてしまうからである。ただし、ステップＳ１１３での判断のために設定される所定時間は、任意の時間に設定されればよく、極端な場合それが「０」であってもよい。
【０１５１】
ステップＳ１１３で“ＹＥＳ”が判断されると、ＣＰＵ３６は次のステップＳ１１７で、図２に示す腰３４を前屈させまたは後傾させる。具体的には、数２に従ってアクチュエータＡ１８の指令値を算出する。つまり、この実施例では、数２に従って、発話者の笑い声の高さＦ１を腰３４のアクチュエータＡ１８の指令値に変換するようにしている。
［数２］
A18= 32+act_target*(1+cos(p*(t-t_start)/2
t_start< t <t_start+1sec.
act_target= (F1-ceneterF1)* F1_scale
A18<0→A18=0
A18>128→A18=128
ここで、「32」はアクチュエータＡ１８の初期値、act_target は、 母音部分の音色に応じた腰の動きの指令値（負の値は腰を後ろに、正の値は腰を前に折り曲げる）、F1 は現在時刻の第１フォルマント、centerF1 は発話者の中心母音の第１フォルマント、F1_scaleは第１フォルマントと指令値のスケールファクタ（腰３４の前後方向への傾斜角度と音程（声の高さ）の比例値）、t は現在時刻（秒）、t_start は腰３４の動作を開始した時刻（秒）をそれぞれ示す。数２によれば、1秒程度で滑らかに目的の姿勢になるように腰を動かすことができる。
【０１５２】
このようにして、ステップＳ１１７でＣＰＵ３６は、発話者（遠隔オペレータ）の笑い声の高さＦ１に応じた前屈角度または後傾角度で腰３４を制御し、ステップＳ１１９で笑い区間または終了を検出するまで、ステップＳ１１７を繰り返し実行する。このようにフォルマントＦ１により腰３４の動きを制御するため、結果的に、フォルマントの高い「フッフッフ（“huhuhu”）」では腰３４は前屈（前のめり）になり、フォルマントの低い「ハッハッハ（“hahaha”）」では腰３４は後傾（反らし）になる。
【０１５３】
その後、ステップＳ１２１において所定時間たとえば１秒の経過を待って、ステップＳ１２３で、ステップＳ１１７によって前屈または後傾した腰３４を、数３に従って、平常時の姿勢に戻す。
［数３］
A18 = 32 + (act_last-32) * (1+cos(p*(t-t_last))/2)
t_start < t < t_start + 1秒
ここで、「32」はアクチュエータＡ１８の初期値、act_lastは笑い区間が終了したときの姿勢の指令値、t は現在時刻（秒）、t_last は 平常時の姿勢に戻す前の時刻をそれぞれ示す。数３に従えば、腰３４の姿勢を１秒程度で滑らかに平常時の姿勢に戻すことができる。
【０１５４】
ステップＳ１２５で、ＣＰＵ３６は、音声データ領域６８に未処理の音声データがあるかどうか判断し、“ＹＥＳ”ならステップＳ１１１に戻り、“ＮＯ”なら図５に戻る。
＜評価＞
発明者等の実験では、次の４種類の動作パターンのビデオ刺激を用意した。
条件１：口角＋瞼＋頭＋瞬き
条件２：口角＋瞼＋頭
条件３：口角＋瞼＋瞬き
条件４：口角＋瞼＋頭＋瞬き＋口角２
ここで、「口角」は、図９のステップＳ７５で実現したような口角３０（図２）を上げる動作であり、「瞼」は、図９のステップＳ７５で実現したような上瞼２８ａおよび下瞼２８ｂ（図２）による目を細める動作を示す。「頭」は、図７のステップＳ５３で実現したような基本周波数Ｆ０から生成した頭部２６（図２）の動作を示す。声の高さに連動した頭部動作を付加することにより、頭部を動かさない場合と比べて不自然な動きにならないことを確認することも目的である。「瞬き」は、図９のステップＳ８１で実現したような上瞼２８ａおよび下瞼２８ｂ（図２）による瞬間的な目を閉じる動作である。「口角２」は、図９のステップＳ８７で実現した笑い声区間以外のわずかな笑顔を表現するための口角３０（図２）を少し上げる動作である。
【０１５５】
被験者１５名の総合評価として、頭部の動きがないものは「やや不自然」（負の印象評定）と評価され、頭部は動いても瞬きがない場合は、「どちらともいえない」と評価された。平常時の表情に戻る際に瞬きを付加することにより、正の印象評定に変わり、最も評価が高かったのはすべての動作を含む条件４であり、平均評価が「やや自然」を少し上回る印象評定が得られた。
【０１５６】
これらに鑑み、考察すると、評価した４種類の動作において、条件１対条件３（頭部動作が有るか無いか）の映像上の違いは明らかで、その効果は顕著である結果が得られた。この結果より、実施例のようにＦ０から生成した頭部動作は自然さを向上させるのに効果的であった。
【０１５７】
条件１と２では、笑い声区間終了時に瞬きを付加ことにより、不自然さが少し緩和された結果となった。これは表情の突然の変化による不自然さを瞬きがクッション（緩衝的な表情）のような働きをして緩和したというように解釈できる。興味深い結果として、ほとんどの被験者がなんとなく違いは分かるが、その違いが瞬きであることに気付かなかったことである。瞬きのようなわずかな動きを挿入することで、突然の表情変化の不自然さを緩和する方法は、他の表情動作にも使える一般的な方法である可能性もある。
【０１５８】
最後に条件１と４では、笑い声の区間以外でもわずかな笑顔を保つことにより、表情変化のギャップを埋める効果があったと考えられる。ただし、今回用いた対話データでは、全体的に楽しい文脈での発話が行われたのでこの口角２は効果的であったが、文脈に応じて、笑い声以外の区間を笑顔で埋めるべきかどうかは検討の余地がある。
【０１５９】
なお、実験では検証しなかったが、上半身動作として肩の上下動と、下半身動作として腰の前後への傾動も実行することによりに、より自然な人らしい動作が表出できる。
【０１６０】
なお、上で挙げた時間の長さなどの具体的数値はいずれも単なる一例であり、必要に応じて適宜変更可能である。
【符号の説明】
【０１６１】
１０  …アンドロイドロボット制御システム
１２  …アンドロイドロボット
１６  …遠隔操作端末
２６  …頭部
２８ａ  …上瞼
２８ｂ  …下瞼
３０  …口角
３２  …肩
３４  …腰
３６  …ＣＰＵ
４２  …メモリ
【図１】
0006583815.tif 000002
【図２】
0006583815.tif 000003
【図３】
0006583815.tif 000004
【図４】
0006583815.tif 000005
【図５】
0006583815.tif 000006
【図６】
0006583815.tif 000007
【図７】
0006583815.tif 000008
【図８】
0006583815.tif 000009
【図９】
0006583815.tif 000010
【図１０】
0006583815.tif 000011
【図１１】
0006583815.tif 000012