(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0009】
以下、本発明の音声認識装置、音声認識方法及びプログラムに係る実施の形態を図面に基づいて説明する。なお、本発明の音声認識装置は、ユーザ(発話者)を撮影しながら音声認識を行うことが可能なロボットであるものとして、以下説明を行う。
【0010】
〔実施形態1〕
[音声認識装置100の構成]
図1は、本実施形態の音声認識装置100の機能的構成を示すブロック図である。
図1に示すように、音声認識装置100は、CPU1と、RAM2と、記憶部3と、操作部4と、撮影部5と、音声入出力部6と、通信部7とを備えている。また、音声認識装置100の各部は、バス8を介して接続されている。
【0011】
CPU(認識手段、検出手段、制御手段、調整手段)1は、記憶部3のプログラム記憶部3aに記憶されているシステムプログラムやアプリケーションプログラムを読み出してRAM2のワークエリアに展開し、当該プログラムに従って音声認識装置100の各部の動作を制御する。
【0012】
RAM2は、例えば、揮発性のメモリであり、CPU1により読み出された各種のプログラムやデータを一時的に格納するワークエリアを有する。
【0013】
記憶部3は、例えば、HDD(Hard Disk Drive)、SSD(Solid State Drive)、EEPROM(Electrically Erasable Programmable Read Only Memory)、フラッシュメモリなどにより構成される。
記憶部3には、プログラム記憶部3aが設けられている。プログラム記憶部3aには、CPU1で実行されるシステムプログラムや、各種処理を実行するための処理プログラム、これらのプログラムの実行に必要なデータ等が記憶されている。
【0014】
操作部4は、音声認識装置100本体に対して各種指示を入力するためのものである。
具体的には、操作部4は、例えば、音声認識装置100本体の電源のON/OFFに係る電源ボタン、モードや機能等の選択指示に係るカーソルボタンや決定ボタン(何れも図示略)を備えている。
そして、ユーザにより各種ボタンが操作されると、操作部4は、操作されたボタンに応じた操作指示をCPU1に出力する。CPU1は、操作部4から出力され入力された操作指示に従って所定の動作を各部に実行させる。
【0015】
撮影部5は、音声認識の対象となるユーザを撮影して撮影画像を生成する。撮影部5は、図示は省略するが、光学系及び撮像素子を備えるカメラと、カメラを制御する撮影制御部とを備えている。撮像素子は、例えば、CCD(Charge Coupled Device)やCMOS(Complementary Metal Oxide Semiconductor)等のイメージセンサである。そして、撮像素子は、光学系を通過した光学像を2次元の画像信号に変換する。カメラの光学系は、ロボットである音声認識装置100と向き合っているユーザを正面から撮影可能な方向に向けられている。
【0016】
音声入出力部6は、マイク、ADコンバーター等の音声入力部と、DAコンバーター、アンプ、スピーカー等の音声出力部とで構成される。音声入出力部6は、音声入力時にマイクからユーザの音声や周囲の音声の入力を受け付け、音声入力信号をデジタルの音声入力情報に変換してCPU1に出力し、音声出力時に音声出力信号をアナログの音声出力信号に変換してスピーカーから音声出力する。
【0017】
通信部7は、例えば、ネットワークカード、モデム、TA、ルータなどにより構成される。また、通信部7は、アンテナ、変復調回路、信号処理回路などを備え無線通信が可能な構成であってもよい。通信部7は、通信ネットワーク上のサーバなどの外部機器と通信接続してデータ送受信を行う。
なお、ロボットとしての音声認識装置100において、駆動部等の他の構成部は図示及び説明を省略している。
【0018】
[音声認識装置100の動作]
次に、本実施形態における音声認識装置100の動作について説明する。
【0019】
<音声認識処理>
図2は、音声認識処理を示すフローチャートである。この音声認識処理は、操作部4を介して、音声認識処理の実行指示が入力されたことをトリガとして実行される。なお、音声認識処理の実行開始に伴い、撮影部5による撮影画像の生成と音声入出力部6による音声の入力とが逐次行われるようになっている。
【0020】
図2に示すように、CPU1は、先ず、発話状態を初期化する(ステップS0)。具体的には、CPU1は、発話中であるか否かを示す発話中フラグを「0」の状態にセットする。
【0021】
次いで、CPU1は、撮影部5により生成された撮影画像(最初のフレーム画像)を用いて、音声認識の対象となるユーザ(発話者)の顔検出処理を行う(ステップS1)。なお、顔検出処理は公知の技術を使用することで実現可能であるため、詳細な説明は省略する。
【0022】
次いで、CPU1は、ステップS1で検出された顔からこの顔のパーツ(例えば、上唇と下唇)を撮影画像上から検出する(ステップS2)。なお、顔のパーツ検出処理は公知の技術を使用することで実現可能であるため、詳細な説明は省略する。
【0023】
次いで、CPU1は、現在の時刻tを取得し(ステップS3)、ステップS2で検出された撮影画像(口唇画像)上のパーツ(例えば、上唇と下唇)の座標位置から口の開閉状態を判定する(ステップS4)。
【0024】
ステップS4において、口が開いていると判定された場合(ステップS4;YES)、CPU1は、発話中であるか否かを示す発話中フラグが「0」の状態であるか否か(発話中フラグがオフの状態であるか否か)を判定する(ステップS5)。
【0025】
ステップS5において、発話中フラグが「0」の状態である、すなわち発話中でないと判定された場合(ステップS5;YES)、CPU1は、発話開始のタイミングであると認識し、発話開始時刻ST(=t−(SRT_MIN+rtCoeff×(SRT_MAX−SRT_MIN)))の調整を行う(ステップS6)。ここで、[t]とは、ステップS3で取得された現在の時刻である。[SRT_MAX]とは、最大余白時間を示す定数であり、音声認識の際に発話の冒頭部分が切れないように余裕をもって設定される値である。[SRT_MIN]とは、最小余白時間を示す定数であり、ステップS6で調整される発話開始時刻STが実際の発話開始時刻の直前となるように設定される値である。[rtCoeff]とは、音声認識装置100の周囲の音声(ノイズ)の大きさに応じて設定される調整係数である(ステップS11〜S15参照)。
【0026】
次いで、CPU1は、発話中フラグを「1」の状態(オンの状態)に更新する(ステップS7)。そして、CPU1は、次の時刻の撮影画像(フレーム画像)を取得し(ステップS8)、処理をステップS1へ戻す。
【0027】
また、ステップS5において、発話中フラグが「0」の状態でない、すなわち発話中であると判定された場合(ステップS5;NO)、CPU1は、ステップS6及びステップS7をスキップして、ステップS8へ移行する。
【0028】
また、ステップS4において、口が開いていないと判定された場合(ステップS4;NO)、CPU1は、発話中フラグが「1」の状態であるか否か(発話中フラグがオンの状態であるか否か)を判定する(ステップS9)。
【0029】
ステップS9において、発話中フラグが「1」の状態でない、すなわち発話中でないと判定された場合(ステップS9;NO)、CPU1は、音声入出力部6のマイクより入力された音声入力信号から音声認識装置100の周囲のノイズ音量(N音量(Npow))を算出する(ステップS10)。ノイズ音量の算出方法は、過去一定時間に入力された音声入力信号の移動平均により算出しても良いし、直近のノイズ音量の影響が大きくなるようにしたい場合には加重移動平均により算出しても良い。ここで、ノイズ音量が算出されるノイズは、ユーザ(音声認識対象者)が発する音声の周波数範囲(例えば、100〜1000Hz(人の声の周波数))に含まれる音声(例えば、ユーザ(発話者)以外の人の声や、人の声以外の音)のみを対象とする(後述の実施形態2及び実施形態2の変形例も同様)。このように、ユーザ(発話者)が発する音声の周波数範囲に含まれる音声のみをノイズとみなし、ユーザが発する音声の周波数範囲外の音をノイズの対象外としている理由は、当該ユーザが発する音声の周波数範囲外の音は、明らかに人の発する音声とは異なり、音声認識の精度を低下させる原因とはなりにくいためである。
【0030】
次いで、CPU1は、ステップS10で算出されたノイズ音量(Npow)が第1の閾値(TH_N_MIN)よりも小さいか否かを判定する(ステップS11)。
【0031】
ステップS11において、ノイズ音量(Npow)が第1の閾値(TH_N_MIN)よりも小さいと判定された場合(ステップS11;YES)、CPU1は、調整係数(rtCoeff)を「1」に更新する(ステップS12)。つまり、音声認識装置100の周囲の音声(ノイズ)が小さい場合には、発話者の音声と周囲の音声とが結合され難いため、
図3に示すように、ズレ調整量を大きくすることで、実際の発話開始時刻よりもだいぶ前から音声認識が開始されるようにしている。そして、CPU1は、処理をステップS8へ移す。
一方、ステップS11において、ノイズ音量(Npow)が第1の閾値(TH_N_MIN)以上であると判定された場合(ステップS11;NO)、CPU1は、ノイズ音量(Npow)が第2の閾値(TH_N_MAX)よりも大きいか否かを判定する(ステップS13)。
【0032】
ステップS13において、ノイズ音量(Npow)が第2の閾値(TH_N_MAX)よりも大きいと判定された場合(ステップS13;YES)、CPU1は、調整係数(rtCoeff)を「0」に更新する(ステップS14)。つまり、音声認識装置100の周囲の音声(ノイズ)が大きい場合には、発話者の音声と周囲の音声とが結合され易いため、
図3に示すように、ズレ調整量を小さくすることで、実際の発話開始時刻の直前から音声認識が開始されるようにしている。そして、CPU1は、処理をステップS8へ移行する。
一方、ステップS13において、ノイズ音量(Npow)が第2の閾値(TH_N_MAX)より大きくないと判定された場合(ステップS13;NO)、CPU1は、調整係数(rtCoeff)をrtCoeff=(TH_N_MAX−Npow)/(TH_N_MAX−TH_N_MIN)の式に基づき更新し(ステップS15)、ステップS8へ移行する。
【0033】
また、ステップS9において、発話中フラグが「1」の状態である、すなわち発話中であると判定された場合(ステップS9;YES)、CPU1は、発話終了のタイミングであると認識し、発話終了時刻ET(=t−(ERT_MIN+rtCoeff×(ERT_MAX−ERT_MIN)))の調整を行う(ステップS16)。ここで、[t]とは、ステップS3で取得された現在の時刻である。[ERT_MAX]とは、最大余白時間を示す定数であり、音声認識の際に発話の終端部分が切れないように余裕をもって設定される値である。[ERT_MIN]とは、最小余白時間を示す定数であり、ステップS16で調整される発話終了時刻ETが実際の発話終了時刻の直後となるように設定される値である。[rtCoeff]とは、音声認識装置100の周囲の音声(ノイズ)の大きさに応じて設定される調整係数である(ステップS11〜S15参照)。
【0034】
次いで、CPU1は、音声入出力部6により入力された音声のうち、ステップS6で調整された発話開始時刻STからステップS16で調整された発話終了時刻ETまでの区間(音声認識区間)の音声に対して音声認識を行い(ステップS17)、音声認識処理を終了する。
【0035】
以上のように、本実施形態の音声認識装置100は、ユーザ(発話者)の口の動きを認識し、自装置の周囲の音声を検出し、ユーザの口の動きと自装置の周囲の音声とに基づいて音声認識タイミングを制御しているので、音声認識の精度に与える自装置の周囲の音声の影響を低減することができる。なお、音声認識タイミングが示すタイミングとは、一瞬(一時点)に限らず所定の期間(発話開始のタイミングから発話終了のタイミングまでの区間)を含むものである。
【0036】
また、本実施形態の音声認識装置100は、ユーザの口唇画像から口の動きとして当該ユーザの発話開始のタイミングと発話終了のタイミングとを認識するので、実際の発話タイミングとのズレを低減することができ、音声認識の精度に与える自装置の周囲の音声の影響をより低減することができる。
【0037】
また、本実施形態の音声認識装置100は、自装置の周囲の音声に基づいて発話開始のタイミングと発話終了のタイミングとを調整し、調整された発話開始のタイミングを音声認識の開始タイミングとするとともに、調整された発話終了のタイミングを音声認識の終了タイミングとするので、自装置の周囲の音声の結合や、発話冒頭部分の音声が失われるといった不具合を抑制することができ、音声認識の精度を向上させることができる。
【0038】
また、本実施形態の音声認識装置100は、自装置の周囲の音声の大きさを検出し、自装置の周囲の音声の大きさに基づいて音声認識タイミングを制御するので、音声認識の精度に与える自装置の周囲の音声の影響をより低減することができる。
【0039】
また、本実施形態の音声認識装置100は、自装置の周囲の音声の大きさが所定の閾値以上である場合、当該音声の大きさが所定の閾値よりも小さい場合に比べて、発話開始のタイミング及び発話終了のタイミングの調整量を小さくしたこととなる。
これにより、自装置の周囲の音声が大きい場合には、発話開始のタイミング及び発話終了のタイミングの調整量を小さくすることができるので、自装置の周囲の音声が発話音声と結合する可能性を低減することができ、音声認識の精度に与える自装置の周囲の音声の影響を低減することができる。
【0040】
〔実施形態2〕
以下、本発明の実施形態2について説明する。
実施形態2における構成は、音声認識装置100の記憶部3のプログラム記憶部3aに本実施形態の音声認識処理を実行するためのプログラムが記憶されるとともに、記憶部3に顔データベースや個人ずれ調整量データベースが記憶されている他は、実施形態1で説明したものと同様であるので説明を省略し、以下実施形態2の動作について説明する。
【0041】
<音声認識処理>
図4は、実施形態2の音声認識処理を示すフローチャートである。
図4に示すように、CPU1は、先ず、音声入出力部6のマイクより入力された音声入力信号から音声認識装置100の周囲のノイズ音量(N音量(Npow))を算出する(ステップS20)。
【0042】
次いで、CPU1は、ステップS20で算出されたノイズ音量(Npow)が所定の閾値よりも大きいか否かを判定する(ステップS21)。
【0043】
ステップS21において、ノイズ音量(Npow)が所定の閾値よりも大きいと判定された場合(ステップS21;YES)、CPU1は、後述する第1の音声認識処理(ステップS22)を実行し、音声認識処理を終了する。
一方、ステップS21において、ノイズ音量(Npow)が所定の閾値よりも大きくないと判定された場合(ステップS21;NO)、CPU1は、第2の音声認識処理を実行し、音声認識処理を終了する。なお、第2の音声認識処理は、実施形態1で説明した音声認識処理と同様であるので説明を省略する。
【0044】
<第1の音声認識処理>
図5は、第1の音声認識処理を示すフローチャートである。
図5に示すように、CPU1は、先ず、発話状態を初期化する(ステップS30)。具体的には、CPU1は、発話中であるか否かを示す発話中フラグを「0」の状態にセットする。
【0045】
次いで、CPU1は、撮影部5により生成された撮影画像(最初のフレーム画像)を用いて、音声認識の対象となるユーザ(発話者)の顔検出処理を行う(ステップS31)。
【0046】
次いで、CPU1は、記憶部3に記憶されている顔データベースを用いて、ステップS31で検出された顔について個人識別処理(ステップS32)を行う。なお、個人識別処理は公知の技術を使用することで実現可能であるため、詳細な説明は省略する。
【0047】
次いで、CPU1は、個人識別処理(ステップS32)により識別された個人IDに対応するずれ調整量が個人ずれ調整量データベースに登録されているか否かを判定する(ステップS33)。
【0048】
ステップS33において、個人IDに対応するずれ調整量が個人ずれ調整量データベースに登録されていないと判定された場合(ステップS33;NO)、CPU1は、デフォルトのずれ調整量をセットする(ステップS34)。具体的には、CPU1は、発話開始時刻STのずれを調整する際のずれ調整量(SRT_PERSONAL=デフォルト値)、及び、発話終了時刻ETのずれを調整する際のずれ調整量(ERT_PERSONAL=デフォルト値)をセットする。
一方、ステップS33において、個人IDに対応するずれ調整量が個人ずれ調整量データベースに登録されていると判定された場合(ステップS33;YES)、CPU1は、個人用のずれ調整量をセットする(ステップS35)。具体的には、CPU1は、発話開始時刻STのずれを調整する際のずれ調整量(SRT_PERSONAL=個人用の値)、及び、発話終了時刻ETのずれを調整する際のずれ調整量(ERT_PERSONAL=個人用の値)をセットする。
【0049】
次いで、CPU1は、ステップS31で検出された顔からこの顔のパーツ(例えば、上唇と下唇)を撮影画像上から検出する(ステップS36)。
【0050】
次いで、CPU1は、現在の時刻tを取得し(ステップS37)、ステップS36で検出された撮影画像(口唇画像)上のパーツ(例えば、上唇と下唇)の座標位置から口の開閉状態を判定する(ステップS38)。
【0051】
ステップS38において、口が開いていると判定された場合(ステップS38;YES)、CPU1は、発話中であるか否かを示す発話中フラグが「0」の状態であるか否か(発話中フラグがオフの状態であるか否か)を判定する(ステップS39)。
【0052】
ステップS39において、発話中フラグが「0」の状態である、すなわち発話中でないと判定された場合(ステップS39;YES)、CPU1は、発話開始のタイミングであると認識し、発話開始時刻ST(=t−SRT_PERSONAL)の調整を行う(ステップS40)。ここで、[t]とは、ステップS37で取得された現在の時刻である。[SRT_PERSONAL]とは、ステップS34又はステップS35でセットされた値である。
【0053】
次いで、CPU1は、発話中フラグを「1」の状態(オンの状態)に更新する(ステップS41)。そして、CPU1は、次の時刻の撮影画像(フレーム画像)を取得し(ステップS42)、処理をステップS31へ戻す。
【0054】
また、ステップS39において、発話中フラグが「0」の状態でない、すなわち発話中であると判定された場合(ステップS39;NO)、CPU1は、ステップS40及びステップS41をスキップして、ステップS42へ移行する。
【0055】
また、ステップS38において、口が開いていないと判定された場合(ステップS38;NO)、CPU1は、発話中フラグが「1」の状態であるか否か(発話中フラグがオンの状態であるか否か)を判定する(ステップS43)。
【0056】
ステップS43において、発話中フラグが「1」の状態でない、すなわち発話中でないと判定された場合(ステップS43;NO)、ステップS42へ移行する。
【0057】
また、ステップS43において、発話中フラグが「1」の状態である、すなわち発話中であると判定された場合(ステップS43;YES)、CPU1は、発話終了のタイミングであると認識し、発話終了時刻ET(=t−ERT_PERSONAL)の調整を行う(ステップS44)。ここで、[t]とは、ステップS37で取得された現在の時刻である。[ERT_PERSONAL]とは、ステップS34又はステップS35でセットされた値である。
【0058】
次いで、CPU1は、音声入出力部6により入力された音声のうち、ステップS40で調整された発話開始時刻STからステップS44で調整された発話終了時刻ETまでの区間(音声認識区間)の音声に対して音声認識を行い(ステップS45)、第1の音声認識処理を終了する。
【0059】
<ずれ調整量算出処理>
図6は、ずれ調整量算出処理を示すフローチャートである。このずれ調整量算出処理は、上述の第1の音声認識処理の前に行われる処理であり、操作部4を介して、ずれ調整量算出処理の実行指示が入力されたことをトリガとして実行される。
【0060】
図6に示すように、CPU1は、先ず、静かな環境か否かを判定する(ステップS50)。具体的には、CPU1は、音声入出力部6のマイクより入力された音声入力信号から音声認識装置100の周囲のノイズ音量(N音量(Npow))を算出する。そして、このノイズ音量が所定の閾値以下となる状態が一定時間継続された場合、静かな環境であると判定する。なお、静かな環境か否かの判定方法は、上述した方法に限定されるものではない。
【0061】
ステップS50において、静かな環境ではないと判定された場合(ステップS50;NO)、CPU1は、静かな環境であると判定されるまで、ステップS50の処理を繰り返し行う。
一方、ステップS50において、静かな環境であると判定された場合(ステップS50;YES)、CPU1は、ループ回数(i)に初期値(1)を設定する(ステップS51)。
【0062】
次いで、CPU1は、音声パワーを用いて発話開始時刻(ST_Vi)と発話終了時刻(ET_Vi)を推定する(ステップS52)。具体的には、CPU1は、音声入出力部6のマイクより入力された音声入力信号から発話者の音声パワーを算出し、例えば、この音声パワーが所定の閾値以上となったタイミングを発話開始時刻(ST_Vi)とし、その後、この音声パワーが所定の閾値以下になったタイミングを発話終了時刻(ET_Vi)と推定する。ここで、音声入出力部6のマイクより入力される音声入力信号は、後述のステップS53の処理で用いられる口唇画像の撮影の際に音声入出力部6のマイクより入力される音声入力信号であり、当該口唇画像と同期がとられている。なお、発話開始時刻(ST_Vi)と発話終了時刻(ET_Vi)の推定方法は、上述した方法に限定されるものではない。
【0063】
次いで、CPU1は、口唇画像を用いて発話開始時刻(STi)と発話終了時刻(ETi)を推定する(ステップS53)。具体的には、CPU1は、上述の第1の音声認識処理のステップS38と同様にして、口唇画像上のパーツ(例えば、上唇と下唇)の座標位置から口の開閉状態を判定し、口が開いたと判定されたタイミングを発話開始時刻(STi)とし、その後、口が閉じたと判定されたタイミングを発話終了時刻(ETi)と推定する。
【0064】
次いで、CPU1は、ループ回数(i)を1インクリメントし(ステップS54)、ループ回数(i)が所定のループ回数(例えば、10回)に到達したか否かを判定する(ステップS55)。
【0065】
ステップS55において、ループ回数(i)が所定のループ回数に到達していないと判定された場合(ステップS55;NO)、CPU1は、処理をステップS52に戻し、それ以降の処理を繰り返し行う。
一方、ステップS55において、ループ回数(i)が所定のループ回数に到達したと判定された場合(ステップS55;YES)、CPU1は、下記の算出式に基づいて、ずれ調整量を算出する(ステップS56)。ここで、CPU1は、算出手段として機能したこととなる。
ST_PERSONAL=Σ(STi−ST_Vi)/i
ET_PERSONAL=Σ(ETi−ET_Vi)/i
【0066】
そして、CPU1は、ステップS56で算出されたずれ調整量を、発話者の個人IDと対応付けて、記憶部3の個人ずれ調整量データベースに登録し、ずれ調整量算出処理を終了する。
【0067】
以上のように、本実施形態の音声認識装置100は、ユーザ(発話者)の口の動きを認識し、当該ユーザの音声を検出し、ユーザの口の動きと当該ユーザの音声とに基づいて音声認識タイミングを制御しているので、音声認識の精度に与える自装置の周囲の音声の影響を低減することができる。
【0068】
また、本実施形態の音声認識装置100は、ユーザの口唇画像から口の動きとして当該ユーザの発話開始のタイミングと発話終了のタイミングとを認識するので、実際の発話タイミングとのズレを低減することができ、音声認識の精度に与える自装置の周囲の音声の影響をより低減することができる。
【0069】
また、本実施形態の音声認識装置100は、検出されたユーザの音声に基づいて、当該ユーザの発話開始のタイミングに関するずれ、及び、当該ユーザの発話終了のタイミングに関するずれを調整する個人用のずれ調整量(SRT_PERSONAL、ERT_PERSONAL)を算出し、当該個人用のずれ調整量を加味した発話開始のタイミングを音声認識の開始タイミングとするとともに、当該個人用のずれ調整量を加味した発話終了のタイミングを音声認識の終了タイミングとするので、実際の発話タイミングとのズレをより低減することができ、音声認識の精度に与える自装置の周囲の音声の影響をより一層低減することができる。
【0070】
また、本実施形態の音声認識装置100は、自装置の周囲の音声を更に検出し、自装置の周囲の音声の大きさが所定の閾値以上である場合、上記の個人用のずれ調整量を加味した発話開始のタイミングを音声認識の開始タイミングとするとともに、当該個人用のずれ調整量を加味した発話終了のタイミングを音声認識の終了タイミングとするので、音声認識の精度に与える自装置の周囲の音声の影響を効果的に低減することができる。
【0071】
〔実施形態2の変形例〕
以下、本発明の実施形態2の変形例について説明する。
この変形例では、上記実施形態2で説明した音声認識処理のうち、第1の音声認識処理(ステップS22)の処理内容が異なる点、上記実施形態2で説明したずれ調整量算出処理の代わりに識別器生成処理が行われる点、また、上記実施形態2で説明した個人ずれ調整量データベースの代わりに識別器データベースと機械学習用データセットが記憶部3に記憶されている点の他は、実施形態2で説明したものと同様であるので説明を省略し、以下変形例の動作について説明する。
【0072】
<第1の音声認識処理>
図7は、本変形例の第1の音声認識処理を示すフローチャートである。
図7に示すように、CPU1は、先ず、発話状態を初期化する(ステップS60)。具体的には、CPU1は、発話中であるか否かを示す発話中フラグを「0」の状態にセットする。
【0073】
次いで、CPU1は、撮影部5により生成された撮影画像(最初のフレーム画像)を用いて、音声認識の対象となるユーザ(発話者)の顔検出処理を行う(ステップS61)。
【0074】
次いで、CPU1は、記憶部3に記憶されている顔データベースを用いて、ステップS61で検出された顔について個人識別処理(ステップS62)を行う。
【0075】
次いで、CPU1は、個人識別処理(ステップS62)により識別された個人IDに対応する発話判定識別器が識別器データベースに登録されているか否かを判定する(ステップS63)。
【0076】
ステップS63において、個人IDに対応する発話判定識別器が識別器データベースに登録されていないと判定された場合(ステップS63;NO)、CPU1は、デフォルトの発話判定識別器をセットする(ステップS64)。
一方、ステップS63において、個人IDに対応する発話判定識別器が識別器データベースに登録されていると判定された場合(ステップS63;YES)、CPU1は、個人用の発話判定識別器をセットする(ステップS65)。
【0077】
次いで、CPU1は、現在の時刻tを取得し(ステップS66)、ステップS64又はステップS65でセットされた発話判定識別器を用いて、ステップS61の顔検出処理の際に取得された口唇画像(フレーム画像)が発話中の画像か非発話中の画像かを判定する(ステップS67)。ここで、CPU1は、判別手段として機能したこととなる。
【0078】
ステップS67において、発話中の画像であると判定された場合(ステップS67;YES)、CPU1は、発話中であるか否かを示す発話中フラグが「0」の状態であるか否か(発話中フラグがオフの状態であるか否か)を判定する(ステップS68)。
【0079】
ステップS68において、発話中フラグが「0」の状態である、すなわち発話中でないと判定された場合(ステップS68;YES)、CPU1は、発話開始のタイミングであると認識し、発話開始時刻ST(=t)の調整を行う(ステップS69)。ここで、[t]とは、ステップS66で取得された現在の時刻である。
【0080】
次いで、CPU1は、発話中フラグを「1」の状態(オンの状態)に更新する(ステップS70)。そして、CPU1は、次の時刻の撮影画像(フレーム画像)を取得し(ステップS71)、処理をステップS61へ戻す。
【0081】
また、ステップS68において、発話中フラグが「0」の状態でない、すなわち発話中であると判定された場合(ステップS68;NO)、CPU1は、ステップS69及びステップS70をスキップして、ステップS71へ移行する。
【0082】
また、ステップS67において、非発話中の画像であると判定された場合(ステップS67;NO)、CPU1は、発話中フラグが「1」の状態であるか否か(発話中フラグがオンの状態であるか否か)を判定する(ステップS72)。
【0083】
ステップS72において、発話中フラグが「1」の状態でない、すなわち発話中でないと判定された場合(ステップS72;NO)、ステップS71へ移行する。
【0084】
また、ステップS72において、発話中フラグが「1」の状態である、すなわち発話中であると判定された場合(ステップS72;YES)、CPU1は、発話終了のタイミングであると認識し、発話終了時刻ET(=t)の調整を行う(ステップS73)。ここで、[t]とは、ステップS66で取得された現在の時刻である。
【0085】
次いで、CPU1は、音声入出力部6により入力された音声のうち、ステップS69で調整された発話開始時刻STからステップS73で調整された発話終了時刻ETまでの区間(音声認識区間)の音声に対して音声認識を行い(ステップS74)、第1の音声認識処理を終了する。
【0086】
<識別器生成処理>
図8は、識別器生成処理を示すフローチャートである。この識別器生成処理は、上述の第1の音声認識処理の前に行われる処理であり、操作部4を介して、識別器生成処理の実行指示が入力されたことをトリガとして実行される。
【0087】
図8に示すように、CPU1は、先ず、上述の実施形態2と同様、静かな環境か否かを判定する(ステップS80)。
【0088】
ステップS80において、静かな環境ではないと判定された場合(ステップS80;NO)、CPU1は、静かな環境であると判定されるまで、ステップS80の処理を繰り返し行う。
一方、ステップS80において、静かな環境であると判定された場合(ステップS80;YES)、CPU1は、ループ回数(i)に初期値(1)を設定する(ステップS81)。
【0089】
次いで、CPU1は、上述の実施形態2と同様、音声パワーを用いて発話開始時刻(ST_Vi)と発話終了時刻(ET_Vi)を推定する(ステップS82)。
【0090】
次いで、CPU1は、ステップS82で推定された発話開始時刻(ST_Vi)と発話終了時刻(ET_Vi)を用いて、各フレーム画像(口唇画像)に対して、発話中か非発話中のラベリングを行う(ステップS83)。ここで、ラベリングが行われた各フレーム画像は、記憶部3の機械学習用データセットへ登録されることとなる。
【0091】
次いで、CPU1は、ループ回数(i)を1インクリメントし(ステップS84)、ループ回数(i)が所定のループ回数(例えば、10回)に到達したか否かを判定する(ステップS85)。
【0092】
ステップS85において、ループ回数(i)が所定のループ回数に到達していないと判定された場合(ステップS85;NO)、CPU1は、処理をステップS82に戻し、それ以降の処理を繰り返し行う。
一方、ステップS85において、ループ回数(i)が所定のループ回数に到達したと判定された場合(ステップS85;YES)、CPU1は、機械学習用データセットに登録された各フレーム画像を用いて機械学習を行い、発話判定識別器を生成する(ステップS86)。ここで、CPU1は、生成手段として機能したこととなる。
【0093】
そして、CPU1は、ステップS86で生成された発話判定識別器を、発話者の個人IDと対応付けて、記憶部3の識別器データベースに登録し、識別器生成処理を終了する。
【0094】
以上のように、本変形例の音声認識装置100は、検出されたユーザの音声と同期がとられている当該ユーザの口唇画像に対して発話中又は非発話中のラベリングを行うことにより、個人用の発話判定識別器を予め生成し、当該個人用の発話判定識別器を用いて、当該ユーザの口唇画像が発話中の画像であるか非発話中の画像であるかを判別し、判別の結果に基づいて、ユーザの口唇画像から口の動きとして当該ユーザの発話開始のタイミングと発話終了のタイミングを認識するので、実際の発話タイミングとのズレを低減することができ、音声認識の精度に与える自装置の周囲の音声の影響をより低減することができる。
【0095】
また、本変形例の音声認識装置100は、発話中又は非発話中のラベリングが行われた複数の口唇画像を機械学習させることにより個人用の発話判定識別器を生成するので、ユーザの発話開始のタイミングと発話終了のタイミングを認識する際の認識精度を向上させることができる。
【0096】
また、本変形例の音声認識装置100は、自装置の周囲の音声を更に検出し、自装置の周囲の音声の大きさが所定の閾値以上である場合、上述の発話判定識別器を用いて、ユーザの口唇画像が発話中の画像であるか非発話中の画像であるかを判別し、判別の結果に基づいて、当該ユーザの口唇画像から口の動きとして当該ユーザの発話開始のタイミングと発話終了のタイミングを認識するので、実際の発話タイミングとのズレを低減することができ、音声認識の精度に与える自装置の周囲の音声の影響を効果的に低減することができる。
【0097】
以上、本発明の実施形態について説明したが、本発明は、かかる実施形態に限定されず、その要旨を逸脱しない範囲で、種々変形が可能であることは言うまでもない。
【0098】
例えば、音声認識処理のステップS10において、ノイズ音量(Npow)を算出するようにしたが、例えば、音声認識装置100の周囲のSN比を算出するようにしてもよい。この場合、算出されたSN比に応じて、調整係数(rtCoeff)を更新する。また、ノイズ音量の算出方法として、例えば、音源定位の一手法であるMUSIC(MUltiple Signal Classification)法により導出されるMUSICパワーからノイズ音量を算出するようにしても良い。
【0099】
また、発話開始時刻STや発話終了時刻ETの調整を行う際のズレ調整量は、所定の計算式(
図2のステップS6及びステップS16参照)に基づき算出しているが、例えば、予め、音声認識装置100の周辺音声の大小(多段階でもよい)やSN比の大小(多段階でもよい)に対応するズレ調整量のテーブルを用意しておき、実際に計測された周辺音声やSN比の大きさに応じたズレ調整量をこのテーブルから取得するようにしてもよい。
【0100】
また、上記音声認識処理では、発話者の口唇画像から発話開始のタイミングと発話終了のタイミングの両方のタイミングを認識するようにしたが、例えば、これらのタイミングのうちのいずれか一方のタイミングのみを発話者の口唇画像から認識するようにしてもよく、かかる場合、他方のタイミングについては公知の技術により認識するようにする。
【0101】
また、上記音声認識処理では、発話開始時刻STと発話終了時刻ETの両方の時刻を周辺音声の大きさに対応した所定の計算式に基づき調整するようにしたが、例えば、これらの時刻のうちのいずれか一方の時刻のみを周辺音声の大きさに対応した所定の計算式に基づき調整するようにしてもよく、かかる場合、他方の時刻については公知の技術により調整するようにする。
【0102】
また、音声認識処理のステップS17において、発話終了時刻ETを特定した後に音声認識を行っているが、発話開始時刻STを特定した時点で音声認識を行うようにしても良い。この場合、音声認識を開始した後、発話終了時刻ETを特定したところで音声認識を終了するようにする。
【0103】
また、音声認識処理のステップS2で検出されたパーツ(例えば、上唇と下唇)の座標位置から口の開閉状態を判定し、発話開始のタイミングと発話終了のタイミングを認識するようにしたが、例えば、操作部4の所定のボタンをユーザ(発話者)が押圧操作したタイミングを発話開始のタイミング、当該押圧操作を解除したタイミングを発話終了のタイミングとして認識するようにしても良い。また、上唇と下唇に限らず、顔全体の形状や、ジェスチャ、呼気、筋電位等の変化に基づいて発話開始のタイミングと発話終了のタイミングを認識するようにしても良い。また、音声認識装置100側から、例えば、ランプを点灯させる等によって合図をおくっている所定の期間を音声認識区間(発話開始のタイミングから発話終了のタイミングまでの区間)として認識するようにしても良い。また、所定の閾値を越える音声信号の振幅について零交差数をカウントし、カウント数が1秒間に指定した数以上になったとき、このタイミングを発話開始のタイミングとし、零交差数が指定数以下になったとき、このタイミングを発話終了のタイミングとして認識するようにしても良い。
【0104】
また、上記実施形態1では、音声認識処理(
図2参照)のステップS4において、口の開閉を検出したか否かを判定するようにしたが、例えば、自装置の周囲の音声(ノイズ)の大きさが所定の閾値より大きい場合は、ステップS4の判定処理を実行する一方で、自装置の周囲の音声(ノイズ)の大きさが所定の閾値以下の場合は、ステップS4の判定処理を実行せず、すなわち発話開始のタイミング及び発話終了のタイミングを認識することなく、音声認識処理を実行するようにしてもよい。
【0105】
また、上記実施形態1では、音声認識処理(
図2参照)のステップS10において、ノイズ音量を算出するようにしたが、例えば、ノイズが人の声によるものか人の声以外の音によるものかを判別するノイズ判別手段を備え、ノイズが人の声によるものであると判別された場合、当該人の声によるノイズ音量を算出する一方で、ノイズが人の声以外の音によるものであると判別された場合、ノイズ音量を算出せず、ステップS11〜ステップS15の処理をスキップするようにしてもよい。なお、ノイズ判別手段による上記の判別は、ノイズの周波数に基づいて判別するものとする。
【0106】
また、上記実施形態2及び当該実施形態2の変形例では、自装置の周囲の音声(ノイズ)の大きさに応じて、第1の音声認識処理を行うか、第2の音声認識処理を行うかを振り分けるようにしたが、自装置の周囲の音声の大きさによらず、常に第1の音声認識処理を行うようにしてもよい。
【0107】
以上、本発明の実施形態を説明したが、本発明の範囲は、上述の実施の形態に限定するものではなく、特許請求の範囲に記載された発明の範囲をその均等の範囲を含む。
以下に、この出願の願書に最初に添付した特許請求の範囲に記載した発明を付記する。付記に記載した請求項の項番は、この出願の願書に最初に添付した特許請求の範囲の通りである。
【0108】
〔付記〕
<請求項1>
発話者の口の動きを認識する認識手段と、
外部音を検出する検出手段と、
前記認識手段により認識された前記発話者の口の動きと前記検出手段により検出された外部音とに基づいて音声認識タイミングを制御する制御手段と、
を備えることを特徴とする音声認識装置。
<請求項2>
前記検出手段は、前記外部音として自装置の周囲の音声を検出し、
前記制御手段は、前記認識手段により認識された前記発話者の口の動きと前記検出手段により検出された自装置の周囲の音声とに基づいて音声認識タイミングを制御する、
ことを特徴とする請求項1に記載の音声認識装置。
<請求項3>
前記認識手段は、前記発話者の口唇画像から前記口の動きとして当該発話者の発話開始のタイミングと発話終了のタイミングとのうちの少なくともいずれか一方を認識する、
ことを特徴とする請求項2に記載の音声認識装置。
<請求項4>
前記検出手段により検出された自装置の周囲の音声に基づいて前記発話開始のタイミングと前記発話終了のタイミングとのうちの少なくともいずれか一方を調整する調整手段を備え、
前記制御手段は、前記調整手段により調整された前記発話開始のタイミングを音声認識の開始タイミングとし、前記調整手段により調整された前記発話終了のタイミングを音声認識の終了タイミングとする、
ことを特徴とする請求項3に記載の音声認識装置。
<請求項5>
前記検出手段は、自装置の周囲の音声の大きさを検出し、
前記制御手段は、前記検出手段により検出された自装置の周囲の音声の大きさに基づいて音声認識タイミングを制御する、
ことを特徴とする請求項4に記載の音声認識装置。
<請求項6>
前記検出手段は、自装置の周囲のSN比を検出し、
前記制御手段は、前記検出手段により検出された自装置の周囲のSN比に基づいて音声認識タイミングを制御する、
ことを特徴とする請求項2から4のいずれか1項に記載の音声認識装置。
<請求項7>
前記調整手段は、前記検出手段により検出された自装置の周囲の音声の大きさが所定の閾値以上である場合、当該音声の大きさが所定の閾値よりも小さい場合に比べて、前記発話開始のタイミング及び前記発話終了のタイミングの調整量を小さくする、
ことを特徴とする請求項5に記載の音声認識装置。
<請求項8>
前記検出手段は、前記外部音として前記発話者の音声を検出し、
前記制御手段は、前記認識手段により認識された前記発話者の口の動きと前記検出手段により検出された当該発話者の音声とに基づいて音声認識タイミングを制御する、
ことを特徴とする請求項1に記載の音声認識装置。
<請求項9>
前記認識手段は、前記発話者の口唇画像から前記口の動きとして当該発話者の発話開始のタイミングと発話終了のタイミングとのうちの少なくともいずれか一方を認識する、
ことを特徴とする請求項8に記載の音声認識装置。
<請求項10>
前記検出手段により検出された前記発話者の音声に基づいて、当該発話者の前記発話開始のタイミングに関するずれ、及び/又は、当該発話者の前記発話終了のタイミングに関するずれを調整するずれ調整量を算出する算出手段を備え、
前記制御手段は、前記算出手段により算出された前記ずれ調整量を加味した前記発話開始のタイミングを音声認識の開始タイミングとし、当該ずれ調整量を加味した前記発話終了のタイミングを音声認識の終了タイミングとする、
ことを特徴とする請求項9に記載の音声認識装置。
<請求項11>
前記検出手段は、前記外部音として自装置の周囲の音声を更に検出し、
前記制御手段は、前記検出手段によって検出された自装置の周囲の音声の大きさが所定の閾値以上である場合、前記算出手段により算出された前記ずれ調整量を加味した前記発話開始のタイミングを音声認識の開始タイミングとし、当該ずれ調整量を加味した前記発話終了のタイミングを音声認識の終了タイミングとする、
ことを特徴とする請求項10に記載の音声認識装置。
<請求項12>
前記検出手段によって検出された前記発話者の音声と同期がとられている当該発話者の口唇画像に対して発話中又は非発話中のラベリングを行うことにより、当該発話者に対応した発話判定識別器を予め生成する生成手段と、
前記生成手段によって生成された前記発話判定識別器を用いて、当該発話判定識別器に対応する発話者の口唇画像が発話中の画像であるか非発話中の画像であるかを判別する判別手段と、を備え、
前記認識手段は、前記判別手段による判別の結果に基づいて、前記発話者の口唇画像から前記口の動きとして当該発話者の発話開始のタイミングと発話終了のタイミングとのうちの少なくともいずれか一方を認識する、
ことを特徴とする請求項8に記載の音声認識装置。
<請求項13>
前記制御手段は、前記認識手段によって認識された前記発話開始のタイミングを音声認識の開始タイミングとし、前記発話終了のタイミングを音声認識の終了タイミングとして、音声認識タイミングを制御する、
ことを特徴とする請求項12に記載の音声認識装置。
<請求項14>
前記生成手段は、発話中又は非発話中のラベリングが行われた複数の前記口唇画像を機械学習させることにより前記発話判定識別器を生成する、
ことを特徴とする請求項13に記載の音声認識装置。
<請求項15>
前記検出手段は、自装置の周囲の音声を更に検出し、
前記制御手段は、前記検出手段によって検出された自装置の周囲の音声の大きさが所定の閾値以上である場合、前記認識手段によって認識された前記発話開始のタイミングを音声認識の開始タイミングとし、前記発話終了のタイミングを音声認識の終了タイミングとして、音声認識タイミングを制御する、
ことを特徴とする請求項13又は14に記載の音声認識装置。
<請求項16>
前記制御手段は、前記音声認識タイミングとして音声認識区間を制御する、
ことを特徴とする請求項1から15のいずれか1項に記載の音声認識装置。
<請求項17>
前記検出手段は、前記発話者の音声の周波数範囲に含まれる音声を対象として、自装置の周囲の音声を検出する、
ことを特徴とする請求項2〜7、11〜15のいずれか一項に記載の音声認識装置。
<請求項18>
前記自装置の周囲の音声には、前記発話者以外の人の声と、人の声以外の音が含まれることを特徴とする請求項17に記載の音声認識装置。
<請求項19>
請求項1から16のいずれか1項に記載の前記音声認識装置を搭載したロボット。
<請求項20>
発話者の口の動きを認識する認識ステップと、
外部音を検出する検出ステップと、
前記認識ステップにより認識された前記発話者の口の動きと前記検出ステップにより検出された外部音とに基づいて音声認識タイミングを制御する制御ステップと、
を含むことを特徴とする音声認識方法。
<請求項21>
コンピュータを、
発話者の口の動きを認識する認識手段、
外部音を検出する検出手段、
前記認識手段により認識された前記発話者の口の動きと前記検出手段により検出された外部音とに基づいて音声認識タイミングを制御する制御手段、
として機能させることを特徴とするプログラム。