JP2004258289A - ロボット制御装置および方法、記録媒体、並びにプログラム - Google Patents
ロボット制御装置および方法、記録媒体、並びにプログラム Download PDFInfo
- Publication number
- JP2004258289A JP2004258289A JP2003048558A JP2003048558A JP2004258289A JP 2004258289 A JP2004258289 A JP 2004258289A JP 2003048558 A JP2003048558 A JP 2003048558A JP 2003048558 A JP2003048558 A JP 2003048558A JP 2004258289 A JP2004258289 A JP 2004258289A
- Authority
- JP
- Japan
- Prior art keywords
- unit
- recognition
- robot
- noise
- word string
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Landscapes
- Toys (AREA)
- Manipulator (AREA)
Abstract
【課題】大きなノイズが混入した音声の音声認識結果を除去する。
【解決手段】音声認識部121は、マイクロフォン82により集音された音声を音声認識して生成した単語列を、認識結果除去フィルタ103に供給する。ノイズ予測部102は、角速度センサ77から供給されたアクチュエータの角速度、並びに頭部スイッチ51および足底スイッチ76オン・オフの信号に基づいて、ロボット1自身の動作により発生されるであろうノイズの大きさ(以下、ノイズ予測値)を求め、認識結果除去フィルタ103に供給する。認識結果除去フィルタ103は、ノイズ予測値に基づいて、音声認識部121から供給された単語列から、大きなノイズが所定の時間以上混入していると予測される単語列を除去する。本発明は、ロボットに適用できる。
【選択図】 図6
【解決手段】音声認識部121は、マイクロフォン82により集音された音声を音声認識して生成した単語列を、認識結果除去フィルタ103に供給する。ノイズ予測部102は、角速度センサ77から供給されたアクチュエータの角速度、並びに頭部スイッチ51および足底スイッチ76オン・オフの信号に基づいて、ロボット1自身の動作により発生されるであろうノイズの大きさ(以下、ノイズ予測値)を求め、認識結果除去フィルタ103に供給する。認識結果除去フィルタ103は、ノイズ予測値に基づいて、音声認識部121から供給された単語列から、大きなノイズが所定の時間以上混入していると予測される単語列を除去する。本発明は、ロボットに適用できる。
【選択図】 図6
Description
【0001】
【発明の属する技術分野】
本発明は、ロボット制御装置および方法、記録媒体、並びにプログラムに関し、特に、音声認識、および、駆動が可能なロボットを制御する場合に用いて好適な、ロボット制御装置および方法、記録媒体、並びにプログラムに関する。
【0002】
【従来の技術】
近年、ユーザが発した音声を音声認識し、その音声認識結果に基づいて、機械的動作をしたり、合成音を出力する等の行動を行うロボット(本明細書においては、人型2足歩行ロボットを含む)が製品化され、また、より人間らしい行動をするロボットの研究開発が進んでいる。
【0003】
ユーザにより発せられた音声を音声認識し、この音声認識結果に基づいて行動を行なう対話システムにおいては、ロボットが動作する際に発生するモータ音などのノイズの影響で、ユーザが発話した内容を、誤って音声認識してしまうことがある。
【0004】
この問題を解決するものとして、例えば、ロボットに複数装着されたマイクロフォンにより、ロボットの周囲の環境音(ロボット自身が発生するノイズを含む)を取得し、この環境音に基づいて、ユーザにより発話された音声とノイズを分離するようにしたものがある(例えば、特許文献1参照)。
【0005】
また、マイクロフォンの近傍のアクチュエータが稼動した場合、音声認識を中止するようにしたものもある(例えば、特許文献2参照)。
【0006】
【特許文献1】
特開2001−215989号公報
【特許文献2】
特開2002−116794号公報
【0007】
【発明が解決しようとする課題】
しかしながら、特許文献1に記載された方法の場合、ユーザにより発話された音声をノイズから正確に分離するのが困難であるという課題があった。
【0008】
また、特許文献2に記載された方法の場合、ノイズの発生の有無を、マイクロフォンの近傍のアクチュエータが駆動したか否かという情報だけで判断するため、そのアクチュエータが動作することが、音声認識に重大な影響を与えるか否かを適切に判断することが難しいという課題があった。例えば、アクチュエータが発生するノイズが、音声認識に駅用を与えないほど小さくても、音声認識を中止してしまうことがあった。また、マイクロフォンから遠い位置に設置されたアクチュエータが、大きなノイズを発生する場合、そのアクチュエータを駆動した場合でも、音声認識に重大な影響を与えるが、これが考慮されていないという課題があった。さらに、複数のアクチュエータが同時に駆動した場合、たとえ駆動したアクチュエータが、マイクロフォンの近傍になくても、音声認識に重大な影響を与える可能性があるが、このような状況が考慮されていないという課題があった。
【0009】
従って、特許文献1や特許文献2に記載された方法を採用した場合、ロボットは、ユーザの発言内容を誤って音声認識し、その認識結果に基づいて、ユーザが意図していない、誤った行動をしてしまう可能性があった。
【0010】
本発明はこのような状況に鑑みてなされたものであり、誤った音声認識結果である可能性が高い音声認識結果を適切に除去することができるようにするものである。
【0011】
【課題を解決するための手段】
本発明のロボット制御装置は、機械的動作を実行する動作実行手段と、動作実行手段により実行された機械的動作に関する物理量を取得する取得手段と、取得手段により取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値を算出する算出手段と、音声を認識する音声認識手段と、算出手段により算出された予測値に基づいて、音声認識手段により認識され、生成された単語列から、利用しない単語列を除去する除去手段とを備えることを特徴とする。
【0012】
前記動作実行手段には、アクチュエータを含むようにさせ、前記物理量は前記アクチュエータの角速度または速度を含むようにすることができる。
【0013】
前記取得手段には、前記ロボットに設置されたスイッチのオン・オフを示す情報を前記物理量としてさらに取得するようにさせることができる。
【0014】
前記音声認識手段には、前記算出手段により算出された前記予測値に基づいて、認識する前記音声を選択するようにさせることができる。
【0015】
前記除去手段には、前記単語列に対応する音声の発声時間に占める、前記予測値が所定の閾値以上である時間の割合が、予め設定された所定の基準値以上であった場合、前記単語列を除去するようにさせることができる。
【0016】
前記音声認識手段には、異なる言語モデルに基づく複数の認識処理を並列に実行するようにさせ、前記除去手段には、複数の前記認識処理のそれぞれの前記閾値を異なる値に設定するようにさせることができる。
【0017】
前記機械的動作のうちパターン化された定型動作が実行される場合において、認識結果を除去すべき認識結果除去区間を予め記憶する記憶手段をさらに設けるようにし、前記動作実行手段により前記定型動作が実行される場合、前記算出手段には、前記予測値の算出を中止するようにさせ、前記除去手段には、記憶手段により記憶された認識結果除去区間に基づいて、前記音声認識手段により生成された前記単語列から、利用しない前記単語列を除去するようにさせることができる。
【0018】
本発明のロボット制御方法は、機械的動作を実行する動作実行ステップと、動作実行ステップの処理により実行された機械的動作に関する物理量を取得する取得ステップと、取得ステップの処理により取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値を算出する算出ステップと、音声を認識する音声認識ステップと、算出ステップの処理により算出された予測値に基づいて、音声認識ステップの処理により認識され、生成された単語列から、利用しない単語列を除去する除去ステップとを含むことを特徴とする。
【0019】
本発明の記録媒体のプログラムは、機械的動作を実行する動作実行ステップと、動作実行ステップの処理により実行された機械的動作に関する物理量を取得する取得ステップと、取得ステップの処理により取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値を算出する算出ステップと、音声を認識する音声認識ステップと、算出ステップの処理により算出された予測値に基づいて、音声認識ステップの処理により認識され、生成された単語列から、利用しない単語列を除去する除去ステップとを含むことを特徴とする。
【0020】
本発明のプログラムは、ロボットの動作を制御するコンピュータに、機械的動作を実行する動作実行ステップと、動作実行ステップの処理により実行された機械的動作に関する物理量を取得する取得ステップと、取得ステップの処理により取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値を算出する算出ステップと、音声を認識する音声認識ステップと、算出ステップの処理により算出された予測値に基づいて、音声認識ステップの処理により認識され、生成された単語列から、利用しない単語列を除去する除去ステップとを実行させることを特徴とする。
【0021】
本発明のロボット制御装置および方法、記録媒体、並びにプログラムにおいては、機械的動作が実行され、実行された機械的動作に関する物理量が取得され、取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値が算出され、音声が認識され、算出された予測値に基づいて、生成された単語列から、利用しない単語列が除去される。
【0022】
本発明は、例えばロボットに適用することができる。
【0023】
【発明の実施の形態】
以下、図を参照して、本発明の実施の形態について説明する。
【0024】
図1は、本発明を適用した2足歩行型のロボット1の正面方向の斜視図であり、図2は、ロボット1の背面方向からの斜視図である。また、図3は、ロボット1の軸構成について説明するための図である。
【0025】
ロボット1は、胴体部ユニット11、胴体部ユニット11の上部に配設された頭部ユニット12、胴体部ユニット11の上部左右の所定位置に取り付けられた腕部ユニット13Aおよび腕部ユニット13B、並びに胴体部ユニット11の下部左右の所定位置に取り付けられた脚部ユニット14Aおよび脚部ユニット14Bにより構成されている。腕部ユニット13Aおよび腕部ユニット13Bは、同様の構成とされる。また、脚部ユニット14Aおよび脚部ユニット14Bも、同様の構成とされる。頭部ユニット12には、頭部スイッチ51が設けられている。
【0026】
胴体部ユニット11は、体幹上部を形成するフレーム21および体幹下部を形成する腰ベース22が腰関節機構23を介して連結することにより構成されている。胴体部ユニット11は、体幹下部の腰ベース22に固定された腰関節機構23のアクチュエータA1、および、アクチュエータA2をそれぞれ駆動することによって、体幹上部を、図3に示す直交するロール軸24およびピッチ軸25の回りに、それぞれ独立に回転させることができるようになされている。
【0027】
頭部ユニット12は、フレーム21の上端に固定された肩ベース26の上面中央部に首関節機構27を介して取り付けられており、首関節機構27のアクチュエータA3、およびアクチュエータA4をそれぞれ駆動することによって、図3に示す直交するピッチ軸28およびヨー軸29の回りに、それぞれ独立に回転させることができるようになされている。
【0028】
腕部ユニット13A、および腕部ユニット13Bは、肩関節機構30を介して肩ベース26の左右にそれぞれ取り付けられており、対応する肩関節機構30のアクチュエータA5、および、アクチュエータA6をそれぞれ駆動することによって、図3に示す、直交するピッチ軸31およびロール軸32の回りに、それぞれを独立に回転させることができるようになされている。
【0029】
この場合、腕部ユニット13A、および腕部ユニット13Bは、上腕部を形成するアクチュエータA7の出力軸に、肘関節機構44を介して、前腕部を形成するアクチュエータA8が連結され、前腕部の先端に手部34が取り付けられることにより構成されている。
【0030】
そして腕部ユニット13A、および腕部ユニット13Bでは、アクチュエータA7を駆動することによって、前腕部を図3に示すヨー軸35に対して回転させることができ、アクチュエータA8を駆動することによって、前腕部を図3に示すピッチ軸36に対して回転させることができるようになされている。
【0031】
脚部ユニット14A、および、脚部ユニット14Bは、股関節機構37を介して、体幹下部の腰ベース22にそれぞれ取り付けられており、対応する股関節機構37のアクチュエータA9乃至A11をそれぞれ駆動することによって、図3に示す、互いに直交するヨー軸38、ロール軸39、およびピッチ軸40に対して、それぞれ独立に回転させることができるようになされている。
【0032】
脚部ユニット14A、および、脚部ユニット14Bにおいては、大腿部を形成するフレーム41の下端が、膝関節機構42を介して、下腿部を形成するフレーム43に連結されるとともに、フレーム43の下端が、足首関節機構44を介して、足部45に連結されている。
【0033】
これにより脚部ユニット14A、および、脚部ユニット14Bにおいては、膝関節機構42を形成するアクチュエータA12を駆動することによって、図3に示すピッチ軸46に対して、下腿部を回転させることができ、また足首関節機構44のアクチュエータA13、および、アクチュエータA14をそれぞれ駆動することによって、図3に示す直交するピッチ軸47およびロール軸48に対して、足部45をそれぞれ独立に回転させることができるようになされている。
【0034】
脚部ユニット14A、および脚部ユニット14Bの、足部45の足底面(床と接する面)には、それぞれ足底スイッチ76(図5)が配設されており、足底スイッチ76のオン・オフに基づいて、足部45が床に接地しているか否かが判別される。
【0035】
また、胴体部ユニット11の体幹下部を形成する腰ベース22の背面側には、後述するメイン制御部61や周辺回路62(いずれも図4)などを内蔵したボックスである、制御ユニット52が配設されている。
【0036】
図4は、ロボット1のアクチュエータとその制御系等について説明する図である。
【0037】
制御ユニット52には、ロボット1全体の動作制御をつかさどるメイン制御部61、電源回路および通信回路などの周辺回路62、および、バッテリ74(図5)などが収納されている。
【0038】
そしてこの制御ユニット52は、各構成ユニット(胴体部ユニット11、頭部ユニット12、腕部ユニット13Aおよび腕部ユニット13B、並びに、脚部ユニット14Aおよび脚部ユニット14B)内にそれぞれ配設されたサブ制御部63A乃至63Dと接続されており、サブ制御部63A乃至63Dに対して必要な電源電圧を供給したり、サブ制御部63A乃至63Dと通信を行う。
【0039】
また、サブ制御部63A乃至63Dは、対応する構成ユニット内のアクチュエータA1乃至A14と、それぞれ接続されており、メイン制御部61から供給された各種制御コマンドに基づいて、構成ユニット内のアクチュエータA1乃至A14を、指定された状態に駆動させるように制御する。
【0040】
アクチュエータA1乃至A14のそれぞれには、角速度センサ77(図5)が内蔵されており、アクチュエータA1乃至A14の回転の角速度を検知し、角速度を情報として含む角速度検出信号をメイン制御部61に送出する。従って、メイン制御部61は、アクチュエータA1乃至A14のそれぞれから、リアルタイムで、角速度検出信号を受信する。
【0041】
図5は、ロボット1の内部構成を示すブロック図である。
【0042】
頭部ユニット12には、このロボット1の「目」として機能するCCD(Charge Coupled Device )カメラ81、「耳」として機能するマイクロホン82、頭部スイッチ51などからなる外部センサ部71、および、「口」として機能するスピーカ72となどがそれぞれ所定位置に配設され、制御ユニット52内には、バッテリセンサ91および加速度センサ92などからなる内部センサ部73が配設されている。また、脚部ユニット14A、および脚部ユニット14Bの足部45の足底面には、このロボット1の「体性感覚」の1つとして機能する足底スイッチ76が配設されている。さらに、上記したように、アクチュエータA1乃至A14のそれぞれには、このロボット1の「体性感覚」の1つとして機能する角速度センサ77が配設されている。
【0043】
そして、外部センサ部71のCCDカメラ81は、周囲の状況を撮像し、得られた画像信号S1Aを、メイン制御部61に送出する。マイクロホン82は、ユーザから音声入力として与えられる「歩け」、「とまれ」または「右手を挙げろ」等の各種命令音声を集音し、得られた音声信号S1Bを、メイン制御部61に送出する。
【0044】
また、頭部スイッチ51は、例えば、図1および図2に示されるように頭部ユニット12の上部に設けられており、ユーザからの「撫でる」や「叩く」といった物理的な働きかけにより受けた圧力を検出し、検出結果を、圧力検出信号S1Cとしてメイン制御部61に送出する。
【0045】
足底スイッチ76は、足部45の足底面に配設されており、足部45が床に接地している場合、接地信号S1Dをメイン制御部61に送出する。メイン制御部61は、接地信号S1Dに基づいて、足部45が床に接地しているか否かを判定する。足底スイッチ76は、脚部ユニット14A、および脚部ユニット14Bの両方の足部45に配設されているため、メイン制御部61は、接地信号S1Dに基づいて、ロボット1の両足が床に接地しているか、片足が床に接地しているか、両足とも床に接地していないかを判定することができる。
【0046】
アクチュエータA1乃至A14それぞれに内蔵された角速度センサ77は、アクチュエータA1乃至A14それぞれの角速度検出信号S1Eを、リアルタイムでメイン制御部61に送出する。
【0047】
内部センサ部73のバッテリセンサ91は、バッテリ74のエネルギ残量を所定の周期で検出し、検出結果をバッテリ残量検出信号S2Aとして、メイン制御部61に送出する。加速度センサ92は、ロボット1の移動について、3軸方向(x軸、y軸、およびz軸)の加速度を、所定の周期で検出し、検出結果を、加速度検出信号S2Bとして、メイン制御部61に送出する。
【0048】
メイン制御部61は、外部センサ部71のCCDカメラ81、マイクロホン82および頭部スイッチ51からそれぞれ供給される、画像信号S1A、音声信号S1Bおよび圧力検出信号S1C、並びに足底スイッチ76および角速度センサ77からそれぞれ供給される接地信号S1D、および角速度検出信号S1E(以下、これらをまとめて外部センサ信号S1と称する)と、内部センサ部73のバッテリセンサ91および加速度センサ92等からそれぞれ供給される、バッテリ残量検出信号S2Aおよび加速度検出信号S2B(以下、これらをまとめて内部センサ信号S2と称する)に基づいて、ロボット1の周囲および内部の状況や、ユーザからの指令、または、ユーザからの働きかけの有無などを判断する。
【0049】
そして、メイン制御部61は、ロボット1の周囲および内部の状況や、ユーザからの指令、または、ユーザからの働きかけの有無の判断結果と、内部メモリ61Aに予め格納されている制御プログラム、あるいは、そのとき装填されている外部メモリ75に格納されている各種制御パラメータなどに基づいて、ロボット1の行動を決定し、決定結果に基づく制御コマンドCOMを生成して、対応するサブ制御部63A乃至63Dに送出する。サブ制御部63A乃至63Dは、供給された制御コマンドCOMに基づいて、アクチュエータA1乃至A14のうち、対応するものの駆動を制御するので、ロボット1は、例えば、頭部ユニット12を上下左右に揺動させたり、腕部ユニット13A、あるいは、腕部ユニット13Bを上に挙げたり、脚部ユニット14Aおよび脚部ユニット14Bを交互に駆動させて、歩行するなどの機械的動作を行うことが可能となる。
【0050】
また、メイン制御部61は、必要に応じて、所定の音声信号S3をスピーカ72に与えることにより、音声信号S3に基づく音声を外部に出力させる。更に、メイン制御部61は、外見上の「目」として機能する、頭部ユニット12の所定位置に設けられた、図示しないLEDに対して駆動信号を出力することにより、LEDを点滅させる。
【0051】
このようにして、ロボット1は、周囲および内部の状況や、ユーザからの指令および働きかけの有無などに基づいて、自律的に行動することができるようになされている。
【0052】
次に、図6は、図5のメイン制御部61の機能的構成例を示している。なお、図6に示す機能的構成は、メイン制御部61が、メモリ61Aに記憶された制御プログラムを実行することで実現されるようになっている。
【0053】
メイン制御部61は、特定の外部状態を認識するセンサ入力処理部101、頭部スイッチ51、足底スイッチ76、および角速度センサ77からそれぞれ供給される圧力検出信号S1C、接地信号S1D、および角速度信号S1Eに基づいて、ノイズ(雑音)の大きさの予測値(以下、ノイズ予測値と称する)を算出するノイズ予測部102、音声認識して生成された単語列から、所定の大きさ以上の雑音下で集音された音声に対応する単語列を除去する認識結果除去フィルタ103、複数の認識結果から1つを選択する認識結果評価部104、センサ入力処理部101の認識結果を累積して、ロボット1の感情、本能、あるいは、成長の状態などのモデルを記憶するモデル記憶部106、音声認識結果と行動内容のテーブルを記憶するテーブル記憶部107、センサ入力処理部101の認識結果や、テーブル記憶部107に記憶されているテーブル等に基づいて、ロボット1の行動を決定し、ロボット1に行動を起こさせる行動制御部105、並びに合成音を生成する音声合成部108から構成されている。
【0054】
センサ入力処理部101は、マイクロホン82、角速度センサ77、加速度センサ92、頭部スイッチ51、足底スイッチ76、およびCCDカメラ81等から与えられる音声信号、角速度検出信号、加速度検出信号、圧力検出信号、接地信号、および画像信号等に基づいて、特定の外部状態や、ユーザからの特定の働きかけ、ユーザからの指示等を認識し、その認識結果を表す状態認識情報を、モデル記憶部106および行動制御部105に通知する。
【0055】
すなわち、センサ入力処理部101は、音声認識部121を有しており、音声認識部121は、マイクロホン82から与えられる音声信号について音声認識を行う。そして、音声認識部121は、例えば、「歩け」、「止まれ」、「右手を挙げろ」等の指令、その他の音声認識結果としての単語列を、認識結果除去フィルタ103に供給する。
【0056】
また、センサ入力処理部101は、姿勢処理部122を有しており、姿勢処理部122は、加速度センサ92、角速度センサ77、および足底スイッチ76から供給される加速度検出信号、角速度検出信号、および接地信号に基づいて、ロボット1がとっている姿勢や動作状態を推定し、この推定結果を、状態認識情報として、モデル記憶部106および行動制御部105に通知する。
【0057】
また、センサ入力処理部101は、圧力処理部123を有しており、圧力処理部123は、頭部スイッチ51から与えられる圧力検出信号を処理する。そして、圧力処理部123は、その処理の結果、所定の閾値以上で、かつ短時間の圧力を検出したときには、「叩かれた(しかられた)」と認識し、所定の閾値未満で、かつ長時間の圧力を検出したときには、「撫でられた(ほめられた)」と認識して、その認識結果を、状態認識情報として、モデル記憶部106および行動制御部105に通知する。
【0058】
更に、センサ入力処理部101は、画像認識部124を有しており、画像認識部124は、CCDカメラ81から与えられる画像信号を用いて、画像認識処理を行う。そして、画像認識部124は、その処理の結果、例えば、「赤い丸いもの」や、「地面に対して垂直なかつ所定高さ以上の平面」等を検出したときには、「ボールがある」や、「壁がある」等の画像認識結果を、状態認識情報として、モデル記憶部106および行動制御部105に通知する。
【0059】
モデル記憶部106は、ロボット1の感情、本能、成長の状態を表現する感情モデル、本能モデル、成長モデルをそれぞれ記憶、管理している。
【0060】
ここで、感情モデルは、例えば、「うれしさ」、「悲しさ」、「怒り」、「楽しさ」等の感情の状態(度合い)を、所定の範囲(例えば、−1.0乃至1.0等)の値によってそれぞれ表し、センサ入力処理部101からの状態認識情報や時間経過等に基づいて、その値を変化させる。本能モデルは、例えば、「食欲」、「睡眠欲」、「運動欲」等の本能による欲求の状態(度合い)を、所定の範囲の値によってそれぞれ表し、センサ入力処理部101からの状態認識情報や時間経過等に基づいて、その値を変化させる。成長モデルは、例えば、「幼年期」、「青年期」、「熟年期」、「老年期」等の成長の状態(度合い)を、所定の範囲の値によってそれぞれ表し、センサ入力処理部101からの状態認識情報や時間経過等に基づいて、その値を変化させる。
【0061】
モデル記憶部106は、上述のようにして感情モデル、本能モデル、成長モデルの値で表される感情、本能、成長の状態を、状態情報として、行動制御部105に送出する。
【0062】
なお、モデル記憶部106には、センサ入力処理部101から状態認識情報が供給される他、行動制御部105から、ロボット1の現在または過去の行動、具体的には、例えば、「長時間歩いた」などの行動の内容を示す行動情報が供給されるようになっており、モデル記憶部106は、同一の状態認識情報が与えられても、行動情報が示すロボット1の行動に応じて、異なる状態情報を生成するようになっている。
【0063】
即ち、例えば、ロボット1が、ユーザに挨拶をし、ユーザに頭を撫でられた場合には、ユーザに挨拶をしたという行動情報と、頭を撫でられたという状態認識情報とが、モデル記憶部106に与えられ、この場合、モデル記憶部106では、「うれしさ」を表す感情モデルの値が増加される。
【0064】
一方、ロボット1が、何らかの仕事を実行中に頭を撫でられた場合には、仕事を実行中であるという行動情報と、頭を撫でられたという状態認識情報とが、モデル記憶部106に与えられ、この場合、モデル記憶部106では、「うれしさ」を表す感情モデルの値は変化されない。
【0065】
このように、モデル記憶部106は、状態認識情報だけでなく、現在または過去のロボット1の行動を示す行動情報も参照しながら、感情モデルの値を設定する。これにより、例えば、何らかのタスクを実行中に、ユーザが、いたずらするつもりで頭を撫でたときに、「うれしさ」を表す感情モデルの値を増加させるような、不自然な感情の変化が生じることを回避することができる。
【0066】
なお、モデル記憶部106は、本能モデルおよび成長モデルについても、感情モデルにおける場合と同様に、状態認識情報および行動情報の両方に基づいて、その値を増減させるようになっている。また、モデル記憶部106は、感情モデル、本能モデル、成長モデルそれぞれの値を、他のモデルの値にも基づいて増減させるようになっている。
【0067】
行動制御部105は、センサ入力処理部101からの状態認識情報や、モデル記憶部106からの状態情報、時間経過等に基づいて、必要に応じて、テーブル記憶部107に記憶されたテーブルを参照して、次の行動を決定し、決定された行動に対応する行動プログラム105Aを読み出し、行動プログラム105Aに基づく指令を、サブ制御部63A乃至63Dに送出する。
【0068】
すなわち、行動制御部105は、ロボット1がとり得る行動をステート(状態:state)に対応させた有限オートマトンを、ロボット1の行動を規定する行動モデルとして管理しており、この行動モデルとしての有限オートマトンにおけるステートを、センサ入力処理部101からの状態認識情報や、モデル記憶部106における感情モデル、本能モデル、または成長モデルの値、時間経過等に基づいて遷移させ、遷移後のステートに対応する行動を、次にとるべき行動として決定する。
【0069】
ここで、行動制御部105は、所定のトリガ(trigger)があったことを検出すると、ステートを遷移させる。即ち、行動制御部105は、例えば、現在のステートに対応する行動を実行している時間が所定時間に達したときや、特定の状態認識情報を受信したとき、モデル記憶部106から供給される状態情報が示す感情や、本能、成長の状態の値が所定の閾値以下または以上になったとき等に、ステートを遷移させる。
【0070】
なお、行動制御部105は、上述したように、センサ入力処理部101からの状態認識情報だけでなく、モデル記憶部106における感情モデルや、本能モデル、成長モデルの値等にも基づいて、行動モデルにおけるステートを遷移させることから、同一の状態認識情報が入力されても、感情モデルや、本能モデル、成長モデルの値(状態情報)によっては、ステートの遷移先は異なるものとなる。
【0071】
なお、行動制御部105では、上述したように、ロボット1の頭部や手足等を動作させる行動指令情報の他、ロボット1に発話を行わせる行動指令情報も生成される。ロボット1に発話を行わせる行動指令情報は、音声合成部108に供給されるようになっており、音声合成部108に供給される行動指令情報には、音声合成部108に生成させる合成音に対応するテキスト等が含まれる。そして、音声合成部108は、行動決定部52から行動指令情報を受信すると、その行動指令情報に含まれるテキストに基づき、合成音を生成し、スピーカ72に供給して出力させる。これにより、スピーカ72からは、例えば、「こんにちは」などのユーザへの挨拶、ユーザへの各種の要求、あるいは、「何ですか?」等のユーザの呼びかけに対する応答その他の音声出力が行われる。
【0072】
図7は、センサ入力処理部101の音声認識部121の機能を示す機能ブロック図である。
【0073】
この構成例においては、マイクロフォン82から入力され、図示せぬAD変換部によりデジタル信号に変換された音声から特徴量を演算する特徴抽出部151、および特徴量を分析し、音声の認識処理をおこなう認識処理制御部152が設けられている。
【0074】
認識処理制御部152は、複数の言語モデル(語彙と文法)に対応する認識処理を並列に処理することができるように構成されており、1つの言語モデルに対応する認識処理を行なうモジュールとして、それぞれ認識処理部161−1乃至161−4が設けられている。
【0075】
認識処理制御部152においては、新たな言語モデルに対応した認識処理部を追加したり、不要になった認識処理部を削除することができる。また、各認識処理部に対して、認識処理を停止させたり、開始させたりすることができる。すなわち、複数の認識処理部を同時に駆動したり、認識処理部を切り替えたりすることによって、複数の言語モデルを同時に駆動したり、言語モデルを切り替えることができる。
【0076】
認識処理部161−1乃至161−4には、特徴抽出部151により演算された特徴量に基づいて、音声のマッチングを行うマッチング部171−1乃至171−4が設けられており、また、語彙に関する情報が蓄積された辞書データベース172−1乃至172−4、文法に関する情報が蓄積された文法データベース173−1乃至173−4が設けられている。さらに音響に関する情報が蓄積された音響モデルデータベース162が、マッチング部171−1乃至171−4と接続されている。
【0077】
なお、以下の説明において、認識処理部161−1乃至161−4のそれぞれを、個々に区別する必要がない場合、まとめて認識処理部161と称する。他の部分についても同様とする。また、図7の例においては、認識処理部は、認識処理部161−1乃至161−4の4つが示されているが、認識処理部は、必要に応じて、3つ以下、または5つ以上設けられることもある。
【0078】
音響モデルデータベース162により、同じ音響モデルをすべての認識処理部161が共有して利用することができるように構成されており、これによって消費するメモリや音響モデルにおいて発生するスコア計算のための処理などを効率的に共有することが可能となる。
【0079】
音響モデルデータベース162は、音声認識する音声の言語における個々の音素や音節などの音響的な特徴を表す音響モデルを記憶している。音響モデルとしては、例えば、HMM(Hidden Markov Model)が用いられる。辞書データベース172−1乃至172−4は、認識対象の各単語(語彙)について、その発音に関する情報(音韻情報)が記述された単語辞書を記憶している。文法データベース173−1乃至173−4は、辞書データベース172−1乃至172−4の単語辞書に登録されている各単語が、どのように連鎖する(つながる)かを記述した文法規則(言語モデル)を記憶している。文法規則としては、例えば、文脈自由文法(CFG)に基づく記述や、統計的な単語連鎖確率(N−gram)などが用いられる。
【0080】
辞書データベース172−1乃至172−4にはそれぞれ異なる語彙に関する情報が蓄積されており、文法データベース173−1乃至173−4にもそれぞれ異なる文法に関する情報が蓄積されている。この辞書データベース172と文法データベース173の組み合わせにより言語モデルが決定される。
【0081】
ところで、従来、ロボットは、動作時に、アクチュエータや頭部スイッチおよび足底スイッチから、ノイズ(雑音)を発生する。ロボットは、この自身が発生するノイズにより、音声認識の結果を誤る場合があり、その結果、ユーザが意図しない行動を実行してしまう恐れがあった。
【0082】
そこで、この問題を解決するために、本発明のロボット1は、ロボット1自身が動作中に発するノイズの大きさを、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量に基づいて、リアルタイムに予測する。そして、ノイズの予測値が、予め設定された所定の閾値より大きい時間が、音声認識した時間に占める割合が、所定の割合より大きかった場合、その間にマイクロフォン82により集音された音声の音声認識結果を除外するようになされている。
【0083】
これにより、誤った音声認識をした確率の高い音声認識結果を除外して、信頼性の高い音声認識結果のみを利用することができる。
【0084】
アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量から、ノイズの大きさを推測するためには、アクチュエータA1乃至A14を稼動させたり、頭部スイッチ51および足底スイッチ76をオン・オフしたりした場合に、どれくらい大きなノイズが発生するのかを、予め測定しておく必要がある。そこで、ロボット1の製造者は、ロボット1の出荷前に、ロボット1に種々の動作を実行させて、マイクロフォン82からノイズを集音する。そして、製造者は、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量と、発生するノイズ値の関係式を求め、これをロボット1に記憶させる。
【0085】
その後、ロボット1は、出荷され、ユーザにより使用される。ロボット1は、ユーザが発話した音声を音声認識する際、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量を、記憶された関係式に代入することにより、ノイズの予測値を算出し、この予測値に基づいて、利用しない区間の音声認識結果を除外する。
【0086】
このようにすることにより、ロボット1自身が発生するノイズの影響で、誤って音声認識した場合でも、その認識結果に基づいて、ロボット1が動作してしまうことを防ぐことができる。
【0087】
なお、以下の説明において、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量に基づいて、ノイズ予測値を算出する関係式を、ノイズ予測値算出式と称する。
【0088】
次に、図8は、出荷前のロボット1に種々の動作を実行させ、ノイズを測定する場合の構成例を表している。
【0089】
図8において、ロボット1は、ケーブル202を介して、コンピュータ201と接続されており、ケーブル202を介して、種々の情報の授受が行なわれる。ロボット1は、外界の音が遮音された防音室内に置かれ、コンピュータ201からの指示に従って、種々の動作を実行し、マイクロフォン82から集音された音声(ノイズ)をコンピュータ201に出力する。コンピュータ201は、ケーブル202を介して、ロボット1に種々の動作を実行するように指令し、ロボット1が動作中にマイクロフォン82から集音された音声(ノイズ)をロボット1から取得し、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量、およびマイクロフォン82から集音された音声のノイズ値を基に、ノイズ予測値算出式を求める。そして、コンピュータ201は、求められたノイズ予測値算出式を、ロボット1に供給し、記憶させる。
【0090】
次に、図9および図10のフローチャートを参照して、ノイズ予測値算出式を求め、ロボット1に記憶させるまでの設定処理について説明する。
【0091】
なお、図9はコンピュータ201の処理を、図10はロボット1の処理をそれぞれ示している。また、以下の設定処理の説明においては、物理量として、アクチュエータA1乃至A14の角速度のみを考えることとする。その理由は、頭部スイッチ51および足底スイッチ76をオン・オフする際のノイズは、アクチュエータA1乃至A14により発生されるノイズと比較して、ごく短時間のうちに発生するため、アクチュエータA1乃至A14により発生されるノイズ、並びに頭部スイッチ51および足底スイッチ76をオン・オフする際のノイズの両方を考慮した1つのノイズ予測値算出式を求める代わりに、それぞれでノイズ予測値算出式を求めるためである。従って、図9および図10のフローチャートの処理を実行中、ロボット1の頭部スイッチ51および足底スイッチ76は、オン・オフしないように固定されている。
【0092】
図9のステップS1において、コンピュータ201は、ケーブル202を介して、ロボットに対して、所定の動作を実行するように指令する。この所定の動作は、例えば、2足歩行、腕部ユニット13A(13B)の挙上、頭部ユニット12の回転等や、これらの動作を複合した複合動作などであり、コンピュータ201は、多数の動作パターンを予め記憶している。なお、ロボット1に実行させる動作パターンが多いほど、より高精度なノイズ予測値算出式を求めることができる。
【0093】
図10のステップS21において、ロボット1のメイン制御部61は、コンピュータ201より、所定の動作の実行の指示が入力されたか否かを判定し、周辺回路62(通信回路)を経由して、コンピュータ201より、所定の動作の実行の指示が入力された場合、処理はステップS22に進む。
【0094】
ステップS22において、ロボット1のメイン制御部61(行動制御部105)は、サブ制御部63A乃至63Dを制御して、コンピュータ201から指示された動作を実行する。また、マイクロフォン82は、動作中の音声(ノイズ)を集音し、メイン制御部61に送出する。さらに、角速度センサ77は、動作中のアクチュエータA1乃至A14それぞれの角速度を検出し、角速度検出信号をメイン制御部61に送出する。メイン制御部61は、動作中にマイクロフォン82により集音された音声信号、および角速度センサ77から供給された角速度検出信号を取得する。
【0095】
ステップS23において、ロボット1のメイン制御部61は、ステップS22で取得した音声信号および角速度検出信号を、周辺回路62(通信回路)、およびケーブル202を介して、コンピュータ201に送信する。
【0096】
その後、処理はステップS21に戻り、上述したステップS21以降の処理が繰り返される。
【0097】
コンピュータ201は、図9のステップS2において、ロボット1が図10のステップS23で送信した音声信号および角速度検出信号を受信し、ステップS3において、受信した音声信号および角速度検出信号を記憶する。
【0098】
ステップS4において、コンピュータ201は、記憶している全動作パターンをロボット1に実行させたか否かを判定することにより、サンプルデータの取得を終了するか否かを判定し、まだ実行させていない動作パターンがあった場合(サンプルデータの取得を終了しないと判定した場合)、処理はステップS1に戻り、上述したステップS1以降の処理がくり返される。ただし、ステップS4の後に実行されるステップS1においては、コンピュータ201は、まだロボット1が実行していない動作を実行するように指示する。
【0099】
このようにして、コンピュータ201において、ステップS1乃至ステップS4の処理がくり返され、ロボット1において、ステップS21乃至ステップS23の処理がくり返されることにより、ロボット1に様々な動作を実行させた場合のサンプルデータ(ノイズ値)がコンピュータ201に蓄積される。
【0100】
そして、図9のステップS4において、コンピュータ201が、記憶している全動作パターンをロボット1に実行させたと判定した場合(サンプルデータの取得を終了すると判定した場合)、処理はステップS5に進む。
【0101】
ステップS5において、コンピュータ201は、ノイズ予測値算出式を求める。以下に、その具体例を記す。
【0102】
ノイズ予測値算出式は、例えば、アクチュエータA1乃至A14の角速度とノイズ値を統計分析することにより求められる。例えば、角速度に対するノイズ予測値を1次式で近似する場合、重回帰分析を行なって、式(1)のようなノイズ予測値算出式を求める。
【0103】
【数1】
【0104】
式(1)において、Fはノイズ予測値を表し、Pは係数(パラメータ)を表し、JはアクチュエータA1乃至A14の角速度を表し、Qはロボット1が動作しない場合のノイズ値を表している。また、iは、14個のアクチュエータA1乃至A14に対応している。
【0105】
すなわち、式(1)は、各アクチュエータの角速度JにパラメータPを掛け算した値(A×J)を、全アクチュエータ分(14個分)、足し算し、足し算した結果に対して、さらに、ロボット1が動作しない場合のノイズ値Bを足し算している。このパラメータPは、アクチュエータA1乃至A14毎に異なり、音声認識に与える影響が大きいほど、大きな値となる。
【0106】
すなわち、アクチュエータA1乃至A14は、そのサイズや、マイクロフォン82からの距離が異なる。従って、各アクチュエータが動作した場合に、音声認識に与える影響は、アクチュエータ毎に異なるものとなる。マイクロフォン82に近いアクチュエータにより発生されるノイズは、遠いアクチュエータにより発生されるノイズより、大きな音量のノイズとして集音されるため、より大きな影響を音声認識結果に与える。また、大きいアクチュエータは、小さいアクチュエータより大きな音量のノイズを発生するため、より大きな影響を音声認識結果に与える。
【0107】
このように、アクチュエータ毎に、音声認識に与える影響は異なる。従って、音声認識に対して、より影響力のあるアクチュエータに対して、パラメータPをより大きい値にすることにより、より適切に、ノイズ予測値を算出させることが可能となる。
【0108】
コンピュータ201は、ステップS5で、例えば、重回帰分析により、式(1)のパラメータPを求める。なお、上記したように、パラメータPは、アクチュエータA1乃至A14のそれぞれに対応して、14個求められる。なお、ロボット1の例においては、アクチュエータの個数が14個なので、式(1)のiは、1乃至14に設定されているが、アクチュエータの個数が異なれば、iもアクチュエータの個数に対応して設定される。また、パラメータPの個数も、アクチュエータの個数に対応した数だけ求められる。
【0109】
ステップS5の処理の後、処理はステップS6に進む。
【0110】
ステップS6において、コンピュータ201は、ステップS5で求められたパラメータPをロボット1に送信する。
【0111】
図10のステップS21において、ロボット1のメイン制御部61が、コンピュータ201から動作の指示は入力されていないと判定した場合、処理はステップS24に進む。
【0112】
ステップS24において、ロボット1のメイン制御部61は、コンピュータ201より、パラメータPが供給されたか否かを判定し、パラメータPは供給されていない場合、処理はステップS21に戻り、ステップS21以降の処理が繰り返される。ステップS24において、メイン制御部61が、コンピュータ201より、パラメータPが供給されたと判定した場合、処理はステップS25に進む。
【0113】
ステップS25において、メイン制御部61は、コンピュータ201より供給されたパラメータPを、内蔵するメモリ61Aに記憶させる。
【0114】
以上で、設定処理が終了され、ロボット1は、ケーブル202から切り離される。
【0115】
このようにして、アクチュエータA1乃至A14の角速度に対応するノイズ予測値算出式(上記の例においては、パラメータP)が求められる。頭部スイッチ51、および足底スイッチ76についても、上記と同様である。すなわち、防音室内で、ロボット1の頭部スイッチ51、および足底スイッチ76がオン・オフされ、そのときの音声(ノイズ)がマイクロフォン82により集音され、コンピュータ201に送られる。コンピュータ201は、この音声(ノイズ)の大きさに基づいて、頭部スイッチ51および足底スイッチ76のいずれか、または両方がオン・オフされた場合のノイズ予測値算出式を求め、求めた式をロボット1に記憶させる。
【0116】
ロボット1は、パラメータPが記憶された状態で、出荷され、ユーザにより使用される。
【0117】
次に、図11のフローチャートを参照して、ユーザにより使用されているロボット1が、ノイズに応じて、音声認識結果を除外する処理、すなわちロボット1のノイズ対応処理について説明する。
【0118】
ステップS51において、音声認識部121は、マイクロフォン82から音声が入力されたか否かを判定し、入力されたと判定されるまで待機する。そして、音声が入力されたと判定された場合、処理はステップS52に進む。なお、マイクロフォン82から入力される音声信号には、マイクロフォン82で集音された時点の現在時刻を示す時刻情報付加されて、音声認識部121に入力される。
【0119】
ステップS52において、音声認識部121は、音声認識処理を実行し、認識結果としての単語列、並びに単語列に対応する音声スコア、言語スコア、および時刻情報を認識結果除去フィルタ103に出力する。なお、時刻情報とは、単語列に対応する音声が発話された発話開始時刻と発話終了時刻を含む情報である。音声認識処理の詳細な説明は、図12のフローチャートを参照して、後述する。なお、音声認識部121は、認識処理部161−1乃至161−4のうち、認識処理を実行している全ての認識処理部から、それぞれ認識結果を出力する。
【0120】
ステップS53において、ノイズ予測部102は、ノイズ予測値取得処理を実行する。すなわち、ノイズ予測部102は、アクチュエータA1乃至A14により発生されるノイズ予測値を式(1)により算出し、頭部スイッチ51および足底スイッチ76により発生されるノイズ予測値を、頭部スイッチ51および足底スイッチ76用のノイズ予測値算出式により算出し、算出したノイズ予測値、およびノイズ予測値に対応する時刻を示す時刻情報を認識結果除去フィルタ103に出力する。ノイズ予測値取得処理の詳細な説明は、図13のフローチャートを参照して、後述する。
【0121】
なお、ステップS52の音声認識処理、およびステップS53のノイズ予測値取得処理は、説明の便宜上、ステップS52、ステップS53の順番に実行しているが、実際には、ステップS52およびステップS53の処理は並列に実行される。
【0122】
ステップS52およびステップS53がともに終了した後、処理はステップS54に進む。
【0123】
ステップS54において、認識結果除去フィルタ103は、ノイズ区間除去処理を実行する。すなわち、音声認識部121から出力された単語列には、その単語列に対応する音声が発話された時刻(発話開始時刻および発話終了時刻)の時刻情報がタグとして付加されている。また、ノイズ予測部102から出力されたノイズ予測値には、そのノイズ予測値に対応するノイズが発生された時刻の時刻情報がタグとして付加されている。そこで、認識結果除去フィルタ103は、これらの時刻情報を参照して、単語列が発話された時間全体における、ノイズ予測値が所定の大きさ以上である時間の占める割合を算出し、算出された割合が、予め設定された所定の割合以上である音声認識結果を除外する。その後、認識結果除去フィルタ103は、除外されずに残った音声認識結果を認識結果評価部104に出力する。ノイズ区間除去処理の詳細な説明は、図14のフローチャートを参照して後述する。なお、上記したように、音声認識部121では、認識処理を実行した全ての認識処理部から認識結果が出力される。従って、認識結果除去フィルタ103は、1以上の認識結果の全てに対して、ノイズを多く含む認識結果の除外を行う。
【0124】
ステップS54の処理の後、ステップS55において、認識結果評価部104は、認識結果評価処理を実行する。すなわち、音声認識部121では、認識処理を実行した全ての認識処理部から認識結果が出力される。従って、マイクロフォン82により集音された同じ音声信号から、各認識処理部によって、異なる単語列が生成される可能性がある。この場合、現在実行中の動作に従って、最適な単語列を選択する必要がある。そこで、認識結果評価部104は、単語列に付加されているスコアを参照して、ユーザの発言として採用すべき、最適な単語列を選択する。認識結果評価処理の詳細な説明は、図17のフローチャートを参照して、後述する。
【0125】
ステップS55の処理の後、ステップS56において、認識結果評価部104は、ステップS55で選択された単語列を、行動制御部105およびモデル記憶部106に出力する。その後、処理はステップS51に戻り、上述したステップS51以降の処理を繰り返し実行する。
【0126】
行動制御部105は、認識結果評価部104から供給された単語列等に基づいて、行動を決定し、サブ制御部63A乃至63D、および音声合成部108等を制御して、ロボット1に、所定の行動を実行させる。
【0127】
以上のようにして、ノイズ対応処理が実行される。
【0128】
以上のようなノイズ対応処理により、誤りである可能性の高い音声認識結果を、正確に除去することができる。その結果、誤った音声認識結果に基づいて、ロボットが行動してしまうことを防止することができる。また、ユーザの発話を集音するマイクロフォン以外に、ノイズ除去用のマイクロフォンを設置しないで済む。
【0129】
次に、図12のフローチャートを参照して、図11のステップS52の音声認識処理について詳細に説明する。
【0130】
ステップS71において、特徴抽出部151は、デジタル信号としての音声信号を、適当な時間間隔で周波数分析行うなどして、スペクトルや、その他の音声の音響的特徴を表すパラメータに変換し、特徴量として抽出する。
【0131】
ステップS72において、認識処理制御部152は、駆動させる認識処理部を選択する。
【0132】
例えば、ロボット1が、ユーザとの雑談、歌唱、および踊りを実行している場合を想定する。このとき、ロボット1では、雑談用、歌唱用、および踊り用のアプリケーションが起動している。また、ロボット1は、ユーザとの雑談用、歌唱用、および踊り用に、それぞれ1つずつ言語モデルを有しており、それぞれの言語モデルに対応した認識処理部が駆動されるものとする。さらに、全ての動作に共通に利用される言語モデルを1つ有しており、この言語モデルに対応した認識処理部が駆動されているものとする。なお、全ての動作に共通に利用される言語モデルとは、例えば「止まれ」などのように、重要度が大きいコマンドなどを認識するための言語モデルである。
【0133】
このとき、ロボット1は、現在実行中のアプリケーションに基づいて、全ての動作に共通に利用される言語モデルをもつ認識処理部、ユーザとの雑談用の言語モデルをもつ認識処理部、歌唱用の言語モデルをもつ認識処理部、および踊り用の言語モデルをもつ認識処理部を駆動する。ここでは、認識処理部161−1が全ての動作に共通に利用される言語モデルをもち、認識処理部161−2が雑談用の言語モデルをもち、認識処理部161−3が歌唱用の言語モデルをもち、認識処理部161−4が踊り用の言語モデルをもつものとする。
【0134】
従って、認識処理制御部152は、上記の認識処理部161−1乃至161−4を、駆動すべき認識処理部として選択する。すなわち、全部で4つの認識処理部161−1乃至161−4が認識処理制御部152で動作していることになり、1つのアプリケーションに対応する認識処理部はそれぞれ2つずつとなる。
【0135】
このように、認識処理制御部152は、実行中のアプリケーションに対応する言語モデルをもつ認識処理部を選択して駆動させる。
【0136】
その後、処理はステップS73に進む。なお、ステップS73乃至ステップS76の処理(以下、ステップS73乃至ステップS76の処理を単語系列認識処理とも称する)は、認識処理部161−1乃至161−4により、並列に実行される。
【0137】
ステップS73において、認識処理部161−1乃至161−4は、特徴抽出部151から出力された音声の特徴量を音響モデルデータベース162とマッチングし、音素、音節を判定する。なお、マイクロフォン82から入力され、AD変換された音声信号には、マイクロフォン82で集音されたときの現在時刻が付加されている。そこで、認識処理部161−1乃至161−4は、判定した音節毎に、対応する発話時刻を求め、この発話時刻を付加する。
【0138】
ステップS74において、認識処理部161−1乃至161−4は、音素、音節を辞書データベース172−1乃至172−4、および文法データベース173−1乃至173−4とマッチングして、音響スコアと言語スコアを演算する。
【0139】
すなわち、認識処理部161−1乃至161−4は、入力された特徴量がもつ音響的なパターンを、辞書データベース172に含まれる各単語に対応する音響的な標準パターンと比較し、音響的な評価値を、音響スコアとして演算する。また、文法としてたとえばバイグラムが用いられる場合には、認識処理部161−1乃至161−4は、直前の単語との連鎖確率に基づく各単語の言語的な確からしさを、文法データベース173に基づいて数値化し、これを言語スコアとして演算する。
【0140】
ステップS75において、認識処理部161−1乃至161−4は、音響スコアと言語スコアを総合して最も評価の高い単語列を決定し、ステップS76に進み、決定された単語列と、その単語列に対応する音声スコア、言語スコア、および時刻情報を認識結果除去フィルタ103に出力する。
【0141】
例えば、ユーザが、「今日はいい天気ですね。」と発声したとき、「今日」、「は」、「いい」、「天気」、「ですね」のような単語の系列が認識結果として得られることになる。このとき、各単語に対応して音響スコア、および言語スコアが与えられるとともに、各単語の発話時刻を示す時刻情報が与えられる。
【0142】
このようにして、入力された音声から単語系列が認識される。
【0143】
次に、図13のフローチャートを参照して、図11のステップS53のノイズ予測値取得処理について説明する。
【0144】
図13のステップS101において、ノイズ予測部102は、角速度センサ77から送出された角速度検出信号、頭部スイッチ51から送出された圧力検出信号、および足底スイッチ76から出力された接地信号をリアルタイムで取得し、取得したタイミングで、取得した情報に対して、現在時刻を示す時刻情報を付加する。
【0145】
ステップS102において、ノイズ予測部102は、ステップS101で取得された角速度検出信号、圧力検出信号、および接地信号に基づいて、ノイズ予測値を算出する。
【0146】
すなわち、ノイズ予測部102は、まず、図10のフローチャートの設定処理により記憶されたパラメータP、およびステップS101で取得された角速度検出信号に基づく角速度を式(1)に代入して、アクチュエータA1乃至A14の動作に起因するノイズ予測値を算出する。また、ノイズ予測部102は、頭部スイッチ51および足底スイッチ76により発生されるノイズを予測するためのノイズ予測値算出式に、圧力検出信号、および接地信号を代入して、頭部スイッチ51および足底スイッチ76のオン・オフに起因するノイズ予測値を算出する。
【0147】
ステップS103において、ノイズ予測部102は、ステップS102で算出したノイズ予測値を認識結果除去フィルタ103に供給する。なお、ノイズ予測部102は、ノイズ予測値に、そのノイズ予測値に対応する時刻を示す時刻情報を付加して、認識結果除去フィルタ103に供給する。
【0148】
以上のようにして、ノイズ予測値取得処理が実行される。
【0149】
次に、図11のステップS54のノイズ区間除去処理について説明するが、その前に、ノイズ区間を除去する仕組みについて説明する。
【0150】
音声認識部121は、マイクロフォン82により集音された音声を音声認識して、単語列を生成するが、マイクロフォン82から集音される音声には、ノイズが混入する。例えば、ユーザが「せんぷうき」と発話したと想定し、この音声の発話時間がXミリ秒であるとする。ここで、ユーザが「せんぷうき」と発話している間に、マイクロフォン82により、大きなノイズがYミリ秒だけ集音されたとする。このとき、音声「せんぷうき」の発話時間(Xミリ秒)に対する、大きなノイズの混入時間(Yミリ秒)の割合(Y/X)が少なければ、音声認識部121は、比較的正確に音声認識して、正しい単語列「扇風機」を生成することができるが、音声「せんぷうき」の発話時間(Xミリ秒)に対する、大きなノイズの混入時間(Yミリ秒)の割合(Y/X)が多い場合、音声認識部121は、誤って音声認識してしまい、誤った単語列(例えば「戦闘機」、「洗濯機」など)を生成してしまう。
【0151】
すなわち、単語列の発話時間に占める、大きなノイズの混入時間の割合が多いほど、音声認識の誤認識率(発話内容と異なる単語列を生成する確率)が高くなる。
【0152】
この誤認識率が高い場合、ロボット1は、ユーザの発言内容を誤って認識し、ユーザの意図に反した行動をとってしまう可能性がある。この問題を解決する方法として、誤認識率が高い場合、すなわち単語列の発話時間に占める、大きなノイズの混入時間の割合が多い場合、音声認識して生成された単語列を除去することが考えられる。
【0153】
そこで、認識結果除去フィルタ103は、単語列の発話時間に占める、大きなノイズの混入時間の割合が、予め設定された基準値以上である場合、その単語列を、信頼できない単語列(以下、非信頼単語列と称する)として、除去する。また、認識結果除去フィルタ103は、単語列の発話時間に占める、大きなノイズの混入時間の割合が、予め設定された基準値より小さい場合、その単語列を、信頼できる単語列(以下、信頼単語列と称する)と判断し、音声認識結果として採用する。
【0154】
なお、単語列の発話時間に占める、大きなノイズの混入時間の割合が、予め設定された基準値以上であるか否かを判定するためには、集音された音声に含まれるノイズが、大きなノイズであるか否かを判断しなくてはならない。そこで、認識結果除去フィルタ103は、予め閾値を設定しておき、ノイズの大きさが閾値以上である場合、そのノイズは大きいノイズであると判断する。
【0155】
ロボット1は、以上のようにして、ノイズ区間を除去する。なお、本発明においては、ノイズの大きさを示す値として、ノイズ予測部102により算出されたノイズ予測値が利用される。
【0156】
次に、図14のフローチャートを参照して、図11のステップS54のノイズ区間除去処理について説明する。
【0157】
ステップS121において、認識結果除去フィルタ103は、ノイズ予測部102から供給されたノイズ予測値に基づいて、ノイズ予測値が予め設定された閾値以上である時間を特定する。ステップS121の処理について、図15を参照して説明する。
【0158】
図15は、ノイズ予測値の経時変化を示すグラフである。図15においては、横軸が時間を表し、縦軸がノイズ予測値を表している。また図15において、Lはノイズ予測部102から供給されたノイズ予測値の経時変化を表す線分であり、THは、認識結果除去フィルタ103に予め設定された閾値である。
【0159】
図15において、ノイズ予測値Lは、時刻0乃至t1、t2乃至t3、t4乃至t5、およびt6以降の区間では、閾値TH以下である。また、ノイズ予測値Lは、時刻t1乃至t2、t3乃至t4、およびt5乃至t6の区間では、閾値TH以上である。
【0160】
従って、ステップS121において、認識結果除去フィルタ103は、図15の時刻t1乃至t2、t3乃至t4、およびt5乃至t6の区間を、ノイズ予測値が閾値TH以上である区間として特定する。
【0161】
ステップS122において、認識結果除去フィルタ103は、ノイズ予測値が閾値TH以上である時間の、単語列の発話時間に対する割合を算出する。ステップS122の処理について、図16を参照して説明する。
【0162】
図16において、横軸は時間軸である。また、図16において、「ノイズ予測値が閾値以上の区間」の記載の右側には、ノイズ予測値が閾値以上の区間A乃至Cが示されている。この区間A乃至Cは、ステップS121の処理により特定されている。図16において、t1乃至t6は、図15のt1乃至t6にそれぞれ対応している。
【0163】
また、図16において、「音声認識された区間」の記載の右側には、音声認識が実行され、単語列が生成された区間D乃至Fが示されている。
【0164】
図16において、音声認識して単語列が生成された区間D乃至Fのうち、区間Dに注目すると、区間Dの一部が、ノイズ予測値が閾値以上の区間Aと重なっている。この場合、区間Dの音声を音声認識して生成された単語列を除外するか否かの判定基準は以下のように定められる。すなわち、ノイズ予測値が閾値以上の区間と重なっている区間(すなわちtaからt2までの区間)の、区間D全体に対する割合が、予め設定された所定の基準値以上である場合、区間Dの音声を音声認識して生成された単語列を、除外すべき単語列であると判定する。
【0165】
従って、ステップS122において、認識結果除去フィルタ103は、この割合を算出する。例えば、図16の区間Dの例の場合、(taからt2までの時間)/(区間Dの時間)が演算される。
【0166】
また、図16の区間Eに注目すると、区間Eは、ノイズ予測値が閾値以上の区間と重なっていない。従って、区間Eの例の場合、ステップS122において、0/(区間Eの時間)が演算される。図16の区間Fに注目すると、区間Fは全体が、ノイズ予測値が閾値以上の区間Cと重なっている。従って、区間Fの例の場合、ステップS122において、(tbからtcまでの時間)/(区間Fの時間)が演算される。
【0167】
ステップS123において、認識結果除去フィルタ103は、ステップS122で算出された割合が、予め設定された基準の割合以上であるか否かを判定し、ステップS122で算出された割合が、予め設定された基準の割合以上である場合、その単語列を非信頼単語列であると判定し、処理はステップS124に進む。
【0168】
ステップS124において、認識結果除去フィルタ103は、ステップS123で、ノイズ予測値が閾値以上である時間の、単語列の発話時間に対する割合が、基準値以上であると判定された区間の単語列、すなわち非信頼単語列を除去する。
【0169】
ステップS123において、認識結果除去フィルタ103が、ステップS122で算出された割合は、予め設定された基準の割合以上ではないと判定した場合、処理はステップS125に進む。
【0170】
ステップS125において、認識結果除去フィルタ103は、単語列(信頼単語列)を認識結果評価部104に供給する。
【0171】
以上のようにして、ノイズ区間除去処理が実行される。
【0172】
なお、音声認識部121において、複数の認識処理部161が稼動していた場合、同一時刻の発話に基づく単語列が、複数個、認識結果除去フィルタ103に供給される。よって、認識結果除去フィルタ103は、各認識処理部161より供給された単語列全てに対して、上記したようなノイズ区間除去処理を実行し、非信頼単語列を除去する。
【0173】
なお、認識処理部161−1乃至161−4の、ノイズ耐性は異なる。すなわち、例えば、語彙数50の孤立単語認識を行なう認識処理部と、語彙数6万のトライグラム文法の大語彙連続音声認識を行なう認識処理部とでは、音声信号に含まれるノイズの大きさが同じでも、音声認識の誤認識率が異なる。従って、図15に示されるノイズ予測値の閾値THを全ての認識処理部161−1乃至161−4で同一の値にしてしまうと、ある認識処理部では、信頼できない単語列のみを適切に除去できるが、他の認識処理部では、信頼できない単語列を除去しなかったり、信頼できる単語列を除去してしまったりする可能性がある。
【0174】
そこで、認識結果除去フィルタ103は、音声認識部121から供給された単語列が、どの認識処理部で生成されたものかに応じて、異なる閾値THを設定して、ノイズ区間除去処理を実行する。すなわち、認識結果除去フィルタ103は、認識処理部161−1で生成された単語列用の閾値TH1、認識処理部161−2で生成された単語列用の閾値TH2、認識処理部161−3で生成された単語列用の閾値TH3、および認識処理部161−4で生成された単語列用の閾値TH4を予め保持し、音声認識部121から供給された単語列が、どの認識処理部により生成された単語列であるかに応じて、対応する認識処理部用の閾値を読み出し、その閾値によりノイズ予測値の大小を判定する。
【0175】
ところで、ステップS73乃至ステップS76の単語系列認識処理は、それぞれ異なる言語モデルをもつ複数の認識処理部において、並列に実行されるため、同じ音声を入力しても、認識処理部によって認識結果が異なる場合もあり得る。このとき、複数の認識結果から1つの認識結果を選択する必要がある
【0176】
2つの認識処理部が駆動している場合を考える。例えば、ロボット対話システムにおいて、ユーザと雑談を行なうアプリケーションが動作しているとし、このアプリケーションに対応した言語モデルとして、大語彙でトライグラム文法を用いた大語彙連続音声認識の言語モデルをもつ認識処理部161−2と、小語彙のコマンドだけ受け付ける孤立単語認識の言語モデル(各アプリケーションに共通の言語モデル)をもつ認識処理部161−1が駆動している。
【0177】
音声が入力されると、認識処理部で単語系列認識処理が行われ、単語列が認識される。ここで、各単語に音響スコアと言語スコアが与えられることになる。しかし、大語彙連続音声認識の言語モデルをもつ認識処理部161−2の認識結果に対しては、各単語にトライグラム文法で与えられる言語スコアが与えられるが、孤立単語認識の言語モデルをもつ認識処理部161−1の認識結果に対しては、言語スコアが利用されず、言語スコアが与えられない。
【0178】
この場合、音響スコアと言語スコアを総合したスコアを用いると、それぞれの単語列を比較することが難しくなるが、2つの認識処理部161−1および161−2が同じ音響モデルを用いて、同じような音響スコアの計算を行なっているとすれば、音響スコアに関して比較することができる。
【0179】
しかしながら、複数の言語モデルを同時に駆動した場合、単純に音響スコアに関して比較すると、音声認識の性能が低下するという問題があった。
【0180】
すなわち、例えば、トライグラムで駆動する大語彙の連続音声認識システムと、小語彙の孤立単語音声認識システムを同時に駆動した場合、それぞれの音声認識システムに対して認識結果である単語系列が決定される。このとき、どちらの単語系列を最終的な認識結果として利用するかが問題となるが、その判断を誤ると、認識性能が著しく低下するおそれがある。
【0181】
その原因としては、受理範囲の広い言語モデルが音響スコアの高い単語列を生成し、その単語列を最終的な認識結果と誤って判定することではないかと予想できる。また、複数の言語モデルを駆動することは、単独で言語モデルを駆動する場合に比べて言語モデルの制約が緩くなることを意味するので、認識率が低下するのは一般的な音声認識の特性である考えることもできる。
【0182】
ここで、認識性能の低下を防ぐために、それぞれの音響スコアに対して所定の値を乗じて重み付けをする方法が考えられる。複数のそれぞれ異なる言語モデルをもつ認識処理部を駆動し、複数の認識結果が得られる場合、上述したように、その認識結果の単語列に付与された音響スコアに対して、言語モデルに対応した所定の値を重みとして乗じた後に、スコアの評価の高い方を最終的な認識結果とすることで、複数の言語モデルを駆動した場合に生じる音声認識の性能低下を大きく改善することができる。
【0183】
次に、図17のフローチャートを参照して、図11のステップS55の認識結果評価処理について詳細に説明する。なお、以下の認識結果評価処理は、認識処理部161−1および161−2により生成された単語列の評価を例にして説明する。
【0184】
図17のステップS151において、認識結果評価部104は、認識結果除去フィルタ103から、単語列、音響スコア、および時刻情報が供給されたか否かを判定し、単語列、音響スコア、および時刻情報が供給されるまで待機する。そして、認識結果除去フィルタ103から、単語列、音響スコア、および時刻情報が供給されたとき、処理はステップS152に進む。
【0185】
ステップS152において、認識結果評価部104は、認識結果除去フィルタ103から供給された、同一時刻に対応付けられている単語列が複数個存在するか否かを判定する。すなわち、ある時刻に集音された音声信号が認識処理部161−1および161−2により音声認識され、2つの単語列が生成された場合、その中から、1つだけ単語列を選択しなくてはならない。ただし、認識処理部161−1および161−2から出力された単語列のうち、非信頼単語列であると判定されたものは、認識結果除去フィルタ103により除去されるため、認識処理部161−1および161−2により、同一時刻の音声由来の2つの単語列が生成されても、そのうち1つしか、認識結果評価部104に供給されない場合もある。そこで、ステップS152において、認識結果評価部104は、認識結果除去フィルタ103から供給された単語列に付加されている、発話時刻を示す時刻情報を参照して、同一の発話時刻の単語列が複数個存在するか否かを判定する。その結果、同一の発話時刻の単語列が複数存在した場合、処理はステップS153に進む。
【0186】
ステップS153において、認識結果評価部104は、ステップS152で同一時刻に対応付けられていると判定された複数の単語列を比較し、これらの単語列が同一の単語であるか否かを判定し、これらの単語列が同一の単語ではなかった場合、処理はステップS154に進む。
【0187】
ステップS154において、認識結果評価部104は、認識処理部161−1から出力された単語に対応する音響スコアに重み付けを行う。例えば、認識処理部161−2は大語彙でトライグラム文法を用いた大語彙連続音声認識の言語モデルを駆動し、認識処理部161−1は、小語彙のコマンドだけ受け付ける孤立単語認識の言語モデルを駆動しているとき、認識処理部21−1から出力された単語の音響スコアに、所定の値が乗じられ、重み付けが行われる。
【0188】
ステップS155において、認識結果評価部104は、ステップS154で重み付けされた音響スコアと、認識処理部161−2から出力された単語に対応する音響スコアを比較して、ステップS156に進み、音響スコアの評価が高い方の単語を選択する。その後、処理はステップS157に進む。
【0189】
ステップS152において、認識結果評価部104が、認識結果除去フィルタ103から供給された、同一時刻に対応付けられた単語列は存在しない(ある発話時刻に対応付けられた単語列は1つしかない)と判定した場合、ステップS153乃至ステップS156の処理はスキップされ、処理はステップS157に進む。
【0190】
ステップS153において、認識結果評価部104が、各認識処理部により生成された単語列は同一の単語であると判定した場合、ステップS154乃至ステップS156の処理はスキップされ、処理はステップS157に進む。
【0191】
ステップS157において、認識結果評価部104は、ステップS156で選択された単語列を行動制御部105に出力する。なお、ステップS152で、認識結果評価部104が、認識結果除去フィルタ103から供給された、同一時刻に対応付けられた単語列は存在しないと判定していた場合、認識結果評価部104は、ある発話時刻に対応して1つだけ存在する単語列を行動制御部105に出力する。また、ステップS153で、認識結果評価部104が、各認識処理部により生成された単語列は同一の単語であると判定した場合、認識結果評価部104は、同一であると判定された単語列を行動制御部105に出力する。
【0192】
以上のようにして、認識結果評価処理が実行される。
【0193】
ところで、以上の説明においては、音声認識処理が全て終了してから、ノイズ区間除去処理を実行しているが、音声認識処理とノイズ予測値取得処理は並列に実行されるため、ある1区間の発話内容の音声認識処理が完了する前に、その区間のノイズ予測値取得処理が完了することもあり得る。この場合、音声認識処理を実行中に、既に除去すべき区間を決定することも可能である。そこで、音声認識処理中に、除去すべき区間を決定し、除去すべき区間については、音声認識処理をしないようにするようにしても良い。
【0194】
次に、図18のフローチャートを参照して、音声認識処理中に、除去すべき区間を決定し、除去すべき区間についての音声認識処理を途中で終了するようにした場合のノイズ区間除去処理について説明する。なお、図18のノイズ区間除去処理は、図11のノイズ対応処理において、ステップS52の音声認識処理を実行中に、ステップS53のノイズ予測値取得処理が完了した場合にのみ実行される。また、この場合、ステップS52の音声認識処理が完了する前に、ステップS54のノイズ区間除去処理(図18のフローチャートの処理)が開始される。
【0195】
図18のステップS201において、ノイズ予測部102は、算出したノイズ予測値を音声認識部121および認識結果除去フィルタ103に供給する。
【0196】
ステップS202において、音声認識部121は、ノイズ予測値が閾値以上の区間の音声認識を中止する。すなわち、音声認識部121の認識処理制御部152は、予め閾値となるノイズ予測値の値を記憶しており、ノイズ予測部102から供給されたノイズ予測値が、閾値以上の区間(時間)を特定する。そして、認識処理制御部152は、音声認識処理を実行中の音声信号のうち、ノイズ予測値が閾値以上の区間の音声信号については、音声認識処理を中止する。
【0197】
ステップS203において、認識結果除去フィルタ103は、ノイズ予測値が閾値以上の区間から、音声認識処理が中止されるまでに生成された単語列を除去する。すなわち、ステップS201で、ノイズ予測部102から音声認識部121にノイズ予測値が供給された時点で、音声認識部121が既に音声認識した単語列があるため、その単語列のうちで、ノイズが閾値以上である区間から生成された単語列を除去する必要がある。認識結果除去フィルタ103は、音声認識部121から供給された単語列に付加されている時刻情報に基づいて、ノイズ予測値が閾値以上の区間に生成された単語列を検索し、ノイズ予測値が閾値以上の区間に生成された単語列があった場合、その単語列を除去する。
【0198】
ステップS204において、認識結果除去フィルタ103は、ステップS203の処理で除去されずに残った単語列を認識結果評価部104に出力する。
【0199】
以上のように、ノイズ区間除去処理を実行しても良い。このように予め除去することが分かっている区間の音声認識を中止することにより、余分な音声認識処理を行なわずに済み、メイン制御部61が行なわなくてはならない処理量を減らすことが可能となる。
【0200】
ところで、以上の説明においては、実際にノイズ予測値を算出して、そのノイズ予測値に基づいて、音声認識結果の単語列を除去するか否かを判定したり、音声認識自体を中止するか否かを判定しているが、予め決められた(パターン化された)動作を実行する場合、その動作中のどの時間にどの位の大きさのノイズが発生するのかは、見当をつけることができる。
【0201】
すなわち、例えば歩行動作の場合、床の傾斜や、床から突き出た突起物等の外乱で転倒しないように、ロボット1は、歩幅や加速度等を、リアルタイムで修正する必要がある。このような、状況に応じてリアルタイムで修正する必要がある動作においては、実際に、アクチュエータA1乃至A14からの角速度検出信号、頭部スイッチ51からの圧力検出信号、並びに足底スイッチ76からの接地信号に基づいて、ノイズ予測値を算出して、算出結果に基づいて音声認識結果を除去する必要がある。それに対して、リアルタイムで修正する必要がない、パターン化された動作(例えば、頭を横に振る動作)の場合、アクチュエータA1乃至A14のうち、いずれのアクチュエータをどのタイミングで駆動するのかを、予め固定的に設定することができる。従って、動作の実行中に発生するノイズの経時変化は、予め予測することができる。
【0202】
そこで、予め決められた固定的な動作(以下、予め決められた固定的な動作を定型動作と称する)を実行する場合、その動作の実行中にノイズ予測値を算出しなくても、大きなノイズが発生する区間で生成された単語列を除去することができる。
【0203】
次に、このようにした場合の、ロボット1の行動処理について図19を参照して説明し、ノイズ対応処理について、図21を参照して説明する。
【0204】
まず、図19のフローチャートを参照して、ロボット1の行動処理、すなわち、認識結果評価部104から供給された単語列に基づいて、行動する処理について説明する。
【0205】
図19のステップS221において、行動制御部105は、認識結果評価部104より、評価結果としての単語列の入力を受け付ける。
【0206】
ステップS222において、行動制御部105は、ステップS221で入力された単語列、およびモデル記憶部106やテーブル記憶部107に記憶された情報に基づいて、ロボット1がとるべき行動を選択する。
【0207】
ステップS223において、行動制御部105は、保持している行動プログラム105Aから、ステップS222で選択された行動に対応する行動プログラムを読み出す。
【0208】
ステップS224において、行動制御部105は、ステップS222で選択された動作は、定型動作であるか否かを判定し、ステップS222で選択された動作が定型動作であった場合、処理はステップS225に進む。
【0209】
ステップS225において、行動制御部105は、認識結果を除去すべき時刻を認識結果除去フィルタ103に通知する。認識結果除去区間について、図20を参照して説明する。
【0210】
図20は、図1のような起立姿勢をとっているロボット1に敬礼の動作を実行させるための行動プログラムの例を表している。図20に示された行動プログラムにおいては、まずアクチュエータA8を駆動して、前腕部を挙上してゆき、アクチュエータA8の駆動が終了する前に、アクチュエータA5の駆動を開始して、上腕部を若干、挙上させることにより、ロボット1に敬礼の姿勢をとらせる。図20において、横軸は時間軸を表している。また、図20において、「A8」と示された区間は、アクチュエータA8を駆動する区間を表し、「A5」と示された区間は、アクチュエータA5を駆動する区間を表している。すなわち、アクチュエータA8は、動作開示時間t0から時間t2まで駆動し、アクチュエータA5は、時間t1から動作終了時間t3まで駆動する。
【0211】
図20に示されるように、アクチュエータA8を駆動する区間の一部と、アクチュエータA5を駆動する区間の一部が、時間t1から時間t2までの区間で重なっている。2つのアクチュエータが同時に動作しているこの区間で、ノイズの大きさが音声認識の信頼性を損なうほどの大きさになるとする。行動プログラムには、この時間t1から時間t2までの区間が認識結果除去区間として登録されている。従って、ロボット1が敬礼の動作を開始する時刻が分かれば、認識結果を除去すべき時刻を指定することができる。そこで、ステップS225において、行動制御部105は、認識結果を除去すべき時刻(図20の例の場合、認識結果除去区間として指定された時間t1からt2までを、敬礼動作を開始する時刻に足し算した時刻)を、認識結果除去フィルタ103に通知する。
【0212】
ステップS226において、行動制御部105は、ロボット1が動作を開始する開始時刻および動作を終了する終了時刻をノイズ予測部102に通知し、開始時刻から終了時刻までの間におけるノイズ予測値の算出をしないように要求する。その後、処理はステップS227に進む。
【0213】
ステップS224のいて、行動制御部105が、選択された行動は、定型動作ではないと判定した場合、ステップS225およびステップS226の処理はスキップされ、処理はステップS227に進む。
【0214】
ステップS227において、行動制御部105は、行動プログラムをサブ制御部63A乃至63Dに供給し、動作を開始させる。
【0215】
以上のようにして、行動処理が実行される。
【0216】
次に、図21のフローチャートを参照して、ロボット1が定型動作を実行する場合のノイズ対応処理について説明する。なお、ステップS241、ステップS242、ステップS244、およびステップS245の処理は、それぞれ、図11のステップS51、ステップS52、ステップS55、およびステップS56の処理と同様の処理であるため、説明を省略する。
【0217】
ステップS242の処理が終了した後、ステップS243において、認識結果除去フィルタ103は、図19のステップS225で行動制御部105から通知された、認識結果を除去すべき時刻を参照して、音声認識部121から供給された単語列の中から、認識結果を除去すべき時刻の発話から生成された単語列を検索し、認識結果を除去すべき時刻の発話から生成された単語列が検出された場合、この単語列を除去する。認識結果除去フィルタ103は、除去されずに残った単語列を、認識結果評価部104に供給する。
【0218】
その後の、ステップS244およびステップS245の処理は、それぞれ図11のステップS55およびステップS56の処理と同様である。
【0219】
ロボット1が定型動作を実行する場合は、以上のようにしてノイズ対応処理を実行しても良い。これにより、メイン制御部61は、定型動作中には、ノイズ予測処理を実行しなくてよいため、処理量を減少させることができる。
【0220】
なお、以上の説明においては、アクチュエータA1乃至A14が回転する際の角速度を物理量として利用して、ノイズ予測値を算出しているが、このことは、ノイズ予測値を算出するための物理量として、角速度を利用することに限定することを意味するものではない。例えば、ノイズ予測値を算出するための物理量として、アクチュエータの速度等を利用しても良い。
【0221】
また、アクチュエータとしては、モータ、油圧ピストンなど、種々の動力源を利用することができる。
【0222】
また、以上の説明においては、アクチュエータA1乃至A14と同様、頭部スイッチ51、および足底スイッチ76により発生されるノイズに関しても、ノイズ予測値算出式を求め、算出した式に基づいて、ノイズ予測値を算出し、音声認識結果を除去するようにしているが、頭部スイッチ51、および足底スイッチ76により発生されるノイズに関しては、ノイズ予測値算出式を利用する代わりに、頭部スイッチ51、および足底スイッチ76のいずれかが、オン・オフした場合、その瞬間の音声認識結果を除外するようにしても良い。
【0223】
また、以上の説明においては、本発明を人型ロボットに適用した場合を例にして説明したが、本発明は人型ロボット以外のロボット(例えば犬型のロボットなど)に適用したり、産業用ロボットに適用したりすることも可能である。
【0224】
上述した一連の処理は、ハードウェアにより実行させることもできるし、上述したようにソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体等からインストールされる。
【0225】
図22は、このような処理を実行するパーソナルコンピュータ301の内部構成例を示す図である。パーソナルコンピュータのCPU(Central Processing Unit)311は、ROM(Read Only Memory)312に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)313には、CPU311が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース315は、ディスプレイ、スピーカ、およびDA変換器などから構成される出力部316も接続されている。また、入出力インタフェース315には、マウス、キーボード、マイクロフォン、AD変換器などから構成される入力部317が接続され、入力部317に入力された信号をCPU311に出力する。
【0226】
さらに、入出力インタフェース315には、ハードディスクなどから構成される記憶部318、および、インターネットなどのネットワークを介して他の装置とデータの通信を行う通信部319も接続されている。ドライブ320は、磁気ディスク331、光ディスク332、光磁気ディスク333、半導体メモリ334などの記録媒体からデータを読み出したり、データを書き込んだりするときに用いられる。
【0227】
記録媒体は、図22に示されるように、パーソナルコンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク331(フレキシブルディスクを含む)、光ディスク332(CD−ROM(Compact Disc−Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク333(MD(Mini−Disc)(登録商標)を含む)、若しくは半導体メモリ334などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM312や記憶部318が含まれるハードディスクなどで構成される。
【0228】
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0229】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【0230】
【発明の効果】
このように、本発明によれば、音声を認識することができる。特に、誤りである可能性の高い音声認識結果を、正確に除去することができる。その結果、誤った音声認識結果に基づいて、ロボットが行動してしまうことを防止することができる。
【0231】
また、本発明によれば、リアルタイムに修正が行なわれる動作に対しても、誤りである可能性の高い音声認識結果を、正確に除去することができる。また、パターン化された動作に対しては、処理に要する演算量を減少させることができる。
【0232】
さらに、本発明によれば、ユーザの発話を集音するマイクロフォン以外に、ノイズ除去用のマイクロフォンを設置する必要がない。
【図面の簡単な説明】
【図1】本発明を適用したロボットの外観構成を示す斜視図である。
【図2】図1のロボットの外観構成を示す、背後側の斜視図である。
【図3】図1のロボットについて説明するための略線図である。
【図4】図1のロボットの内部構成を示すブロック図である。
【図5】図1のロボットの制御に関する部分を主に説明するためのブロック図である。
【図6】図5のメイン制御部の構成を示すブロック図である。
【図7】図6の音声認識部の構成を示すブロック図である。
【図8】ノイズ予測値算出式を求めるための設定処理時の構成例を説明する図である。
【図9】コンピュータの設定処理を説明するフローチャートである。
【図10】ロボットの設定処理を説明するフローチャートである。
【図11】ロボットのノイズ対応処理を説明するフローチャートである。
【図12】図11のステップS52、および図21のステップS242の処理を詳細に説明するフローチャートである。
【図13】図11のステップS53の処理を詳細に説明するフローチャートである。
【図14】図11のステップS54の処理を詳細に説明するフローチャートである。
【図15】図14のステップS121の処理を説明する図である。
【図16】除去する区間の選択について説明する図である。
【図17】図11のステップS55の処理を詳細に説明するフローチャートである。
【図18】図11のステップS54の処理について説明する、図14とは異なるフローチャートである。
【図19】ロボットの行動処理を説明するフローチャートである。
【図20】定型動作における認識結果除去区間を説明する図である。
【図21】ロボットのノイズ対応処理を説明する図11とは異なるフローチャートである。
【図22】本発明を適用したコンピュータの構成を示すブロック図である。
【符号の説明】
1 ロボット, 51 頭部スイッチ, 61 メイン制御部, 63 サブ制御部, 76 足底スイッチ, 77 角速度センサ, 82 マイクロホン, 102 ノイズ予測部, 103 認識結果除去フィルタ, 104 認識結果評価部, 105 行動制御部, 121 音声認識部, 201 コンピュータ
【発明の属する技術分野】
本発明は、ロボット制御装置および方法、記録媒体、並びにプログラムに関し、特に、音声認識、および、駆動が可能なロボットを制御する場合に用いて好適な、ロボット制御装置および方法、記録媒体、並びにプログラムに関する。
【0002】
【従来の技術】
近年、ユーザが発した音声を音声認識し、その音声認識結果に基づいて、機械的動作をしたり、合成音を出力する等の行動を行うロボット(本明細書においては、人型2足歩行ロボットを含む)が製品化され、また、より人間らしい行動をするロボットの研究開発が進んでいる。
【0003】
ユーザにより発せられた音声を音声認識し、この音声認識結果に基づいて行動を行なう対話システムにおいては、ロボットが動作する際に発生するモータ音などのノイズの影響で、ユーザが発話した内容を、誤って音声認識してしまうことがある。
【0004】
この問題を解決するものとして、例えば、ロボットに複数装着されたマイクロフォンにより、ロボットの周囲の環境音(ロボット自身が発生するノイズを含む)を取得し、この環境音に基づいて、ユーザにより発話された音声とノイズを分離するようにしたものがある(例えば、特許文献1参照)。
【0005】
また、マイクロフォンの近傍のアクチュエータが稼動した場合、音声認識を中止するようにしたものもある(例えば、特許文献2参照)。
【0006】
【特許文献1】
特開2001−215989号公報
【特許文献2】
特開2002−116794号公報
【0007】
【発明が解決しようとする課題】
しかしながら、特許文献1に記載された方法の場合、ユーザにより発話された音声をノイズから正確に分離するのが困難であるという課題があった。
【0008】
また、特許文献2に記載された方法の場合、ノイズの発生の有無を、マイクロフォンの近傍のアクチュエータが駆動したか否かという情報だけで判断するため、そのアクチュエータが動作することが、音声認識に重大な影響を与えるか否かを適切に判断することが難しいという課題があった。例えば、アクチュエータが発生するノイズが、音声認識に駅用を与えないほど小さくても、音声認識を中止してしまうことがあった。また、マイクロフォンから遠い位置に設置されたアクチュエータが、大きなノイズを発生する場合、そのアクチュエータを駆動した場合でも、音声認識に重大な影響を与えるが、これが考慮されていないという課題があった。さらに、複数のアクチュエータが同時に駆動した場合、たとえ駆動したアクチュエータが、マイクロフォンの近傍になくても、音声認識に重大な影響を与える可能性があるが、このような状況が考慮されていないという課題があった。
【0009】
従って、特許文献1や特許文献2に記載された方法を採用した場合、ロボットは、ユーザの発言内容を誤って音声認識し、その認識結果に基づいて、ユーザが意図していない、誤った行動をしてしまう可能性があった。
【0010】
本発明はこのような状況に鑑みてなされたものであり、誤った音声認識結果である可能性が高い音声認識結果を適切に除去することができるようにするものである。
【0011】
【課題を解決するための手段】
本発明のロボット制御装置は、機械的動作を実行する動作実行手段と、動作実行手段により実行された機械的動作に関する物理量を取得する取得手段と、取得手段により取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値を算出する算出手段と、音声を認識する音声認識手段と、算出手段により算出された予測値に基づいて、音声認識手段により認識され、生成された単語列から、利用しない単語列を除去する除去手段とを備えることを特徴とする。
【0012】
前記動作実行手段には、アクチュエータを含むようにさせ、前記物理量は前記アクチュエータの角速度または速度を含むようにすることができる。
【0013】
前記取得手段には、前記ロボットに設置されたスイッチのオン・オフを示す情報を前記物理量としてさらに取得するようにさせることができる。
【0014】
前記音声認識手段には、前記算出手段により算出された前記予測値に基づいて、認識する前記音声を選択するようにさせることができる。
【0015】
前記除去手段には、前記単語列に対応する音声の発声時間に占める、前記予測値が所定の閾値以上である時間の割合が、予め設定された所定の基準値以上であった場合、前記単語列を除去するようにさせることができる。
【0016】
前記音声認識手段には、異なる言語モデルに基づく複数の認識処理を並列に実行するようにさせ、前記除去手段には、複数の前記認識処理のそれぞれの前記閾値を異なる値に設定するようにさせることができる。
【0017】
前記機械的動作のうちパターン化された定型動作が実行される場合において、認識結果を除去すべき認識結果除去区間を予め記憶する記憶手段をさらに設けるようにし、前記動作実行手段により前記定型動作が実行される場合、前記算出手段には、前記予測値の算出を中止するようにさせ、前記除去手段には、記憶手段により記憶された認識結果除去区間に基づいて、前記音声認識手段により生成された前記単語列から、利用しない前記単語列を除去するようにさせることができる。
【0018】
本発明のロボット制御方法は、機械的動作を実行する動作実行ステップと、動作実行ステップの処理により実行された機械的動作に関する物理量を取得する取得ステップと、取得ステップの処理により取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値を算出する算出ステップと、音声を認識する音声認識ステップと、算出ステップの処理により算出された予測値に基づいて、音声認識ステップの処理により認識され、生成された単語列から、利用しない単語列を除去する除去ステップとを含むことを特徴とする。
【0019】
本発明の記録媒体のプログラムは、機械的動作を実行する動作実行ステップと、動作実行ステップの処理により実行された機械的動作に関する物理量を取得する取得ステップと、取得ステップの処理により取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値を算出する算出ステップと、音声を認識する音声認識ステップと、算出ステップの処理により算出された予測値に基づいて、音声認識ステップの処理により認識され、生成された単語列から、利用しない単語列を除去する除去ステップとを含むことを特徴とする。
【0020】
本発明のプログラムは、ロボットの動作を制御するコンピュータに、機械的動作を実行する動作実行ステップと、動作実行ステップの処理により実行された機械的動作に関する物理量を取得する取得ステップと、取得ステップの処理により取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値を算出する算出ステップと、音声を認識する音声認識ステップと、算出ステップの処理により算出された予測値に基づいて、音声認識ステップの処理により認識され、生成された単語列から、利用しない単語列を除去する除去ステップとを実行させることを特徴とする。
【0021】
本発明のロボット制御装置および方法、記録媒体、並びにプログラムにおいては、機械的動作が実行され、実行された機械的動作に関する物理量が取得され、取得された物理量に基づいて、機械的動作によって発生されるノイズの予測値が算出され、音声が認識され、算出された予測値に基づいて、生成された単語列から、利用しない単語列が除去される。
【0022】
本発明は、例えばロボットに適用することができる。
【0023】
【発明の実施の形態】
以下、図を参照して、本発明の実施の形態について説明する。
【0024】
図1は、本発明を適用した2足歩行型のロボット1の正面方向の斜視図であり、図2は、ロボット1の背面方向からの斜視図である。また、図3は、ロボット1の軸構成について説明するための図である。
【0025】
ロボット1は、胴体部ユニット11、胴体部ユニット11の上部に配設された頭部ユニット12、胴体部ユニット11の上部左右の所定位置に取り付けられた腕部ユニット13Aおよび腕部ユニット13B、並びに胴体部ユニット11の下部左右の所定位置に取り付けられた脚部ユニット14Aおよび脚部ユニット14Bにより構成されている。腕部ユニット13Aおよび腕部ユニット13Bは、同様の構成とされる。また、脚部ユニット14Aおよび脚部ユニット14Bも、同様の構成とされる。頭部ユニット12には、頭部スイッチ51が設けられている。
【0026】
胴体部ユニット11は、体幹上部を形成するフレーム21および体幹下部を形成する腰ベース22が腰関節機構23を介して連結することにより構成されている。胴体部ユニット11は、体幹下部の腰ベース22に固定された腰関節機構23のアクチュエータA1、および、アクチュエータA2をそれぞれ駆動することによって、体幹上部を、図3に示す直交するロール軸24およびピッチ軸25の回りに、それぞれ独立に回転させることができるようになされている。
【0027】
頭部ユニット12は、フレーム21の上端に固定された肩ベース26の上面中央部に首関節機構27を介して取り付けられており、首関節機構27のアクチュエータA3、およびアクチュエータA4をそれぞれ駆動することによって、図3に示す直交するピッチ軸28およびヨー軸29の回りに、それぞれ独立に回転させることができるようになされている。
【0028】
腕部ユニット13A、および腕部ユニット13Bは、肩関節機構30を介して肩ベース26の左右にそれぞれ取り付けられており、対応する肩関節機構30のアクチュエータA5、および、アクチュエータA6をそれぞれ駆動することによって、図3に示す、直交するピッチ軸31およびロール軸32の回りに、それぞれを独立に回転させることができるようになされている。
【0029】
この場合、腕部ユニット13A、および腕部ユニット13Bは、上腕部を形成するアクチュエータA7の出力軸に、肘関節機構44を介して、前腕部を形成するアクチュエータA8が連結され、前腕部の先端に手部34が取り付けられることにより構成されている。
【0030】
そして腕部ユニット13A、および腕部ユニット13Bでは、アクチュエータA7を駆動することによって、前腕部を図3に示すヨー軸35に対して回転させることができ、アクチュエータA8を駆動することによって、前腕部を図3に示すピッチ軸36に対して回転させることができるようになされている。
【0031】
脚部ユニット14A、および、脚部ユニット14Bは、股関節機構37を介して、体幹下部の腰ベース22にそれぞれ取り付けられており、対応する股関節機構37のアクチュエータA9乃至A11をそれぞれ駆動することによって、図3に示す、互いに直交するヨー軸38、ロール軸39、およびピッチ軸40に対して、それぞれ独立に回転させることができるようになされている。
【0032】
脚部ユニット14A、および、脚部ユニット14Bにおいては、大腿部を形成するフレーム41の下端が、膝関節機構42を介して、下腿部を形成するフレーム43に連結されるとともに、フレーム43の下端が、足首関節機構44を介して、足部45に連結されている。
【0033】
これにより脚部ユニット14A、および、脚部ユニット14Bにおいては、膝関節機構42を形成するアクチュエータA12を駆動することによって、図3に示すピッチ軸46に対して、下腿部を回転させることができ、また足首関節機構44のアクチュエータA13、および、アクチュエータA14をそれぞれ駆動することによって、図3に示す直交するピッチ軸47およびロール軸48に対して、足部45をそれぞれ独立に回転させることができるようになされている。
【0034】
脚部ユニット14A、および脚部ユニット14Bの、足部45の足底面(床と接する面)には、それぞれ足底スイッチ76(図5)が配設されており、足底スイッチ76のオン・オフに基づいて、足部45が床に接地しているか否かが判別される。
【0035】
また、胴体部ユニット11の体幹下部を形成する腰ベース22の背面側には、後述するメイン制御部61や周辺回路62(いずれも図4)などを内蔵したボックスである、制御ユニット52が配設されている。
【0036】
図4は、ロボット1のアクチュエータとその制御系等について説明する図である。
【0037】
制御ユニット52には、ロボット1全体の動作制御をつかさどるメイン制御部61、電源回路および通信回路などの周辺回路62、および、バッテリ74(図5)などが収納されている。
【0038】
そしてこの制御ユニット52は、各構成ユニット(胴体部ユニット11、頭部ユニット12、腕部ユニット13Aおよび腕部ユニット13B、並びに、脚部ユニット14Aおよび脚部ユニット14B)内にそれぞれ配設されたサブ制御部63A乃至63Dと接続されており、サブ制御部63A乃至63Dに対して必要な電源電圧を供給したり、サブ制御部63A乃至63Dと通信を行う。
【0039】
また、サブ制御部63A乃至63Dは、対応する構成ユニット内のアクチュエータA1乃至A14と、それぞれ接続されており、メイン制御部61から供給された各種制御コマンドに基づいて、構成ユニット内のアクチュエータA1乃至A14を、指定された状態に駆動させるように制御する。
【0040】
アクチュエータA1乃至A14のそれぞれには、角速度センサ77(図5)が内蔵されており、アクチュエータA1乃至A14の回転の角速度を検知し、角速度を情報として含む角速度検出信号をメイン制御部61に送出する。従って、メイン制御部61は、アクチュエータA1乃至A14のそれぞれから、リアルタイムで、角速度検出信号を受信する。
【0041】
図5は、ロボット1の内部構成を示すブロック図である。
【0042】
頭部ユニット12には、このロボット1の「目」として機能するCCD(Charge Coupled Device )カメラ81、「耳」として機能するマイクロホン82、頭部スイッチ51などからなる外部センサ部71、および、「口」として機能するスピーカ72となどがそれぞれ所定位置に配設され、制御ユニット52内には、バッテリセンサ91および加速度センサ92などからなる内部センサ部73が配設されている。また、脚部ユニット14A、および脚部ユニット14Bの足部45の足底面には、このロボット1の「体性感覚」の1つとして機能する足底スイッチ76が配設されている。さらに、上記したように、アクチュエータA1乃至A14のそれぞれには、このロボット1の「体性感覚」の1つとして機能する角速度センサ77が配設されている。
【0043】
そして、外部センサ部71のCCDカメラ81は、周囲の状況を撮像し、得られた画像信号S1Aを、メイン制御部61に送出する。マイクロホン82は、ユーザから音声入力として与えられる「歩け」、「とまれ」または「右手を挙げろ」等の各種命令音声を集音し、得られた音声信号S1Bを、メイン制御部61に送出する。
【0044】
また、頭部スイッチ51は、例えば、図1および図2に示されるように頭部ユニット12の上部に設けられており、ユーザからの「撫でる」や「叩く」といった物理的な働きかけにより受けた圧力を検出し、検出結果を、圧力検出信号S1Cとしてメイン制御部61に送出する。
【0045】
足底スイッチ76は、足部45の足底面に配設されており、足部45が床に接地している場合、接地信号S1Dをメイン制御部61に送出する。メイン制御部61は、接地信号S1Dに基づいて、足部45が床に接地しているか否かを判定する。足底スイッチ76は、脚部ユニット14A、および脚部ユニット14Bの両方の足部45に配設されているため、メイン制御部61は、接地信号S1Dに基づいて、ロボット1の両足が床に接地しているか、片足が床に接地しているか、両足とも床に接地していないかを判定することができる。
【0046】
アクチュエータA1乃至A14それぞれに内蔵された角速度センサ77は、アクチュエータA1乃至A14それぞれの角速度検出信号S1Eを、リアルタイムでメイン制御部61に送出する。
【0047】
内部センサ部73のバッテリセンサ91は、バッテリ74のエネルギ残量を所定の周期で検出し、検出結果をバッテリ残量検出信号S2Aとして、メイン制御部61に送出する。加速度センサ92は、ロボット1の移動について、3軸方向(x軸、y軸、およびz軸)の加速度を、所定の周期で検出し、検出結果を、加速度検出信号S2Bとして、メイン制御部61に送出する。
【0048】
メイン制御部61は、外部センサ部71のCCDカメラ81、マイクロホン82および頭部スイッチ51からそれぞれ供給される、画像信号S1A、音声信号S1Bおよび圧力検出信号S1C、並びに足底スイッチ76および角速度センサ77からそれぞれ供給される接地信号S1D、および角速度検出信号S1E(以下、これらをまとめて外部センサ信号S1と称する)と、内部センサ部73のバッテリセンサ91および加速度センサ92等からそれぞれ供給される、バッテリ残量検出信号S2Aおよび加速度検出信号S2B(以下、これらをまとめて内部センサ信号S2と称する)に基づいて、ロボット1の周囲および内部の状況や、ユーザからの指令、または、ユーザからの働きかけの有無などを判断する。
【0049】
そして、メイン制御部61は、ロボット1の周囲および内部の状況や、ユーザからの指令、または、ユーザからの働きかけの有無の判断結果と、内部メモリ61Aに予め格納されている制御プログラム、あるいは、そのとき装填されている外部メモリ75に格納されている各種制御パラメータなどに基づいて、ロボット1の行動を決定し、決定結果に基づく制御コマンドCOMを生成して、対応するサブ制御部63A乃至63Dに送出する。サブ制御部63A乃至63Dは、供給された制御コマンドCOMに基づいて、アクチュエータA1乃至A14のうち、対応するものの駆動を制御するので、ロボット1は、例えば、頭部ユニット12を上下左右に揺動させたり、腕部ユニット13A、あるいは、腕部ユニット13Bを上に挙げたり、脚部ユニット14Aおよび脚部ユニット14Bを交互に駆動させて、歩行するなどの機械的動作を行うことが可能となる。
【0050】
また、メイン制御部61は、必要に応じて、所定の音声信号S3をスピーカ72に与えることにより、音声信号S3に基づく音声を外部に出力させる。更に、メイン制御部61は、外見上の「目」として機能する、頭部ユニット12の所定位置に設けられた、図示しないLEDに対して駆動信号を出力することにより、LEDを点滅させる。
【0051】
このようにして、ロボット1は、周囲および内部の状況や、ユーザからの指令および働きかけの有無などに基づいて、自律的に行動することができるようになされている。
【0052】
次に、図6は、図5のメイン制御部61の機能的構成例を示している。なお、図6に示す機能的構成は、メイン制御部61が、メモリ61Aに記憶された制御プログラムを実行することで実現されるようになっている。
【0053】
メイン制御部61は、特定の外部状態を認識するセンサ入力処理部101、頭部スイッチ51、足底スイッチ76、および角速度センサ77からそれぞれ供給される圧力検出信号S1C、接地信号S1D、および角速度信号S1Eに基づいて、ノイズ(雑音)の大きさの予測値(以下、ノイズ予測値と称する)を算出するノイズ予測部102、音声認識して生成された単語列から、所定の大きさ以上の雑音下で集音された音声に対応する単語列を除去する認識結果除去フィルタ103、複数の認識結果から1つを選択する認識結果評価部104、センサ入力処理部101の認識結果を累積して、ロボット1の感情、本能、あるいは、成長の状態などのモデルを記憶するモデル記憶部106、音声認識結果と行動内容のテーブルを記憶するテーブル記憶部107、センサ入力処理部101の認識結果や、テーブル記憶部107に記憶されているテーブル等に基づいて、ロボット1の行動を決定し、ロボット1に行動を起こさせる行動制御部105、並びに合成音を生成する音声合成部108から構成されている。
【0054】
センサ入力処理部101は、マイクロホン82、角速度センサ77、加速度センサ92、頭部スイッチ51、足底スイッチ76、およびCCDカメラ81等から与えられる音声信号、角速度検出信号、加速度検出信号、圧力検出信号、接地信号、および画像信号等に基づいて、特定の外部状態や、ユーザからの特定の働きかけ、ユーザからの指示等を認識し、その認識結果を表す状態認識情報を、モデル記憶部106および行動制御部105に通知する。
【0055】
すなわち、センサ入力処理部101は、音声認識部121を有しており、音声認識部121は、マイクロホン82から与えられる音声信号について音声認識を行う。そして、音声認識部121は、例えば、「歩け」、「止まれ」、「右手を挙げろ」等の指令、その他の音声認識結果としての単語列を、認識結果除去フィルタ103に供給する。
【0056】
また、センサ入力処理部101は、姿勢処理部122を有しており、姿勢処理部122は、加速度センサ92、角速度センサ77、および足底スイッチ76から供給される加速度検出信号、角速度検出信号、および接地信号に基づいて、ロボット1がとっている姿勢や動作状態を推定し、この推定結果を、状態認識情報として、モデル記憶部106および行動制御部105に通知する。
【0057】
また、センサ入力処理部101は、圧力処理部123を有しており、圧力処理部123は、頭部スイッチ51から与えられる圧力検出信号を処理する。そして、圧力処理部123は、その処理の結果、所定の閾値以上で、かつ短時間の圧力を検出したときには、「叩かれた(しかられた)」と認識し、所定の閾値未満で、かつ長時間の圧力を検出したときには、「撫でられた(ほめられた)」と認識して、その認識結果を、状態認識情報として、モデル記憶部106および行動制御部105に通知する。
【0058】
更に、センサ入力処理部101は、画像認識部124を有しており、画像認識部124は、CCDカメラ81から与えられる画像信号を用いて、画像認識処理を行う。そして、画像認識部124は、その処理の結果、例えば、「赤い丸いもの」や、「地面に対して垂直なかつ所定高さ以上の平面」等を検出したときには、「ボールがある」や、「壁がある」等の画像認識結果を、状態認識情報として、モデル記憶部106および行動制御部105に通知する。
【0059】
モデル記憶部106は、ロボット1の感情、本能、成長の状態を表現する感情モデル、本能モデル、成長モデルをそれぞれ記憶、管理している。
【0060】
ここで、感情モデルは、例えば、「うれしさ」、「悲しさ」、「怒り」、「楽しさ」等の感情の状態(度合い)を、所定の範囲(例えば、−1.0乃至1.0等)の値によってそれぞれ表し、センサ入力処理部101からの状態認識情報や時間経過等に基づいて、その値を変化させる。本能モデルは、例えば、「食欲」、「睡眠欲」、「運動欲」等の本能による欲求の状態(度合い)を、所定の範囲の値によってそれぞれ表し、センサ入力処理部101からの状態認識情報や時間経過等に基づいて、その値を変化させる。成長モデルは、例えば、「幼年期」、「青年期」、「熟年期」、「老年期」等の成長の状態(度合い)を、所定の範囲の値によってそれぞれ表し、センサ入力処理部101からの状態認識情報や時間経過等に基づいて、その値を変化させる。
【0061】
モデル記憶部106は、上述のようにして感情モデル、本能モデル、成長モデルの値で表される感情、本能、成長の状態を、状態情報として、行動制御部105に送出する。
【0062】
なお、モデル記憶部106には、センサ入力処理部101から状態認識情報が供給される他、行動制御部105から、ロボット1の現在または過去の行動、具体的には、例えば、「長時間歩いた」などの行動の内容を示す行動情報が供給されるようになっており、モデル記憶部106は、同一の状態認識情報が与えられても、行動情報が示すロボット1の行動に応じて、異なる状態情報を生成するようになっている。
【0063】
即ち、例えば、ロボット1が、ユーザに挨拶をし、ユーザに頭を撫でられた場合には、ユーザに挨拶をしたという行動情報と、頭を撫でられたという状態認識情報とが、モデル記憶部106に与えられ、この場合、モデル記憶部106では、「うれしさ」を表す感情モデルの値が増加される。
【0064】
一方、ロボット1が、何らかの仕事を実行中に頭を撫でられた場合には、仕事を実行中であるという行動情報と、頭を撫でられたという状態認識情報とが、モデル記憶部106に与えられ、この場合、モデル記憶部106では、「うれしさ」を表す感情モデルの値は変化されない。
【0065】
このように、モデル記憶部106は、状態認識情報だけでなく、現在または過去のロボット1の行動を示す行動情報も参照しながら、感情モデルの値を設定する。これにより、例えば、何らかのタスクを実行中に、ユーザが、いたずらするつもりで頭を撫でたときに、「うれしさ」を表す感情モデルの値を増加させるような、不自然な感情の変化が生じることを回避することができる。
【0066】
なお、モデル記憶部106は、本能モデルおよび成長モデルについても、感情モデルにおける場合と同様に、状態認識情報および行動情報の両方に基づいて、その値を増減させるようになっている。また、モデル記憶部106は、感情モデル、本能モデル、成長モデルそれぞれの値を、他のモデルの値にも基づいて増減させるようになっている。
【0067】
行動制御部105は、センサ入力処理部101からの状態認識情報や、モデル記憶部106からの状態情報、時間経過等に基づいて、必要に応じて、テーブル記憶部107に記憶されたテーブルを参照して、次の行動を決定し、決定された行動に対応する行動プログラム105Aを読み出し、行動プログラム105Aに基づく指令を、サブ制御部63A乃至63Dに送出する。
【0068】
すなわち、行動制御部105は、ロボット1がとり得る行動をステート(状態:state)に対応させた有限オートマトンを、ロボット1の行動を規定する行動モデルとして管理しており、この行動モデルとしての有限オートマトンにおけるステートを、センサ入力処理部101からの状態認識情報や、モデル記憶部106における感情モデル、本能モデル、または成長モデルの値、時間経過等に基づいて遷移させ、遷移後のステートに対応する行動を、次にとるべき行動として決定する。
【0069】
ここで、行動制御部105は、所定のトリガ(trigger)があったことを検出すると、ステートを遷移させる。即ち、行動制御部105は、例えば、現在のステートに対応する行動を実行している時間が所定時間に達したときや、特定の状態認識情報を受信したとき、モデル記憶部106から供給される状態情報が示す感情や、本能、成長の状態の値が所定の閾値以下または以上になったとき等に、ステートを遷移させる。
【0070】
なお、行動制御部105は、上述したように、センサ入力処理部101からの状態認識情報だけでなく、モデル記憶部106における感情モデルや、本能モデル、成長モデルの値等にも基づいて、行動モデルにおけるステートを遷移させることから、同一の状態認識情報が入力されても、感情モデルや、本能モデル、成長モデルの値(状態情報)によっては、ステートの遷移先は異なるものとなる。
【0071】
なお、行動制御部105では、上述したように、ロボット1の頭部や手足等を動作させる行動指令情報の他、ロボット1に発話を行わせる行動指令情報も生成される。ロボット1に発話を行わせる行動指令情報は、音声合成部108に供給されるようになっており、音声合成部108に供給される行動指令情報には、音声合成部108に生成させる合成音に対応するテキスト等が含まれる。そして、音声合成部108は、行動決定部52から行動指令情報を受信すると、その行動指令情報に含まれるテキストに基づき、合成音を生成し、スピーカ72に供給して出力させる。これにより、スピーカ72からは、例えば、「こんにちは」などのユーザへの挨拶、ユーザへの各種の要求、あるいは、「何ですか?」等のユーザの呼びかけに対する応答その他の音声出力が行われる。
【0072】
図7は、センサ入力処理部101の音声認識部121の機能を示す機能ブロック図である。
【0073】
この構成例においては、マイクロフォン82から入力され、図示せぬAD変換部によりデジタル信号に変換された音声から特徴量を演算する特徴抽出部151、および特徴量を分析し、音声の認識処理をおこなう認識処理制御部152が設けられている。
【0074】
認識処理制御部152は、複数の言語モデル(語彙と文法)に対応する認識処理を並列に処理することができるように構成されており、1つの言語モデルに対応する認識処理を行なうモジュールとして、それぞれ認識処理部161−1乃至161−4が設けられている。
【0075】
認識処理制御部152においては、新たな言語モデルに対応した認識処理部を追加したり、不要になった認識処理部を削除することができる。また、各認識処理部に対して、認識処理を停止させたり、開始させたりすることができる。すなわち、複数の認識処理部を同時に駆動したり、認識処理部を切り替えたりすることによって、複数の言語モデルを同時に駆動したり、言語モデルを切り替えることができる。
【0076】
認識処理部161−1乃至161−4には、特徴抽出部151により演算された特徴量に基づいて、音声のマッチングを行うマッチング部171−1乃至171−4が設けられており、また、語彙に関する情報が蓄積された辞書データベース172−1乃至172−4、文法に関する情報が蓄積された文法データベース173−1乃至173−4が設けられている。さらに音響に関する情報が蓄積された音響モデルデータベース162が、マッチング部171−1乃至171−4と接続されている。
【0077】
なお、以下の説明において、認識処理部161−1乃至161−4のそれぞれを、個々に区別する必要がない場合、まとめて認識処理部161と称する。他の部分についても同様とする。また、図7の例においては、認識処理部は、認識処理部161−1乃至161−4の4つが示されているが、認識処理部は、必要に応じて、3つ以下、または5つ以上設けられることもある。
【0078】
音響モデルデータベース162により、同じ音響モデルをすべての認識処理部161が共有して利用することができるように構成されており、これによって消費するメモリや音響モデルにおいて発生するスコア計算のための処理などを効率的に共有することが可能となる。
【0079】
音響モデルデータベース162は、音声認識する音声の言語における個々の音素や音節などの音響的な特徴を表す音響モデルを記憶している。音響モデルとしては、例えば、HMM(Hidden Markov Model)が用いられる。辞書データベース172−1乃至172−4は、認識対象の各単語(語彙)について、その発音に関する情報(音韻情報)が記述された単語辞書を記憶している。文法データベース173−1乃至173−4は、辞書データベース172−1乃至172−4の単語辞書に登録されている各単語が、どのように連鎖する(つながる)かを記述した文法規則(言語モデル)を記憶している。文法規則としては、例えば、文脈自由文法(CFG)に基づく記述や、統計的な単語連鎖確率(N−gram)などが用いられる。
【0080】
辞書データベース172−1乃至172−4にはそれぞれ異なる語彙に関する情報が蓄積されており、文法データベース173−1乃至173−4にもそれぞれ異なる文法に関する情報が蓄積されている。この辞書データベース172と文法データベース173の組み合わせにより言語モデルが決定される。
【0081】
ところで、従来、ロボットは、動作時に、アクチュエータや頭部スイッチおよび足底スイッチから、ノイズ(雑音)を発生する。ロボットは、この自身が発生するノイズにより、音声認識の結果を誤る場合があり、その結果、ユーザが意図しない行動を実行してしまう恐れがあった。
【0082】
そこで、この問題を解決するために、本発明のロボット1は、ロボット1自身が動作中に発するノイズの大きさを、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量に基づいて、リアルタイムに予測する。そして、ノイズの予測値が、予め設定された所定の閾値より大きい時間が、音声認識した時間に占める割合が、所定の割合より大きかった場合、その間にマイクロフォン82により集音された音声の音声認識結果を除外するようになされている。
【0083】
これにより、誤った音声認識をした確率の高い音声認識結果を除外して、信頼性の高い音声認識結果のみを利用することができる。
【0084】
アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量から、ノイズの大きさを推測するためには、アクチュエータA1乃至A14を稼動させたり、頭部スイッチ51および足底スイッチ76をオン・オフしたりした場合に、どれくらい大きなノイズが発生するのかを、予め測定しておく必要がある。そこで、ロボット1の製造者は、ロボット1の出荷前に、ロボット1に種々の動作を実行させて、マイクロフォン82からノイズを集音する。そして、製造者は、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量と、発生するノイズ値の関係式を求め、これをロボット1に記憶させる。
【0085】
その後、ロボット1は、出荷され、ユーザにより使用される。ロボット1は、ユーザが発話した音声を音声認識する際、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量を、記憶された関係式に代入することにより、ノイズの予測値を算出し、この予測値に基づいて、利用しない区間の音声認識結果を除外する。
【0086】
このようにすることにより、ロボット1自身が発生するノイズの影響で、誤って音声認識した場合でも、その認識結果に基づいて、ロボット1が動作してしまうことを防ぐことができる。
【0087】
なお、以下の説明において、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量に基づいて、ノイズ予測値を算出する関係式を、ノイズ予測値算出式と称する。
【0088】
次に、図8は、出荷前のロボット1に種々の動作を実行させ、ノイズを測定する場合の構成例を表している。
【0089】
図8において、ロボット1は、ケーブル202を介して、コンピュータ201と接続されており、ケーブル202を介して、種々の情報の授受が行なわれる。ロボット1は、外界の音が遮音された防音室内に置かれ、コンピュータ201からの指示に従って、種々の動作を実行し、マイクロフォン82から集音された音声(ノイズ)をコンピュータ201に出力する。コンピュータ201は、ケーブル202を介して、ロボット1に種々の動作を実行するように指令し、ロボット1が動作中にマイクロフォン82から集音された音声(ノイズ)をロボット1から取得し、アクチュエータA1乃至A14の角速度や、頭部スイッチ51および足底スイッチ76のオン・オフなどの物理量、およびマイクロフォン82から集音された音声のノイズ値を基に、ノイズ予測値算出式を求める。そして、コンピュータ201は、求められたノイズ予測値算出式を、ロボット1に供給し、記憶させる。
【0090】
次に、図9および図10のフローチャートを参照して、ノイズ予測値算出式を求め、ロボット1に記憶させるまでの設定処理について説明する。
【0091】
なお、図9はコンピュータ201の処理を、図10はロボット1の処理をそれぞれ示している。また、以下の設定処理の説明においては、物理量として、アクチュエータA1乃至A14の角速度のみを考えることとする。その理由は、頭部スイッチ51および足底スイッチ76をオン・オフする際のノイズは、アクチュエータA1乃至A14により発生されるノイズと比較して、ごく短時間のうちに発生するため、アクチュエータA1乃至A14により発生されるノイズ、並びに頭部スイッチ51および足底スイッチ76をオン・オフする際のノイズの両方を考慮した1つのノイズ予測値算出式を求める代わりに、それぞれでノイズ予測値算出式を求めるためである。従って、図9および図10のフローチャートの処理を実行中、ロボット1の頭部スイッチ51および足底スイッチ76は、オン・オフしないように固定されている。
【0092】
図9のステップS1において、コンピュータ201は、ケーブル202を介して、ロボットに対して、所定の動作を実行するように指令する。この所定の動作は、例えば、2足歩行、腕部ユニット13A(13B)の挙上、頭部ユニット12の回転等や、これらの動作を複合した複合動作などであり、コンピュータ201は、多数の動作パターンを予め記憶している。なお、ロボット1に実行させる動作パターンが多いほど、より高精度なノイズ予測値算出式を求めることができる。
【0093】
図10のステップS21において、ロボット1のメイン制御部61は、コンピュータ201より、所定の動作の実行の指示が入力されたか否かを判定し、周辺回路62(通信回路)を経由して、コンピュータ201より、所定の動作の実行の指示が入力された場合、処理はステップS22に進む。
【0094】
ステップS22において、ロボット1のメイン制御部61(行動制御部105)は、サブ制御部63A乃至63Dを制御して、コンピュータ201から指示された動作を実行する。また、マイクロフォン82は、動作中の音声(ノイズ)を集音し、メイン制御部61に送出する。さらに、角速度センサ77は、動作中のアクチュエータA1乃至A14それぞれの角速度を検出し、角速度検出信号をメイン制御部61に送出する。メイン制御部61は、動作中にマイクロフォン82により集音された音声信号、および角速度センサ77から供給された角速度検出信号を取得する。
【0095】
ステップS23において、ロボット1のメイン制御部61は、ステップS22で取得した音声信号および角速度検出信号を、周辺回路62(通信回路)、およびケーブル202を介して、コンピュータ201に送信する。
【0096】
その後、処理はステップS21に戻り、上述したステップS21以降の処理が繰り返される。
【0097】
コンピュータ201は、図9のステップS2において、ロボット1が図10のステップS23で送信した音声信号および角速度検出信号を受信し、ステップS3において、受信した音声信号および角速度検出信号を記憶する。
【0098】
ステップS4において、コンピュータ201は、記憶している全動作パターンをロボット1に実行させたか否かを判定することにより、サンプルデータの取得を終了するか否かを判定し、まだ実行させていない動作パターンがあった場合(サンプルデータの取得を終了しないと判定した場合)、処理はステップS1に戻り、上述したステップS1以降の処理がくり返される。ただし、ステップS4の後に実行されるステップS1においては、コンピュータ201は、まだロボット1が実行していない動作を実行するように指示する。
【0099】
このようにして、コンピュータ201において、ステップS1乃至ステップS4の処理がくり返され、ロボット1において、ステップS21乃至ステップS23の処理がくり返されることにより、ロボット1に様々な動作を実行させた場合のサンプルデータ(ノイズ値)がコンピュータ201に蓄積される。
【0100】
そして、図9のステップS4において、コンピュータ201が、記憶している全動作パターンをロボット1に実行させたと判定した場合(サンプルデータの取得を終了すると判定した場合)、処理はステップS5に進む。
【0101】
ステップS5において、コンピュータ201は、ノイズ予測値算出式を求める。以下に、その具体例を記す。
【0102】
ノイズ予測値算出式は、例えば、アクチュエータA1乃至A14の角速度とノイズ値を統計分析することにより求められる。例えば、角速度に対するノイズ予測値を1次式で近似する場合、重回帰分析を行なって、式(1)のようなノイズ予測値算出式を求める。
【0103】
【数1】
【0104】
式(1)において、Fはノイズ予測値を表し、Pは係数(パラメータ)を表し、JはアクチュエータA1乃至A14の角速度を表し、Qはロボット1が動作しない場合のノイズ値を表している。また、iは、14個のアクチュエータA1乃至A14に対応している。
【0105】
すなわち、式(1)は、各アクチュエータの角速度JにパラメータPを掛け算した値(A×J)を、全アクチュエータ分(14個分)、足し算し、足し算した結果に対して、さらに、ロボット1が動作しない場合のノイズ値Bを足し算している。このパラメータPは、アクチュエータA1乃至A14毎に異なり、音声認識に与える影響が大きいほど、大きな値となる。
【0106】
すなわち、アクチュエータA1乃至A14は、そのサイズや、マイクロフォン82からの距離が異なる。従って、各アクチュエータが動作した場合に、音声認識に与える影響は、アクチュエータ毎に異なるものとなる。マイクロフォン82に近いアクチュエータにより発生されるノイズは、遠いアクチュエータにより発生されるノイズより、大きな音量のノイズとして集音されるため、より大きな影響を音声認識結果に与える。また、大きいアクチュエータは、小さいアクチュエータより大きな音量のノイズを発生するため、より大きな影響を音声認識結果に与える。
【0107】
このように、アクチュエータ毎に、音声認識に与える影響は異なる。従って、音声認識に対して、より影響力のあるアクチュエータに対して、パラメータPをより大きい値にすることにより、より適切に、ノイズ予測値を算出させることが可能となる。
【0108】
コンピュータ201は、ステップS5で、例えば、重回帰分析により、式(1)のパラメータPを求める。なお、上記したように、パラメータPは、アクチュエータA1乃至A14のそれぞれに対応して、14個求められる。なお、ロボット1の例においては、アクチュエータの個数が14個なので、式(1)のiは、1乃至14に設定されているが、アクチュエータの個数が異なれば、iもアクチュエータの個数に対応して設定される。また、パラメータPの個数も、アクチュエータの個数に対応した数だけ求められる。
【0109】
ステップS5の処理の後、処理はステップS6に進む。
【0110】
ステップS6において、コンピュータ201は、ステップS5で求められたパラメータPをロボット1に送信する。
【0111】
図10のステップS21において、ロボット1のメイン制御部61が、コンピュータ201から動作の指示は入力されていないと判定した場合、処理はステップS24に進む。
【0112】
ステップS24において、ロボット1のメイン制御部61は、コンピュータ201より、パラメータPが供給されたか否かを判定し、パラメータPは供給されていない場合、処理はステップS21に戻り、ステップS21以降の処理が繰り返される。ステップS24において、メイン制御部61が、コンピュータ201より、パラメータPが供給されたと判定した場合、処理はステップS25に進む。
【0113】
ステップS25において、メイン制御部61は、コンピュータ201より供給されたパラメータPを、内蔵するメモリ61Aに記憶させる。
【0114】
以上で、設定処理が終了され、ロボット1は、ケーブル202から切り離される。
【0115】
このようにして、アクチュエータA1乃至A14の角速度に対応するノイズ予測値算出式(上記の例においては、パラメータP)が求められる。頭部スイッチ51、および足底スイッチ76についても、上記と同様である。すなわち、防音室内で、ロボット1の頭部スイッチ51、および足底スイッチ76がオン・オフされ、そのときの音声(ノイズ)がマイクロフォン82により集音され、コンピュータ201に送られる。コンピュータ201は、この音声(ノイズ)の大きさに基づいて、頭部スイッチ51および足底スイッチ76のいずれか、または両方がオン・オフされた場合のノイズ予測値算出式を求め、求めた式をロボット1に記憶させる。
【0116】
ロボット1は、パラメータPが記憶された状態で、出荷され、ユーザにより使用される。
【0117】
次に、図11のフローチャートを参照して、ユーザにより使用されているロボット1が、ノイズに応じて、音声認識結果を除外する処理、すなわちロボット1のノイズ対応処理について説明する。
【0118】
ステップS51において、音声認識部121は、マイクロフォン82から音声が入力されたか否かを判定し、入力されたと判定されるまで待機する。そして、音声が入力されたと判定された場合、処理はステップS52に進む。なお、マイクロフォン82から入力される音声信号には、マイクロフォン82で集音された時点の現在時刻を示す時刻情報付加されて、音声認識部121に入力される。
【0119】
ステップS52において、音声認識部121は、音声認識処理を実行し、認識結果としての単語列、並びに単語列に対応する音声スコア、言語スコア、および時刻情報を認識結果除去フィルタ103に出力する。なお、時刻情報とは、単語列に対応する音声が発話された発話開始時刻と発話終了時刻を含む情報である。音声認識処理の詳細な説明は、図12のフローチャートを参照して、後述する。なお、音声認識部121は、認識処理部161−1乃至161−4のうち、認識処理を実行している全ての認識処理部から、それぞれ認識結果を出力する。
【0120】
ステップS53において、ノイズ予測部102は、ノイズ予測値取得処理を実行する。すなわち、ノイズ予測部102は、アクチュエータA1乃至A14により発生されるノイズ予測値を式(1)により算出し、頭部スイッチ51および足底スイッチ76により発生されるノイズ予測値を、頭部スイッチ51および足底スイッチ76用のノイズ予測値算出式により算出し、算出したノイズ予測値、およびノイズ予測値に対応する時刻を示す時刻情報を認識結果除去フィルタ103に出力する。ノイズ予測値取得処理の詳細な説明は、図13のフローチャートを参照して、後述する。
【0121】
なお、ステップS52の音声認識処理、およびステップS53のノイズ予測値取得処理は、説明の便宜上、ステップS52、ステップS53の順番に実行しているが、実際には、ステップS52およびステップS53の処理は並列に実行される。
【0122】
ステップS52およびステップS53がともに終了した後、処理はステップS54に進む。
【0123】
ステップS54において、認識結果除去フィルタ103は、ノイズ区間除去処理を実行する。すなわち、音声認識部121から出力された単語列には、その単語列に対応する音声が発話された時刻(発話開始時刻および発話終了時刻)の時刻情報がタグとして付加されている。また、ノイズ予測部102から出力されたノイズ予測値には、そのノイズ予測値に対応するノイズが発生された時刻の時刻情報がタグとして付加されている。そこで、認識結果除去フィルタ103は、これらの時刻情報を参照して、単語列が発話された時間全体における、ノイズ予測値が所定の大きさ以上である時間の占める割合を算出し、算出された割合が、予め設定された所定の割合以上である音声認識結果を除外する。その後、認識結果除去フィルタ103は、除外されずに残った音声認識結果を認識結果評価部104に出力する。ノイズ区間除去処理の詳細な説明は、図14のフローチャートを参照して後述する。なお、上記したように、音声認識部121では、認識処理を実行した全ての認識処理部から認識結果が出力される。従って、認識結果除去フィルタ103は、1以上の認識結果の全てに対して、ノイズを多く含む認識結果の除外を行う。
【0124】
ステップS54の処理の後、ステップS55において、認識結果評価部104は、認識結果評価処理を実行する。すなわち、音声認識部121では、認識処理を実行した全ての認識処理部から認識結果が出力される。従って、マイクロフォン82により集音された同じ音声信号から、各認識処理部によって、異なる単語列が生成される可能性がある。この場合、現在実行中の動作に従って、最適な単語列を選択する必要がある。そこで、認識結果評価部104は、単語列に付加されているスコアを参照して、ユーザの発言として採用すべき、最適な単語列を選択する。認識結果評価処理の詳細な説明は、図17のフローチャートを参照して、後述する。
【0125】
ステップS55の処理の後、ステップS56において、認識結果評価部104は、ステップS55で選択された単語列を、行動制御部105およびモデル記憶部106に出力する。その後、処理はステップS51に戻り、上述したステップS51以降の処理を繰り返し実行する。
【0126】
行動制御部105は、認識結果評価部104から供給された単語列等に基づいて、行動を決定し、サブ制御部63A乃至63D、および音声合成部108等を制御して、ロボット1に、所定の行動を実行させる。
【0127】
以上のようにして、ノイズ対応処理が実行される。
【0128】
以上のようなノイズ対応処理により、誤りである可能性の高い音声認識結果を、正確に除去することができる。その結果、誤った音声認識結果に基づいて、ロボットが行動してしまうことを防止することができる。また、ユーザの発話を集音するマイクロフォン以外に、ノイズ除去用のマイクロフォンを設置しないで済む。
【0129】
次に、図12のフローチャートを参照して、図11のステップS52の音声認識処理について詳細に説明する。
【0130】
ステップS71において、特徴抽出部151は、デジタル信号としての音声信号を、適当な時間間隔で周波数分析行うなどして、スペクトルや、その他の音声の音響的特徴を表すパラメータに変換し、特徴量として抽出する。
【0131】
ステップS72において、認識処理制御部152は、駆動させる認識処理部を選択する。
【0132】
例えば、ロボット1が、ユーザとの雑談、歌唱、および踊りを実行している場合を想定する。このとき、ロボット1では、雑談用、歌唱用、および踊り用のアプリケーションが起動している。また、ロボット1は、ユーザとの雑談用、歌唱用、および踊り用に、それぞれ1つずつ言語モデルを有しており、それぞれの言語モデルに対応した認識処理部が駆動されるものとする。さらに、全ての動作に共通に利用される言語モデルを1つ有しており、この言語モデルに対応した認識処理部が駆動されているものとする。なお、全ての動作に共通に利用される言語モデルとは、例えば「止まれ」などのように、重要度が大きいコマンドなどを認識するための言語モデルである。
【0133】
このとき、ロボット1は、現在実行中のアプリケーションに基づいて、全ての動作に共通に利用される言語モデルをもつ認識処理部、ユーザとの雑談用の言語モデルをもつ認識処理部、歌唱用の言語モデルをもつ認識処理部、および踊り用の言語モデルをもつ認識処理部を駆動する。ここでは、認識処理部161−1が全ての動作に共通に利用される言語モデルをもち、認識処理部161−2が雑談用の言語モデルをもち、認識処理部161−3が歌唱用の言語モデルをもち、認識処理部161−4が踊り用の言語モデルをもつものとする。
【0134】
従って、認識処理制御部152は、上記の認識処理部161−1乃至161−4を、駆動すべき認識処理部として選択する。すなわち、全部で4つの認識処理部161−1乃至161−4が認識処理制御部152で動作していることになり、1つのアプリケーションに対応する認識処理部はそれぞれ2つずつとなる。
【0135】
このように、認識処理制御部152は、実行中のアプリケーションに対応する言語モデルをもつ認識処理部を選択して駆動させる。
【0136】
その後、処理はステップS73に進む。なお、ステップS73乃至ステップS76の処理(以下、ステップS73乃至ステップS76の処理を単語系列認識処理とも称する)は、認識処理部161−1乃至161−4により、並列に実行される。
【0137】
ステップS73において、認識処理部161−1乃至161−4は、特徴抽出部151から出力された音声の特徴量を音響モデルデータベース162とマッチングし、音素、音節を判定する。なお、マイクロフォン82から入力され、AD変換された音声信号には、マイクロフォン82で集音されたときの現在時刻が付加されている。そこで、認識処理部161−1乃至161−4は、判定した音節毎に、対応する発話時刻を求め、この発話時刻を付加する。
【0138】
ステップS74において、認識処理部161−1乃至161−4は、音素、音節を辞書データベース172−1乃至172−4、および文法データベース173−1乃至173−4とマッチングして、音響スコアと言語スコアを演算する。
【0139】
すなわち、認識処理部161−1乃至161−4は、入力された特徴量がもつ音響的なパターンを、辞書データベース172に含まれる各単語に対応する音響的な標準パターンと比較し、音響的な評価値を、音響スコアとして演算する。また、文法としてたとえばバイグラムが用いられる場合には、認識処理部161−1乃至161−4は、直前の単語との連鎖確率に基づく各単語の言語的な確からしさを、文法データベース173に基づいて数値化し、これを言語スコアとして演算する。
【0140】
ステップS75において、認識処理部161−1乃至161−4は、音響スコアと言語スコアを総合して最も評価の高い単語列を決定し、ステップS76に進み、決定された単語列と、その単語列に対応する音声スコア、言語スコア、および時刻情報を認識結果除去フィルタ103に出力する。
【0141】
例えば、ユーザが、「今日はいい天気ですね。」と発声したとき、「今日」、「は」、「いい」、「天気」、「ですね」のような単語の系列が認識結果として得られることになる。このとき、各単語に対応して音響スコア、および言語スコアが与えられるとともに、各単語の発話時刻を示す時刻情報が与えられる。
【0142】
このようにして、入力された音声から単語系列が認識される。
【0143】
次に、図13のフローチャートを参照して、図11のステップS53のノイズ予測値取得処理について説明する。
【0144】
図13のステップS101において、ノイズ予測部102は、角速度センサ77から送出された角速度検出信号、頭部スイッチ51から送出された圧力検出信号、および足底スイッチ76から出力された接地信号をリアルタイムで取得し、取得したタイミングで、取得した情報に対して、現在時刻を示す時刻情報を付加する。
【0145】
ステップS102において、ノイズ予測部102は、ステップS101で取得された角速度検出信号、圧力検出信号、および接地信号に基づいて、ノイズ予測値を算出する。
【0146】
すなわち、ノイズ予測部102は、まず、図10のフローチャートの設定処理により記憶されたパラメータP、およびステップS101で取得された角速度検出信号に基づく角速度を式(1)に代入して、アクチュエータA1乃至A14の動作に起因するノイズ予測値を算出する。また、ノイズ予測部102は、頭部スイッチ51および足底スイッチ76により発生されるノイズを予測するためのノイズ予測値算出式に、圧力検出信号、および接地信号を代入して、頭部スイッチ51および足底スイッチ76のオン・オフに起因するノイズ予測値を算出する。
【0147】
ステップS103において、ノイズ予測部102は、ステップS102で算出したノイズ予測値を認識結果除去フィルタ103に供給する。なお、ノイズ予測部102は、ノイズ予測値に、そのノイズ予測値に対応する時刻を示す時刻情報を付加して、認識結果除去フィルタ103に供給する。
【0148】
以上のようにして、ノイズ予測値取得処理が実行される。
【0149】
次に、図11のステップS54のノイズ区間除去処理について説明するが、その前に、ノイズ区間を除去する仕組みについて説明する。
【0150】
音声認識部121は、マイクロフォン82により集音された音声を音声認識して、単語列を生成するが、マイクロフォン82から集音される音声には、ノイズが混入する。例えば、ユーザが「せんぷうき」と発話したと想定し、この音声の発話時間がXミリ秒であるとする。ここで、ユーザが「せんぷうき」と発話している間に、マイクロフォン82により、大きなノイズがYミリ秒だけ集音されたとする。このとき、音声「せんぷうき」の発話時間(Xミリ秒)に対する、大きなノイズの混入時間(Yミリ秒)の割合(Y/X)が少なければ、音声認識部121は、比較的正確に音声認識して、正しい単語列「扇風機」を生成することができるが、音声「せんぷうき」の発話時間(Xミリ秒)に対する、大きなノイズの混入時間(Yミリ秒)の割合(Y/X)が多い場合、音声認識部121は、誤って音声認識してしまい、誤った単語列(例えば「戦闘機」、「洗濯機」など)を生成してしまう。
【0151】
すなわち、単語列の発話時間に占める、大きなノイズの混入時間の割合が多いほど、音声認識の誤認識率(発話内容と異なる単語列を生成する確率)が高くなる。
【0152】
この誤認識率が高い場合、ロボット1は、ユーザの発言内容を誤って認識し、ユーザの意図に反した行動をとってしまう可能性がある。この問題を解決する方法として、誤認識率が高い場合、すなわち単語列の発話時間に占める、大きなノイズの混入時間の割合が多い場合、音声認識して生成された単語列を除去することが考えられる。
【0153】
そこで、認識結果除去フィルタ103は、単語列の発話時間に占める、大きなノイズの混入時間の割合が、予め設定された基準値以上である場合、その単語列を、信頼できない単語列(以下、非信頼単語列と称する)として、除去する。また、認識結果除去フィルタ103は、単語列の発話時間に占める、大きなノイズの混入時間の割合が、予め設定された基準値より小さい場合、その単語列を、信頼できる単語列(以下、信頼単語列と称する)と判断し、音声認識結果として採用する。
【0154】
なお、単語列の発話時間に占める、大きなノイズの混入時間の割合が、予め設定された基準値以上であるか否かを判定するためには、集音された音声に含まれるノイズが、大きなノイズであるか否かを判断しなくてはならない。そこで、認識結果除去フィルタ103は、予め閾値を設定しておき、ノイズの大きさが閾値以上である場合、そのノイズは大きいノイズであると判断する。
【0155】
ロボット1は、以上のようにして、ノイズ区間を除去する。なお、本発明においては、ノイズの大きさを示す値として、ノイズ予測部102により算出されたノイズ予測値が利用される。
【0156】
次に、図14のフローチャートを参照して、図11のステップS54のノイズ区間除去処理について説明する。
【0157】
ステップS121において、認識結果除去フィルタ103は、ノイズ予測部102から供給されたノイズ予測値に基づいて、ノイズ予測値が予め設定された閾値以上である時間を特定する。ステップS121の処理について、図15を参照して説明する。
【0158】
図15は、ノイズ予測値の経時変化を示すグラフである。図15においては、横軸が時間を表し、縦軸がノイズ予測値を表している。また図15において、Lはノイズ予測部102から供給されたノイズ予測値の経時変化を表す線分であり、THは、認識結果除去フィルタ103に予め設定された閾値である。
【0159】
図15において、ノイズ予測値Lは、時刻0乃至t1、t2乃至t3、t4乃至t5、およびt6以降の区間では、閾値TH以下である。また、ノイズ予測値Lは、時刻t1乃至t2、t3乃至t4、およびt5乃至t6の区間では、閾値TH以上である。
【0160】
従って、ステップS121において、認識結果除去フィルタ103は、図15の時刻t1乃至t2、t3乃至t4、およびt5乃至t6の区間を、ノイズ予測値が閾値TH以上である区間として特定する。
【0161】
ステップS122において、認識結果除去フィルタ103は、ノイズ予測値が閾値TH以上である時間の、単語列の発話時間に対する割合を算出する。ステップS122の処理について、図16を参照して説明する。
【0162】
図16において、横軸は時間軸である。また、図16において、「ノイズ予測値が閾値以上の区間」の記載の右側には、ノイズ予測値が閾値以上の区間A乃至Cが示されている。この区間A乃至Cは、ステップS121の処理により特定されている。図16において、t1乃至t6は、図15のt1乃至t6にそれぞれ対応している。
【0163】
また、図16において、「音声認識された区間」の記載の右側には、音声認識が実行され、単語列が生成された区間D乃至Fが示されている。
【0164】
図16において、音声認識して単語列が生成された区間D乃至Fのうち、区間Dに注目すると、区間Dの一部が、ノイズ予測値が閾値以上の区間Aと重なっている。この場合、区間Dの音声を音声認識して生成された単語列を除外するか否かの判定基準は以下のように定められる。すなわち、ノイズ予測値が閾値以上の区間と重なっている区間(すなわちtaからt2までの区間)の、区間D全体に対する割合が、予め設定された所定の基準値以上である場合、区間Dの音声を音声認識して生成された単語列を、除外すべき単語列であると判定する。
【0165】
従って、ステップS122において、認識結果除去フィルタ103は、この割合を算出する。例えば、図16の区間Dの例の場合、(taからt2までの時間)/(区間Dの時間)が演算される。
【0166】
また、図16の区間Eに注目すると、区間Eは、ノイズ予測値が閾値以上の区間と重なっていない。従って、区間Eの例の場合、ステップS122において、0/(区間Eの時間)が演算される。図16の区間Fに注目すると、区間Fは全体が、ノイズ予測値が閾値以上の区間Cと重なっている。従って、区間Fの例の場合、ステップS122において、(tbからtcまでの時間)/(区間Fの時間)が演算される。
【0167】
ステップS123において、認識結果除去フィルタ103は、ステップS122で算出された割合が、予め設定された基準の割合以上であるか否かを判定し、ステップS122で算出された割合が、予め設定された基準の割合以上である場合、その単語列を非信頼単語列であると判定し、処理はステップS124に進む。
【0168】
ステップS124において、認識結果除去フィルタ103は、ステップS123で、ノイズ予測値が閾値以上である時間の、単語列の発話時間に対する割合が、基準値以上であると判定された区間の単語列、すなわち非信頼単語列を除去する。
【0169】
ステップS123において、認識結果除去フィルタ103が、ステップS122で算出された割合は、予め設定された基準の割合以上ではないと判定した場合、処理はステップS125に進む。
【0170】
ステップS125において、認識結果除去フィルタ103は、単語列(信頼単語列)を認識結果評価部104に供給する。
【0171】
以上のようにして、ノイズ区間除去処理が実行される。
【0172】
なお、音声認識部121において、複数の認識処理部161が稼動していた場合、同一時刻の発話に基づく単語列が、複数個、認識結果除去フィルタ103に供給される。よって、認識結果除去フィルタ103は、各認識処理部161より供給された単語列全てに対して、上記したようなノイズ区間除去処理を実行し、非信頼単語列を除去する。
【0173】
なお、認識処理部161−1乃至161−4の、ノイズ耐性は異なる。すなわち、例えば、語彙数50の孤立単語認識を行なう認識処理部と、語彙数6万のトライグラム文法の大語彙連続音声認識を行なう認識処理部とでは、音声信号に含まれるノイズの大きさが同じでも、音声認識の誤認識率が異なる。従って、図15に示されるノイズ予測値の閾値THを全ての認識処理部161−1乃至161−4で同一の値にしてしまうと、ある認識処理部では、信頼できない単語列のみを適切に除去できるが、他の認識処理部では、信頼できない単語列を除去しなかったり、信頼できる単語列を除去してしまったりする可能性がある。
【0174】
そこで、認識結果除去フィルタ103は、音声認識部121から供給された単語列が、どの認識処理部で生成されたものかに応じて、異なる閾値THを設定して、ノイズ区間除去処理を実行する。すなわち、認識結果除去フィルタ103は、認識処理部161−1で生成された単語列用の閾値TH1、認識処理部161−2で生成された単語列用の閾値TH2、認識処理部161−3で生成された単語列用の閾値TH3、および認識処理部161−4で生成された単語列用の閾値TH4を予め保持し、音声認識部121から供給された単語列が、どの認識処理部により生成された単語列であるかに応じて、対応する認識処理部用の閾値を読み出し、その閾値によりノイズ予測値の大小を判定する。
【0175】
ところで、ステップS73乃至ステップS76の単語系列認識処理は、それぞれ異なる言語モデルをもつ複数の認識処理部において、並列に実行されるため、同じ音声を入力しても、認識処理部によって認識結果が異なる場合もあり得る。このとき、複数の認識結果から1つの認識結果を選択する必要がある
【0176】
2つの認識処理部が駆動している場合を考える。例えば、ロボット対話システムにおいて、ユーザと雑談を行なうアプリケーションが動作しているとし、このアプリケーションに対応した言語モデルとして、大語彙でトライグラム文法を用いた大語彙連続音声認識の言語モデルをもつ認識処理部161−2と、小語彙のコマンドだけ受け付ける孤立単語認識の言語モデル(各アプリケーションに共通の言語モデル)をもつ認識処理部161−1が駆動している。
【0177】
音声が入力されると、認識処理部で単語系列認識処理が行われ、単語列が認識される。ここで、各単語に音響スコアと言語スコアが与えられることになる。しかし、大語彙連続音声認識の言語モデルをもつ認識処理部161−2の認識結果に対しては、各単語にトライグラム文法で与えられる言語スコアが与えられるが、孤立単語認識の言語モデルをもつ認識処理部161−1の認識結果に対しては、言語スコアが利用されず、言語スコアが与えられない。
【0178】
この場合、音響スコアと言語スコアを総合したスコアを用いると、それぞれの単語列を比較することが難しくなるが、2つの認識処理部161−1および161−2が同じ音響モデルを用いて、同じような音響スコアの計算を行なっているとすれば、音響スコアに関して比較することができる。
【0179】
しかしながら、複数の言語モデルを同時に駆動した場合、単純に音響スコアに関して比較すると、音声認識の性能が低下するという問題があった。
【0180】
すなわち、例えば、トライグラムで駆動する大語彙の連続音声認識システムと、小語彙の孤立単語音声認識システムを同時に駆動した場合、それぞれの音声認識システムに対して認識結果である単語系列が決定される。このとき、どちらの単語系列を最終的な認識結果として利用するかが問題となるが、その判断を誤ると、認識性能が著しく低下するおそれがある。
【0181】
その原因としては、受理範囲の広い言語モデルが音響スコアの高い単語列を生成し、その単語列を最終的な認識結果と誤って判定することではないかと予想できる。また、複数の言語モデルを駆動することは、単独で言語モデルを駆動する場合に比べて言語モデルの制約が緩くなることを意味するので、認識率が低下するのは一般的な音声認識の特性である考えることもできる。
【0182】
ここで、認識性能の低下を防ぐために、それぞれの音響スコアに対して所定の値を乗じて重み付けをする方法が考えられる。複数のそれぞれ異なる言語モデルをもつ認識処理部を駆動し、複数の認識結果が得られる場合、上述したように、その認識結果の単語列に付与された音響スコアに対して、言語モデルに対応した所定の値を重みとして乗じた後に、スコアの評価の高い方を最終的な認識結果とすることで、複数の言語モデルを駆動した場合に生じる音声認識の性能低下を大きく改善することができる。
【0183】
次に、図17のフローチャートを参照して、図11のステップS55の認識結果評価処理について詳細に説明する。なお、以下の認識結果評価処理は、認識処理部161−1および161−2により生成された単語列の評価を例にして説明する。
【0184】
図17のステップS151において、認識結果評価部104は、認識結果除去フィルタ103から、単語列、音響スコア、および時刻情報が供給されたか否かを判定し、単語列、音響スコア、および時刻情報が供給されるまで待機する。そして、認識結果除去フィルタ103から、単語列、音響スコア、および時刻情報が供給されたとき、処理はステップS152に進む。
【0185】
ステップS152において、認識結果評価部104は、認識結果除去フィルタ103から供給された、同一時刻に対応付けられている単語列が複数個存在するか否かを判定する。すなわち、ある時刻に集音された音声信号が認識処理部161−1および161−2により音声認識され、2つの単語列が生成された場合、その中から、1つだけ単語列を選択しなくてはならない。ただし、認識処理部161−1および161−2から出力された単語列のうち、非信頼単語列であると判定されたものは、認識結果除去フィルタ103により除去されるため、認識処理部161−1および161−2により、同一時刻の音声由来の2つの単語列が生成されても、そのうち1つしか、認識結果評価部104に供給されない場合もある。そこで、ステップS152において、認識結果評価部104は、認識結果除去フィルタ103から供給された単語列に付加されている、発話時刻を示す時刻情報を参照して、同一の発話時刻の単語列が複数個存在するか否かを判定する。その結果、同一の発話時刻の単語列が複数存在した場合、処理はステップS153に進む。
【0186】
ステップS153において、認識結果評価部104は、ステップS152で同一時刻に対応付けられていると判定された複数の単語列を比較し、これらの単語列が同一の単語であるか否かを判定し、これらの単語列が同一の単語ではなかった場合、処理はステップS154に進む。
【0187】
ステップS154において、認識結果評価部104は、認識処理部161−1から出力された単語に対応する音響スコアに重み付けを行う。例えば、認識処理部161−2は大語彙でトライグラム文法を用いた大語彙連続音声認識の言語モデルを駆動し、認識処理部161−1は、小語彙のコマンドだけ受け付ける孤立単語認識の言語モデルを駆動しているとき、認識処理部21−1から出力された単語の音響スコアに、所定の値が乗じられ、重み付けが行われる。
【0188】
ステップS155において、認識結果評価部104は、ステップS154で重み付けされた音響スコアと、認識処理部161−2から出力された単語に対応する音響スコアを比較して、ステップS156に進み、音響スコアの評価が高い方の単語を選択する。その後、処理はステップS157に進む。
【0189】
ステップS152において、認識結果評価部104が、認識結果除去フィルタ103から供給された、同一時刻に対応付けられた単語列は存在しない(ある発話時刻に対応付けられた単語列は1つしかない)と判定した場合、ステップS153乃至ステップS156の処理はスキップされ、処理はステップS157に進む。
【0190】
ステップS153において、認識結果評価部104が、各認識処理部により生成された単語列は同一の単語であると判定した場合、ステップS154乃至ステップS156の処理はスキップされ、処理はステップS157に進む。
【0191】
ステップS157において、認識結果評価部104は、ステップS156で選択された単語列を行動制御部105に出力する。なお、ステップS152で、認識結果評価部104が、認識結果除去フィルタ103から供給された、同一時刻に対応付けられた単語列は存在しないと判定していた場合、認識結果評価部104は、ある発話時刻に対応して1つだけ存在する単語列を行動制御部105に出力する。また、ステップS153で、認識結果評価部104が、各認識処理部により生成された単語列は同一の単語であると判定した場合、認識結果評価部104は、同一であると判定された単語列を行動制御部105に出力する。
【0192】
以上のようにして、認識結果評価処理が実行される。
【0193】
ところで、以上の説明においては、音声認識処理が全て終了してから、ノイズ区間除去処理を実行しているが、音声認識処理とノイズ予測値取得処理は並列に実行されるため、ある1区間の発話内容の音声認識処理が完了する前に、その区間のノイズ予測値取得処理が完了することもあり得る。この場合、音声認識処理を実行中に、既に除去すべき区間を決定することも可能である。そこで、音声認識処理中に、除去すべき区間を決定し、除去すべき区間については、音声認識処理をしないようにするようにしても良い。
【0194】
次に、図18のフローチャートを参照して、音声認識処理中に、除去すべき区間を決定し、除去すべき区間についての音声認識処理を途中で終了するようにした場合のノイズ区間除去処理について説明する。なお、図18のノイズ区間除去処理は、図11のノイズ対応処理において、ステップS52の音声認識処理を実行中に、ステップS53のノイズ予測値取得処理が完了した場合にのみ実行される。また、この場合、ステップS52の音声認識処理が完了する前に、ステップS54のノイズ区間除去処理(図18のフローチャートの処理)が開始される。
【0195】
図18のステップS201において、ノイズ予測部102は、算出したノイズ予測値を音声認識部121および認識結果除去フィルタ103に供給する。
【0196】
ステップS202において、音声認識部121は、ノイズ予測値が閾値以上の区間の音声認識を中止する。すなわち、音声認識部121の認識処理制御部152は、予め閾値となるノイズ予測値の値を記憶しており、ノイズ予測部102から供給されたノイズ予測値が、閾値以上の区間(時間)を特定する。そして、認識処理制御部152は、音声認識処理を実行中の音声信号のうち、ノイズ予測値が閾値以上の区間の音声信号については、音声認識処理を中止する。
【0197】
ステップS203において、認識結果除去フィルタ103は、ノイズ予測値が閾値以上の区間から、音声認識処理が中止されるまでに生成された単語列を除去する。すなわち、ステップS201で、ノイズ予測部102から音声認識部121にノイズ予測値が供給された時点で、音声認識部121が既に音声認識した単語列があるため、その単語列のうちで、ノイズが閾値以上である区間から生成された単語列を除去する必要がある。認識結果除去フィルタ103は、音声認識部121から供給された単語列に付加されている時刻情報に基づいて、ノイズ予測値が閾値以上の区間に生成された単語列を検索し、ノイズ予測値が閾値以上の区間に生成された単語列があった場合、その単語列を除去する。
【0198】
ステップS204において、認識結果除去フィルタ103は、ステップS203の処理で除去されずに残った単語列を認識結果評価部104に出力する。
【0199】
以上のように、ノイズ区間除去処理を実行しても良い。このように予め除去することが分かっている区間の音声認識を中止することにより、余分な音声認識処理を行なわずに済み、メイン制御部61が行なわなくてはならない処理量を減らすことが可能となる。
【0200】
ところで、以上の説明においては、実際にノイズ予測値を算出して、そのノイズ予測値に基づいて、音声認識結果の単語列を除去するか否かを判定したり、音声認識自体を中止するか否かを判定しているが、予め決められた(パターン化された)動作を実行する場合、その動作中のどの時間にどの位の大きさのノイズが発生するのかは、見当をつけることができる。
【0201】
すなわち、例えば歩行動作の場合、床の傾斜や、床から突き出た突起物等の外乱で転倒しないように、ロボット1は、歩幅や加速度等を、リアルタイムで修正する必要がある。このような、状況に応じてリアルタイムで修正する必要がある動作においては、実際に、アクチュエータA1乃至A14からの角速度検出信号、頭部スイッチ51からの圧力検出信号、並びに足底スイッチ76からの接地信号に基づいて、ノイズ予測値を算出して、算出結果に基づいて音声認識結果を除去する必要がある。それに対して、リアルタイムで修正する必要がない、パターン化された動作(例えば、頭を横に振る動作)の場合、アクチュエータA1乃至A14のうち、いずれのアクチュエータをどのタイミングで駆動するのかを、予め固定的に設定することができる。従って、動作の実行中に発生するノイズの経時変化は、予め予測することができる。
【0202】
そこで、予め決められた固定的な動作(以下、予め決められた固定的な動作を定型動作と称する)を実行する場合、その動作の実行中にノイズ予測値を算出しなくても、大きなノイズが発生する区間で生成された単語列を除去することができる。
【0203】
次に、このようにした場合の、ロボット1の行動処理について図19を参照して説明し、ノイズ対応処理について、図21を参照して説明する。
【0204】
まず、図19のフローチャートを参照して、ロボット1の行動処理、すなわち、認識結果評価部104から供給された単語列に基づいて、行動する処理について説明する。
【0205】
図19のステップS221において、行動制御部105は、認識結果評価部104より、評価結果としての単語列の入力を受け付ける。
【0206】
ステップS222において、行動制御部105は、ステップS221で入力された単語列、およびモデル記憶部106やテーブル記憶部107に記憶された情報に基づいて、ロボット1がとるべき行動を選択する。
【0207】
ステップS223において、行動制御部105は、保持している行動プログラム105Aから、ステップS222で選択された行動に対応する行動プログラムを読み出す。
【0208】
ステップS224において、行動制御部105は、ステップS222で選択された動作は、定型動作であるか否かを判定し、ステップS222で選択された動作が定型動作であった場合、処理はステップS225に進む。
【0209】
ステップS225において、行動制御部105は、認識結果を除去すべき時刻を認識結果除去フィルタ103に通知する。認識結果除去区間について、図20を参照して説明する。
【0210】
図20は、図1のような起立姿勢をとっているロボット1に敬礼の動作を実行させるための行動プログラムの例を表している。図20に示された行動プログラムにおいては、まずアクチュエータA8を駆動して、前腕部を挙上してゆき、アクチュエータA8の駆動が終了する前に、アクチュエータA5の駆動を開始して、上腕部を若干、挙上させることにより、ロボット1に敬礼の姿勢をとらせる。図20において、横軸は時間軸を表している。また、図20において、「A8」と示された区間は、アクチュエータA8を駆動する区間を表し、「A5」と示された区間は、アクチュエータA5を駆動する区間を表している。すなわち、アクチュエータA8は、動作開示時間t0から時間t2まで駆動し、アクチュエータA5は、時間t1から動作終了時間t3まで駆動する。
【0211】
図20に示されるように、アクチュエータA8を駆動する区間の一部と、アクチュエータA5を駆動する区間の一部が、時間t1から時間t2までの区間で重なっている。2つのアクチュエータが同時に動作しているこの区間で、ノイズの大きさが音声認識の信頼性を損なうほどの大きさになるとする。行動プログラムには、この時間t1から時間t2までの区間が認識結果除去区間として登録されている。従って、ロボット1が敬礼の動作を開始する時刻が分かれば、認識結果を除去すべき時刻を指定することができる。そこで、ステップS225において、行動制御部105は、認識結果を除去すべき時刻(図20の例の場合、認識結果除去区間として指定された時間t1からt2までを、敬礼動作を開始する時刻に足し算した時刻)を、認識結果除去フィルタ103に通知する。
【0212】
ステップS226において、行動制御部105は、ロボット1が動作を開始する開始時刻および動作を終了する終了時刻をノイズ予測部102に通知し、開始時刻から終了時刻までの間におけるノイズ予測値の算出をしないように要求する。その後、処理はステップS227に進む。
【0213】
ステップS224のいて、行動制御部105が、選択された行動は、定型動作ではないと判定した場合、ステップS225およびステップS226の処理はスキップされ、処理はステップS227に進む。
【0214】
ステップS227において、行動制御部105は、行動プログラムをサブ制御部63A乃至63Dに供給し、動作を開始させる。
【0215】
以上のようにして、行動処理が実行される。
【0216】
次に、図21のフローチャートを参照して、ロボット1が定型動作を実行する場合のノイズ対応処理について説明する。なお、ステップS241、ステップS242、ステップS244、およびステップS245の処理は、それぞれ、図11のステップS51、ステップS52、ステップS55、およびステップS56の処理と同様の処理であるため、説明を省略する。
【0217】
ステップS242の処理が終了した後、ステップS243において、認識結果除去フィルタ103は、図19のステップS225で行動制御部105から通知された、認識結果を除去すべき時刻を参照して、音声認識部121から供給された単語列の中から、認識結果を除去すべき時刻の発話から生成された単語列を検索し、認識結果を除去すべき時刻の発話から生成された単語列が検出された場合、この単語列を除去する。認識結果除去フィルタ103は、除去されずに残った単語列を、認識結果評価部104に供給する。
【0218】
その後の、ステップS244およびステップS245の処理は、それぞれ図11のステップS55およびステップS56の処理と同様である。
【0219】
ロボット1が定型動作を実行する場合は、以上のようにしてノイズ対応処理を実行しても良い。これにより、メイン制御部61は、定型動作中には、ノイズ予測処理を実行しなくてよいため、処理量を減少させることができる。
【0220】
なお、以上の説明においては、アクチュエータA1乃至A14が回転する際の角速度を物理量として利用して、ノイズ予測値を算出しているが、このことは、ノイズ予測値を算出するための物理量として、角速度を利用することに限定することを意味するものではない。例えば、ノイズ予測値を算出するための物理量として、アクチュエータの速度等を利用しても良い。
【0221】
また、アクチュエータとしては、モータ、油圧ピストンなど、種々の動力源を利用することができる。
【0222】
また、以上の説明においては、アクチュエータA1乃至A14と同様、頭部スイッチ51、および足底スイッチ76により発生されるノイズに関しても、ノイズ予測値算出式を求め、算出した式に基づいて、ノイズ予測値を算出し、音声認識結果を除去するようにしているが、頭部スイッチ51、および足底スイッチ76により発生されるノイズに関しては、ノイズ予測値算出式を利用する代わりに、頭部スイッチ51、および足底スイッチ76のいずれかが、オン・オフした場合、その瞬間の音声認識結果を除外するようにしても良い。
【0223】
また、以上の説明においては、本発明を人型ロボットに適用した場合を例にして説明したが、本発明は人型ロボット以外のロボット(例えば犬型のロボットなど)に適用したり、産業用ロボットに適用したりすることも可能である。
【0224】
上述した一連の処理は、ハードウェアにより実行させることもできるし、上述したようにソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体等からインストールされる。
【0225】
図22は、このような処理を実行するパーソナルコンピュータ301の内部構成例を示す図である。パーソナルコンピュータのCPU(Central Processing Unit)311は、ROM(Read Only Memory)312に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)313には、CPU311が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース315は、ディスプレイ、スピーカ、およびDA変換器などから構成される出力部316も接続されている。また、入出力インタフェース315には、マウス、キーボード、マイクロフォン、AD変換器などから構成される入力部317が接続され、入力部317に入力された信号をCPU311に出力する。
【0226】
さらに、入出力インタフェース315には、ハードディスクなどから構成される記憶部318、および、インターネットなどのネットワークを介して他の装置とデータの通信を行う通信部319も接続されている。ドライブ320は、磁気ディスク331、光ディスク332、光磁気ディスク333、半導体メモリ334などの記録媒体からデータを読み出したり、データを書き込んだりするときに用いられる。
【0227】
記録媒体は、図22に示されるように、パーソナルコンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク331(フレキシブルディスクを含む)、光ディスク332(CD−ROM(Compact Disc−Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク333(MD(Mini−Disc)(登録商標)を含む)、若しくは半導体メモリ334などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM312や記憶部318が含まれるハードディスクなどで構成される。
【0228】
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0229】
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
【0230】
【発明の効果】
このように、本発明によれば、音声を認識することができる。特に、誤りである可能性の高い音声認識結果を、正確に除去することができる。その結果、誤った音声認識結果に基づいて、ロボットが行動してしまうことを防止することができる。
【0231】
また、本発明によれば、リアルタイムに修正が行なわれる動作に対しても、誤りである可能性の高い音声認識結果を、正確に除去することができる。また、パターン化された動作に対しては、処理に要する演算量を減少させることができる。
【0232】
さらに、本発明によれば、ユーザの発話を集音するマイクロフォン以外に、ノイズ除去用のマイクロフォンを設置する必要がない。
【図面の簡単な説明】
【図1】本発明を適用したロボットの外観構成を示す斜視図である。
【図2】図1のロボットの外観構成を示す、背後側の斜視図である。
【図3】図1のロボットについて説明するための略線図である。
【図4】図1のロボットの内部構成を示すブロック図である。
【図5】図1のロボットの制御に関する部分を主に説明するためのブロック図である。
【図6】図5のメイン制御部の構成を示すブロック図である。
【図7】図6の音声認識部の構成を示すブロック図である。
【図8】ノイズ予測値算出式を求めるための設定処理時の構成例を説明する図である。
【図9】コンピュータの設定処理を説明するフローチャートである。
【図10】ロボットの設定処理を説明するフローチャートである。
【図11】ロボットのノイズ対応処理を説明するフローチャートである。
【図12】図11のステップS52、および図21のステップS242の処理を詳細に説明するフローチャートである。
【図13】図11のステップS53の処理を詳細に説明するフローチャートである。
【図14】図11のステップS54の処理を詳細に説明するフローチャートである。
【図15】図14のステップS121の処理を説明する図である。
【図16】除去する区間の選択について説明する図である。
【図17】図11のステップS55の処理を詳細に説明するフローチャートである。
【図18】図11のステップS54の処理について説明する、図14とは異なるフローチャートである。
【図19】ロボットの行動処理を説明するフローチャートである。
【図20】定型動作における認識結果除去区間を説明する図である。
【図21】ロボットのノイズ対応処理を説明する図11とは異なるフローチャートである。
【図22】本発明を適用したコンピュータの構成を示すブロック図である。
【符号の説明】
1 ロボット, 51 頭部スイッチ, 61 メイン制御部, 63 サブ制御部, 76 足底スイッチ, 77 角速度センサ, 82 マイクロホン, 102 ノイズ予測部, 103 認識結果除去フィルタ, 104 認識結果評価部, 105 行動制御部, 121 音声認識部, 201 コンピュータ
Claims (10)
- ロボットの動作を制御するロボット制御装置において、
機械的動作を実行する動作実行手段と、
前記動作実行手段により実行された前記機械的動作に関する物理量を取得する取得手段と、
前記取得手段により取得された前記物理量に基づいて、前記機械的動作によって発生されるノイズの予測値を算出する算出手段と、
音声を認識する音声認識手段と、
前記算出手段により算出された前記予測値に基づいて、前記音声認識手段により認識され、生成された単語列から、利用しない単語列を除去する除去手段と
を備えることを特徴とするロボット制御装置。 - 前記動作実行手段は、アクチュエータを含み、前記物理量は前記アクチュエータの角速度または速度を含む
ことを特徴とする請求項1に記載のロボット制御装置。 - 前記取得手段は、前記ロボットに設置されたスイッチのオン・オフを示す情報を前記物理量としてさらに取得する
ことを特徴とする請求項1に記載のロボット制御装置。 - 前記音声認識手段は、前記算出手段により算出された前記予測値に基づいて、認識する前記音声を選択する
ことを特徴とする請求項1に記載のロボット制御装置。 - 前記除去手段は、前記単語列に対応する音声の発声時間に占める、前記予測値が所定の閾値以上である時間の割合が、予め設定された所定の基準値以上であった場合、前記単語列を除去する
ことを特徴とする請求項1に記載のロボット制御装置。 - 前記音声認識手段は、異なる言語モデルに基づく複数の認識処理を並列に実行し、
前記除去手段は、複数の前記認識処理のそれぞれの前記閾値を異なる値に設定する
ことを特徴とする請求項5に記載のロボット制御装置。 - 前記機械的動作のうちパターン化された定型動作が実行される場合において、認識結果を除去すべき認識結果除去区間を予め記憶する記憶手段をさらに備え、
前記動作実行手段により前記定型動作が実行される場合、
前記算出手段は、前記予測値の算出を中止し、
前記除去手段は、前記記憶手段により記憶された前記認識結果除去区間に基づいて、前記音声認識手段により生成された前記単語列から、利用しない前記単語列を除去する
ことを特徴とする請求項1に記載のロボット制御装置。 - ロボットの動作を制御するロボット制御装置のロボット制御方法において、
機械的動作を実行する動作実行ステップと、
前記動作実行ステップの処理により実行された前記機械的動作に関する物理量を取得する取得ステップと、
前記取得ステップの処理により取得された前記物理量に基づいて、前記機械的動作によって発生されるノイズの予測値を算出する算出ステップと、
音声を認識する音声認識ステップと、
前記算出ステップの処理により算出された前記予測値に基づいて、前記音声認識ステップの処理により認識され、生成された単語列から、利用しない単語列を除去する除去ステップと
を含むことを特徴とするロボット制御方法。 - ロボットの動作を制御する処理をコンピュータに実行させるプログラムであって、
機械的動作を実行する動作実行ステップと、
前記動作実行ステップの処理により実行された前記機械的動作に関する物理量を取得する取得ステップと、
前記取得ステップの処理により取得された前記物理量に基づいて、前記機械的動作によって発生されるノイズの予測値を算出する算出ステップと、
音声を認識する音声認識ステップと、
前記算出ステップの処理により算出された前記予測値に基づいて、前記音声認識ステップの処理により認識され、生成された単語列から、利用しない単語列を除去する除去ステップと
を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。 - ロボットの動作を制御するコンピュータに、
機械的動作を実行する動作実行ステップと、
前記動作実行ステップの処理により実行された前記機械的動作に関する物理量を取得する取得ステップと、
前記取得ステップの処理により取得された前記物理量に基づいて、前記機械的動作によって発生されるノイズの予測値を算出する算出ステップと、
音声を認識する音声認識ステップと、
前記算出ステップの処理により算出された前記予測値に基づいて、前記音声認識ステップの処理により認識され、生成された単語列から、利用しない単語列を除去する除去ステップと
を実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003048558A JP2004258289A (ja) | 2003-02-26 | 2003-02-26 | ロボット制御装置および方法、記録媒体、並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2003048558A JP2004258289A (ja) | 2003-02-26 | 2003-02-26 | ロボット制御装置および方法、記録媒体、並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004258289A true JP2004258289A (ja) | 2004-09-16 |
Family
ID=33114489
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2003048558A Withdrawn JP2004258289A (ja) | 2003-02-26 | 2003-02-26 | ロボット制御装置および方法、記録媒体、並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004258289A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008146565A1 (ja) * | 2007-05-30 | 2008-12-04 | Nec Corporation | 音源方向検出方法、装置及びプログラム |
JP2012112570A (ja) * | 2010-11-24 | 2012-06-14 | Hitachi Appliances Inc | 空気調和機 |
KR101741734B1 (ko) * | 2008-07-02 | 2017-06-15 | 구글 인코포레이티드 | 병렬 인식 태스크에 따른 음성 인식 |
-
2003
- 2003-02-26 JP JP2003048558A patent/JP2004258289A/ja not_active Withdrawn
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2008146565A1 (ja) * | 2007-05-30 | 2008-12-04 | Nec Corporation | 音源方向検出方法、装置及びプログラム |
KR101741734B1 (ko) * | 2008-07-02 | 2017-06-15 | 구글 인코포레이티드 | 병렬 인식 태스크에 따른 음성 인식 |
US10049672B2 (en) | 2008-07-02 | 2018-08-14 | Google Llc | Speech recognition with parallel recognition tasks |
US10699714B2 (en) | 2008-07-02 | 2020-06-30 | Google Llc | Speech recognition with parallel recognition tasks |
US11527248B2 (en) | 2008-07-02 | 2022-12-13 | Google Llc | Speech recognition with parallel recognition tasks |
JP2012112570A (ja) * | 2010-11-24 | 2012-06-14 | Hitachi Appliances Inc | 空気調和機 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1609568B1 (en) | Robot device, information processing method, and program | |
US10242666B2 (en) | Method of performing multi-modal dialogue between a humanoid robot and user, computer program product and humanoid robot for implementing said method | |
US6509707B2 (en) | Information processing device, information processing method and storage medium | |
US6980956B1 (en) | Machine apparatus and its driving method, and recorded medium | |
US7065490B1 (en) | Voice processing method based on the emotion and instinct states of a robot | |
WO2002091356A1 (fr) | Dispositif robot, appareil de reconnaissance de caracteres, procede de lecture de caracteres, programme de commande et support d'enregistrement | |
US20040054531A1 (en) | Speech recognition apparatus and speech recognition method | |
WO2002080141A1 (fr) | Appareil de traitement du son | |
JP2002189488A (ja) | ロボット制御装置およびロボット制御方法、記録媒体、並びにプログラム | |
JP2001157976A (ja) | ロボット制御装置およびロボット制御方法、並びに記録媒体 | |
JP2001154685A (ja) | 音声認識装置および音声認識方法、並びに記録媒体 | |
JP2002116792A (ja) | ロボット制御装置およびロボット制御方法、並びに記録媒体 | |
JP4600736B2 (ja) | ロボット制御装置および方法、記録媒体、並びにプログラム | |
JP4587009B2 (ja) | ロボット制御装置およびロボット制御方法、並びに記録媒体 | |
JP2002323900A (ja) | ロボット装置、プログラム及び記録媒体 | |
JP2004258289A (ja) | ロボット制御装置および方法、記録媒体、並びにプログラム | |
JP2001154693A (ja) | ロボット制御装置およびロボット制御方法、並びに記録媒体 | |
JP2004286805A (ja) | 話者識別装置および話者識別方法、並びにプログラム | |
JP2005335001A (ja) | ロボット制御装置および方法、記録媒体、並びにプログラム | |
JP2005059185A (ja) | ロボット装置及びその制御方法 | |
JP2004170756A (ja) | ロボット制御装置および方法、記録媒体、並びにプログラム | |
JP2002268663A (ja) | 音声合成装置および音声合成方法、並びにプログラムおよび記録媒体 | |
JP4016316B2 (ja) | ロボット装置およびロボット制御方法、記録媒体、並びにプログラム | |
JP2003044080A (ja) | ロボット装置、文字認識装置及び文字認識方法、並びに、制御プログラム及び記録媒体 | |
JP2002307349A (ja) | ロボット装置、情報学習方法、プログラム及び記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060509 |