説明

発話区間検出装置及びプログラム

【課題】非定常な雑音環境下でも精度良く発話区間を検出できるようにする。
【解決手段】発話区間検出装置270は、音声信号のシーケンス中で発話開始位置である可能性の高いフレームを検出するクラスタリング開始位置判定部456と、クラスタリング開始位置が検出された後、その位置のフレームよりプレロール時間だけ前のフレームから最新に受信したフレームまでを音声パワーの値に基づき10ミリ秒ごとにクラスタリングする処理を開始して各フレームのクラスタレベルを算出するクラスタリング処理部490と、各フレームについて算出されたクラスタレベルのシーケンスに基づいて、50ミリ秒ごとに発話開始位置及び発話終了位置を検出する処理を繰返し行なう発話状態判定部492及び発話開始・終了判定部494とを含む。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は音声認識技術に関し、特に、非定常な雑音下での発話区間の検出技術の改良に関する。
【背景技術】
【0002】
近年、機械と人間との間のインターフェイスとして、音声認識が用いられる機会が多くなっている。例えばいわゆるスマートフォンを用いて何か情報を引き出したり、情報を検索したりしようとする場合には、ハードウェアにせよ、ソフトウェアにせよ、キーボードを用いて必要なコマンドを入力するよりも、音声を用いてコマンドを入力する方がユーザにとっては格段に楽である。さらに、単なる音声認識を超えて、音声を用いた人間と機械との間のインタラクションを行なう機会も増えると思われる。そうした場合にも、音声認識が非常に重要な役割を果たすであろうことは想像にかたくない。
【0003】
しかし、そのように音声認識が用いられる場面が増えると、音声認識の信頼性を高めるために解決すべき課題が今までにもまして重要となる。例えば、非定常な雑音下での音声認識の精度の向上という問題がある。雑音が非常に小さいか、定常的な雑音しかない環境下ではかなり高い精度を示す音声認識システムであっても、非定常な雑音が発生する環境下では、精度が大きく低下することが知られている。したがって、非定常な雑音が発生する環境下での音声認識の精度を高くできる技術が必要である。
【0004】
この点で特に問題となるのは、発話区間の検出である。発話区間が正しく検出できなければ、当然に音声認識の精度も低下する。特に非定常な雑音の環境下では、発話の開始及び終了位置を検出するのが難しく、音声認識の精度を高めることがむずかしかった。
【0005】
こうした問題を解決するための1つの提案が、特許文献1でなされている。特許文献1に記載の技術では、音声信号の各フレームの音声パワーに基づいてフレームを2つのクラスタに分け、エネルギの低い方のクラスタの中心の音声パワーを環境雑音の推定値の初期値とする。この後は、この推定値の初期値と、発話の音声エネルギ値とに基づいて、発話区間を検出するためのエネルギ値のしきい値を逐次算出する(特許文献1の段落0014,0016)。
【0006】
上のようにクラスタを分類することにより、エネルギ値の小さなクラスタには環境雑音のみを含むフレームが属することになると思われる。このような方法により発話区間を検出するための音声パワーのしきい値を実際の音声信号の音声パワーに追従して変化させることにより、発話区間の開始位置及び終了位置が正確に推定できるとされている(特許文献1の段落0015、0017)。
【先行技術文献】
【特許文献】
【0007】
【特許文献1】特開2005−031632号公報
【発明の概要】
【発明が解決しようとする課題】
【0008】
上記した特許文献1に記載の技術により、それ以前よりも発話区間の検出が正確になったと思われる。しかしこの技術にもさらに改良すべき余地がある。それは、例えば音声パワーの大きさの変化、及びその変化のタイミングにより発話区間検出のためのしきい値が決定されてしまうという問題である。こうした手法では、非定常な雑音による音声パワーが入力された場合、その時点では発話区間検出のためのしきい値が低い値であることが多く、その結果、非定常な雑音を発話の開始位置として誤検出しやすいという問題がある。さらに、高い音声パワーが入力された後には逆にしきい値が高くなるために、その後の通常レベルの音声が検知しにくいという問題もある。
【0009】
なお、発話区間の誤検出を防ぐために、検出された発話区間の一部を棄却するという後処理がされることがある。この場合、従来は、雑音区間と実発話区間との音声パワーの差を見て発話区間を棄却するか否かを判定している。しかしそうした判定では、話者、発話環境、又は発話内容によって、音声パワーの値が大きく異なるという問題に対処できない。このため、話者等の条件に依存しないしきい値で精度良く発話区間の検出をする技術が望まれている。
【0010】
それ故に本発明の目的は、非定常な雑音環境下でも精度良く発話区間を検出することができる発話区間検出装置及びプログラムを提供することである。
【課題を解決するための手段】
【0011】
本発明の第1の局面に係る発話区間検出装置は、音声信号のフレームのシーケンスを受け、当該シーケンス内の発話区間を検出するための発話区間検出装置である。この装置は、受信したシーケンスの中で発話開始位置である可能性の高いフレームを検出し、検出信号を出力する検出手段と、検出手段により出力された検出信号に応答して、フレームのシーケンスのうち、検出信号に対応するフレームより前の所定位置までのフレームから、最新に受信したフレームまでを、各フレームの音声パワーの値に基づいて繰返しクラスタリングする処理を開始し、繰返しごとに、音声パワーの値の大きさに応じたクラスタレベルを各フレームについて算出するためのクラスタリング手段と、クラスタリング手段によるクラスタリングの繰返しと所定の関係を持ったタイミングで、クラスタリング手段により各フレームについて算出されたクラスタレベルのシーケンスに基づいて発話開始位置及び発話終了位置を検出する処理を繰返し行なう、クラスタレベルによる発話区間検出手段とを含む。
【0012】
検出信号が発話開始位置である可能性の高いフレームを検出して検出信号を出力する。この検出信号に応答して、クラスタリング手段が、フレームのシーケンス中で検出信号に対応するフレームより前の所定位置(例えばフレームシーケンスの先頭)から、最新のフレームまでをその音声パワーに基づいて繰返しクラスタリングする処理を開始する。このクラスタリングの結果は、通常、新たなフレームが受信されてクラスタリングが実行されるたびに変化する。例えば音声パワーが大きなフレームが受信されると、それ以前に受信されていた音声パワーの小さなフレームは、クラスタレベルがより低いクラスタに分類される可能性がある。発話区間検出装置は、クラスタリング手段によるクラスタリングの繰返しと所定の関係を持ったタイミング(例えばクラスタリングが5回行われたタイミング)で、各フレームについて算出されたクラスタレベルのシーケンスに基づいて発話開始位置及び終了位置を検出する。
【0013】
クラスタレベルに基づいて発話区間を検出するため、非定常な雑音の音声パワーが実発話区間の音声パワーよりも小さければ、それらはクラスタレベルの小さなクラスタに分類されることになる。その結果、雑音区間を実発話区間と区別できる可能性が高くなる。クラスタレベルという明確な値に基づいているため発話区間と雑音区間との判定は容易であり、かつクラスタレベルのシーケンスに基づいて発話区間が検出されるため、音声パワーの変化にそれほど依存しないで発話区間の検出を高精度で行なえる。その結果、非定常な雑音環境下でも精度良く発話区間を検出することができる発話区間検出装置を提供できる。
【0014】
好ましくは、検出手段は、所定個数(例えば1個)のフレームを新たに受信するごとに、受信したシーケンスのうち、最新に受信したフレームから遡って所定の時間だけ前までの時間窓内のフレームの音声パワーの分散を算出するための分散算出手段と、分散算出手段により算出された分散が予め定められたしきい値以上となったことに応答して、検出信号を出力するための検出信号出力手段とを含む。
【0015】
このように音声パワーの分散を基準としてクラスタリングの開始タイミングを定めることにより、クラスタリングを開始すべき位置を精度良く決定することができ、計算量の増加を防ぎながら発話区間の検出を行なうことができる。
【0016】
より好ましくは、発話区間検出装置は、検出信号に応答して、検出手段の動作を停止させるための手段をさらに含む。
【0017】
発話区間検出手段は、クラスタリング手段によるクラスタリングの繰返しが所定回数だけ行われるごとに、当該所定回数の間に受信されたフレームの各々に対し、クラスタリング手段により算出されたクラスタレベルを所定のしきい値と比較することにより、各フレームが発話中フレーム及び非発話中フレームのいずれであるかを判定するための発話中フレーム判定手段と、発話中フレーム判定手段により判定された発話中フレーム及び非発話中フレームのシーケンスに基づいて、発話開始位置及び発話終了位置を判定するための発話開始位置及び発話終了位置判定手段とを含んでもよい。
【0018】
好ましくは、発話中フレームは、クラスタレベルがしきい値以上であるフレームであり、非発話中フレームは、クラスタレベルがしきい値未満であるフレームである。
【0019】
発話開始位置及び発話終了位置判定手段は、発話の状態を記憶するための発話状態記憶手段を含む。発話区間検出装置による発話区間の検出の開始時に発話状態記憶手段に記憶される発話の状態は非発話中状態である。発話の状態は、少なくとも、発話のない状態である非発話中状態と、発話中である発話中状態とを含む。発話中フレーム判定手段は、発話中状態において、各フレームのクラスタレベルが第1のしきい値以上か否かに基づいて各フレームを発話中フレームと非発話中フレームとに分類する第1の分類手段と、非発話中状態において、各フレームのクラスタレベルが第1のしきい値以下である第2のしきい値以上か否かに基づいて各フレームを発話中フレームと非発話中フレームとに分類する第2の分類手段とを含む。
【0020】
より好ましくは、発話開始位置及び発話終了位置判定手段は、さらに、発話状態記憶手段に記憶された発話の状態が非発話中状態であるときに、発話中フレーム判定手段により出力される連続する発話中フレームの数をカウントする第1の発話中フレームカウント手段と、第1の発話中フレームカウント手段によるカウントが予め定められた最短発話時間以上となったことに応答して、発話の状態を発話中状態に設定し、連続する発話中フレームの先頭フレーム以前の所定位置のフレームを発話開始位置として決定する発話開始位置決定手段と、発話状態記憶手段に記憶された発話の状態が発話状態であるときに、発話中フレーム判定手段により判定される連続する非発話中フレームの数をカウントする第1の非発話中フレームカウント手段と、第1の非発話中フレームカウント手段によるカウントが発話終了と判定するためのしきい値より大きくなったことに応答して、発話の状態を非発話中状態に設定し、連続する非発話中フレームの最後のフレーム以後の所定位置のフレームを発話終了位置に決定する発話終了位置決定手段とを含む。
【0021】
さらに好ましくは、発話開始位置及び発話終了位置判定手段は、さらに、発話状態記憶手段に記憶された発話の状態が非発話中状態であるときに、発話中フレーム判定手段により出力される連続する非発話中フレームの数をカウントする第2の非発話中フレームカウント手段と、第2の非発話中フレームカウント手段によるカウントが、予め設定された、最短無音時間に相当する数以上となったことに応答して、第1の発話中フレームカウント手段によるカウントをクリアするための発話中フレームカウントクリア手段とを含む。
【0022】
発話開始位置及び発話終了位置判定手段は、さらに、発話状態記憶手段に記憶された発話の状態が発話状態であるときに、発話中フレーム判定手段により発話中フレームと判定されたフレームがあったことに応答して、第1の非発話中フレームカウント手段によるカウントをクリアするための非発話中フレームカウントクリア手段を含んでもよい。
【0023】
好ましくは、発話区間検出装置はさらに、発話区間検出手段により検出された発話区間を記憶するための発話区間記憶手段と、クラスタリング手段によるクラスタリングが実行されたことに応答して、クラスタリング後のクラスタレベルを用いて、発話区間記憶手段に記憶された発話区間の各々について棄却すべきか否かを判定するための棄却判定手段とを含む。
【0024】
雑音区間が一旦発話区間と誤判定されたとしても、実発話区間の音声パワーが大きければ、それら本来の雑音区間のクラスタレベルはクラスタリングを繰返し行なうことにより低くなることが期待できる。発話区間を記憶しておいて、新たなクラスタリングの結果を用いて棄却すべきか否かを判定することにより、誤って発話区間と判定された雑音区間を棄却することが可能になる。
【0025】
本発明の第2の局面に係る発話区間検出プログラムは、コンピュータを、受信した音声信号のフレームのシーケンスの中で発話開始位置である可能性の高いフレームを検出し、検出信号を出力する検出手段と、検出手段により出力された検出信号に応答して、フレームのシーケンスのうち、検出信号に対応するフレームより前の所定位置までのフレームから、最新に受信したフレームまでを、各フレームの音声パワーの値に基づいて繰返しクラスタリングする処理を開始し、繰返しごとに、音声パワーの値の大きさに応じたクラスタレベルを各フレームについて算出するためのクラスタリング手段と、クラスタリング手段によるクラスタリングの繰返しと所定の関係を持ったタイミングで、クラスタリング手段により各フレームについて算出されたクラスタレベルのシーケンスに基づいて発話開始位置及び発話終了位置を検出する処理を繰返し行なう、クラスタレベルによる発話区間検出手段として機能させる。
【発明の効果】
【0026】
以上のようにこの発明によれば、各フレームを音声パワーに基づいてクラスタリングし、その結果に基づいて発話区間の検出を行なう。クラスタレベルにより発話区間とそれ以外の区間とが明確に分離されるため、発話区間を高い精度で行なうことができる。さらに、クラスタリングの繰返しを開始するタイミングを、音声パワーの分散に基づいて決定することにより、計算量の増加を防止しながら、発話開始位置の検出精度を高めることができる。クラスタリングの繰返しにより各フレームのクラスタレベルが変化するため、雑音区間が発話区間と誤検出されても棄却される可能性が高くなり、発話区間の検出精度をより高められる。
【図面の簡単な説明】
【0027】
【図1】本発明の1実施の形態に係る発話区間検出装置の処理の流れの概略を説明するためのフローチャートである。
【図2】本発明の1実施の形態の装置において、音声フレームのクラスタリング処理がどのように行なわれるかを説明するための図である。
【図3】本発明の1実施の形態の装置における発話区間の棄却方法の原理について説明するための図である。
【図4】本発明の1実施の形態の装置を実現するコンピュータシステムの外観図である。
【図5】図4に示すコンピュータシステムのハードウェアブロック図である。
【図6】本発明の1実施の形態に係る発話区間検出装置を含む音声認識システムの概略構成を示すブロック図である。
【図7】図6に示す発話区間検出装置の機能的ブロック図である。
【図8】図7に示す発話区間検出装置をコンピュータで実現するためのコンピュータプログラムの制御構造を示すフローチャートである。
【図9】クラスタリング開始タイミングの判定処理を説明するための図である。
【図10】クラスタリング開始判定処理における処理対象となるフレームの範囲(分散窓)を示す図である。
【図11】クラスタリング開始判定処理を実現するプログラムの制御構造を示す不コーチャーとである。
【図12】クラスタリング処理を実現するプログラムの制御構造を示すフローチャートである。
【図13】発話区間判定処理を実現するプログラムの制御構造を示すフローチャートである。
【図14】発話状態判定処理を実現するプログラムの制御構造を示すフローチャートである。
【図15】発話開始位置判定処理を実現するプログラムの制御構造を示すフローチャートである。
【図16】発話終了位置を実現するプログラムの制御構造を示すフローチャートである。
【図17】発話開始判定処理を説明するための図である。
【図18】クラスタリング処理のタイミングを説明するための図である。
【図19】発話終了判定処理を説明するための図である。
【図20】発話棄却判定処理を実現するプログラムの制御構造を示すフローチャートである。
【図21】前発話区間棄却判定処理を実現するプログラムの制御構造を示すフローチャートである。
【図22】現発話区間棄却判定処理を実現するプログラムの制御構造を示すフローチャートである。
【図23】現発話区間棄却処理を説明するための図である。
【発明を実施するための形態】
【0028】
以下の説明及び図面では、同一の部品には同一の参照番号を付してある。したがって、それらについての詳細な説明は繰返さない。
【0029】
[概略]
本実施の形態では、以下のような処理により発話区間の検出を行なう。特に本実施の形態では、音声信号の各フレームをそのパワー値に基づき所定個数のクラスタに逐次クラスタリングし、フレームが属するクラスタの変化に基づいて発話区間の開始位置及び終了位置を検出する点、及び、発話区間の検出後にもクラスタリングを逐次行なうことにより、各フレームが属するクラスタが変化することに基づいて、発話区間とされた区間を棄却する棄却処理を行なう点に特徴がある。
【0030】
図1を参照して、この発話区間検出処理では、音声信号のどの位置からクラスタリングを開始すべきかを決定するクラスタリング開始判定処理(ステップ50)を行なう。クラスタリングを開始すべき条件が満たされると、発話が終了する(ステップ52の判定においてYESとなる。)まで、次のような処理を所定時間毎(本実施の形態では10ミリ秒毎)に繰返す。この繰返しでは、入力される音声フレームをクラスタリングし(ステップ54)、その結果に基づいて、現時点での発話確定状態を判定して(ステップ56)、さらに以前に発話区間と判定された区間及び現在の発話区間とについてステップ56の結果に基づいて棄却すべきか否かを判定する処理(ステップ58)とを行なう。この繰返しを上記所定時間ごとに繰返すことにより、発話区間の判定と棄却とを行なう。なお、発話区間と判定された区間が棄却された場合、本実施の形態では音声認識をリセットし、新たに定められた発話区間の音声データのみを用いた音声認識が最初から行われる。本実施の形態では、音声信号は10ミリ秒ごとにフレーム化されるため、上記繰返しは新たなフレームが発話区間検出装置に入力されるたびに行われることになる。
【0031】
図2を参照して、上記したステップ50で行われるクラスタリングの開始タイミングの判定処理の概略について説明する。音声信号80が入力されるものとする。図2において、横軸が時間を表す。右側に行くほど新しい(後から入力された)音声であることを示す。発話開始位置と考えられる位置の近辺では、例えばピーク94により示されるように、音声パワーは急激に大きくなると考えられる。本実施の形態では、このように音声信号のパワーが急激に大きくなった点の直後(例えば時刻92)をクラスタリング開始位置とする。この処理の詳細については後述する。
【0032】
時刻92以後、ステップ54、56及び58の処理が音声の発話区間終了まで繰返される。すなわち、ステップ54に関し、クラスタリング開始時刻92では範囲82で示される音声信号80の各フレームについてクラスタリングが実行される。その後、50ミリ秒後に、範囲84で示される音声信号の各フレームのクラスタリングが再び行われる。以後、50ミリ秒毎に、範囲86及び範囲88の各フレームのクラスタリングが行われ、以後、同様である。
【0033】
ステップ56の処理により、対象範囲内の各フレームがどのクラスタに属するかが決まる。例えばクラスタ数が4であり、パワーの小さな順から順番にクラスタ番号を1,2,3,4とする。するとこのクラスタ番号は、各フレームのパワーのレベルを示すものと考えることができる。以後、このレベルを「クラスタレベル」と呼ぶ。音声信号80の各フレームについてそのクラスタレベルを調べていくと、クラスタレベルは曲線90で示されるように変化するであろう。
【0034】
図3(A)を参照して、音声信号100に対し、範囲102のような比較的パワーのレベルが低い領域が続く場合を考える。この範囲の各フレームについてクラスタリングした結果得られるクラスタレベルの変化は、曲線104で表されるようなものとなると考えられる。本実施の形態では、このクラスタレベルが所定時間以上、しきい値106以上となったときに、その区間を一応の発話区間とする。すなわち、曲線104の一部分108が発話区間であると判定される。ただしここでの発話区間は次に説明するように暫定的なものである。
【0035】
図3(B)を参照して、上記した音声信号100の後に、パワーの大きな部分122が続いて入力され、音声信号120により示されるようになったものとする。この両者を含む範囲で音声信号120の各フレームをクラスタリングすると、部分122に含まれるフレームのパワーが相対的に大きいため、範囲102に含まれるフレームのクラスタレベルは低くなる。すなわち、クラスタレベルは図3(B)の曲線124により示されるようになり、図3(A)では発話区間となっていた部分108のクラスタレベルが低くなる。その結果、この部分128ではしきい値106との比較で発話区間の条件が満たされなくなる。その結果、一旦発話区間と認定された部分が棄却され、非発話部分に分類されることになる。図1のステップ56及び58で行われるのは、このように発話区間を判定する処理と、発話区間に暫定的に分類された区間を棄却すべきか否かを決定する処理とである。
【0036】
[構成]
本実施の形態に係る発話区間検出装置は、主として、図4に示すコンピュータシステム150と、コンピュータシステム150により実行されるコンピュータプログラムとにより実現される。
【0037】
コンピュータシステム150は、コンピュータ160と、コンピュータ160に接続されるマイクロフォン194,スピーカ192,モニタ162、キーボード166及びマウス168とを含む。
【0038】
図5を参照して、コンピュータ160は、CPU(中央演算処理装置)176と、CPU176に接続されたバス186と、バス186にいずれも接続されたROM(Read−Only Memory)178、RAM(Random Access Memory)180と、ハードディスクドライブ(HDD)174、DVD(Digital Versatile Disc)190が装着されるDVDドライブ170、スピーカ192及びマイクロフォン194が接続されるサウンドボード188、並びに、インターネット196等のネットワークへの接続を提供するネットワークI/F172とを含む。本実施の形態では、図を簡明にし分かりやすくするため、マウス168、キーボード166及びモニタ162もバス186に接続されているものとする。
【0039】
[機能的ブロック]
本実施の形態に係る発話区間検出装置について、全体システムにおいてどのような一にあるかについて、図6を参照して説明する。この実施の形態に係る発話区間検出装置270は、音声認識システム250において、音声認識エンジン272のフロントエンド処理を担当する。すなわち、発話区間検出装置270は、マイクロフォン194から音声信号300の入力と、マイクロフォン194に付属している、発話中か否かを示すユーザが操作するスイッチ260の出力302とを受け、音声信号300をフレーム化し、発話区間を検出して、発話区間のみのフレームの特徴量のシーケンス306を音声認識エンジン272に対して渡す。前述したとおり、発話区間検出装置270はさらに、発話区間検出処理中に発話区間の棄却が生じたときには、リセット信号308を音声認識エンジン272に対して出力する機能も持つ。この場合、発話区間検出装置270は再度発話区間の検出を行なって発話区間のフレームの特徴量を音声認識エンジン272に対して出力する。音声認識エンジン272は発話区間検出装置270から受信したフレームの特徴量を用いて再度音声認識を再開し、音声認識結果のテキスト310を出力する。
【0040】
なお、発話区間検出装置270の発話区間検出には、種々のパラメータの設定が可能である。そのため、発話区間検出装置270には、それらのパラメータ値304を入力する入力装置274が接続される。入力装置274は例えば、図5に示すモニタ162、キーボード166、及びマウス168とCPU176により実行されるプログラムによるユーザインターフェイスにより実現される。
【0041】
[詳細構成]
図7を参照して、発話区間検出装置270は、音声信号300の入力を受けて、音声パワーを含む特徴量ベクトルからなるフレームのシーケンスに変換し、クラスタリング処理の前段階としてクラスタリング開始位置を判定する処理を行なう前段階処理部430と、前段階処理部430によりクラスタリング開始位置が検出されると、所定時間毎に、その時間から音声信号300の先頭までの各フレームを所定時間(50ミリ秒ごと)ごとにクラスタリングし、クラスタリングの結果に基づいて発話区間の検出及び棄却処理を行なって、発話区間の各フレームの特徴量のシーケンス306と、発話区間の棄却が生じたときのリセット信号308とを出力し音声認識エンジン272に与える処理を行なう発話区間検出部436と、発話区間検出部436の動作条件を設定するための種々の値を記憶する設定記憶部432と、発話区間検出部436により逐次決定される発話区間(発話開始位置及び発話終了位置)を記憶する発話区間記憶部434とを含む。
【0042】
設定記憶部432及び発話区間記憶部434は、図5に示すHDD174、RAM180等により実現される。
【0043】
前段階処理部430は、音声信号300を10ミリ秒ごとにフレーム化し、フレームシーケンスとして出力するフレーム化部450と、フレーム化部450が出力する各フレームに対し、音声認識エンジン272での音声認識で用いられる特徴量(音声パワーを含む。)を算出する特徴量計算部452と、特徴量計算部452が出力する特徴量をフレームごとに記憶するバッファ454と、バッファ454に記憶された各フレームの音声パワーの値の分散に基づいてクラスタリング開始位置を判定し、発話開始位置である可能性の高いフレームが検出されたことを示すクラスタリング開始信号を出力するクラスタリング開始位置判定部456とを含む。フレーム化部450、特徴量計算部452、バッファ454及びクラスタリング開始位置判定部456には、スイッチ260の出力が与えられており、ユーザがスイッチ260を操作して発話の終了を指示すると、これら機能ブロックはいずれも動作を終了する。クラスタリング開始位置判定部456は、クラスタリング開始信号を出力すると、それ以後は上記した動作を停止する。発話区間検出が一旦終了した後、新たに発話区間検出処理が再開されると、クラスタリング開始位置判定部456は再び上記した処理を開始する。
【0044】
発話区間検出部436は、バッファ454のデータ読出ができるようにバッファ454に接続され、指定された位置と音声信号の先頭との間の各フレームの音声パワー値を所定の設定にしたがって新たにフレームが受信されるたびに繰返しクラスタリングするクラスタリング処理部490と、クラスタリング処理部490によるクラスタリング結果を用い、フレームが5個入力されるたびに各フレームにおける発話確定状態を判定し、各フレームに対して発話確定状態のラベルを付す処理を行なう発話状態判定部492とを含む。発話状態判定部492は、各フレームのクラスタレベルをしきい値と比較することにより上記した判定を行なう。なお、発話開始位置の検出時のしきい値と、発話終了位置の検出時のしきい値とは異なっていてもよい。本実施の形態では、発話開始位置の検出時のしきい値の方が発話終了位置の検出時のしきい値より高くなっている。本実施の形態では、発話確定状態としては、「非発話中状態」、「発話開始確定状態」、「発話中確定状態」、及び「発話終了確定状態」の4つの状態がある。
【0045】
発話区間検出部436はさらに、発話状態判定部492により各フレームに付されたラベルに基づき、発話の開始位置及び終了位置を判定するための発話開始・終了判定部494と、発話開始・終了判定部494による判定結果と、クラスタリング処理部490によるクラスタリングの結果とを用い、発話開始・終了判定部494により発話区間と判定された区間の各々について、新たなクラスタリングの結果、棄却すべき状態となったか否かを判定し、棄却すべき発話区間が生じた場合にはリセット信号308を出力するための発話区間棄却処理部496と、クラスタリング開始位置判定部456からクラスタリング開始信号を受けると、クラスタリング処理部490、発話状態判定部492、発話開始・終了判定部494及び発話区間棄却処理部496による処理を開始させ、以後、所定時間の間隔をおいてクラスタリング開始位置を50ミリ秒ずつ後にずらしながらクラスタリング処理部490、発話状態判定部492、発話開始・終了判定部494及び発話区間棄却処理部496を繰返し動作させるための繰返制御部498とを含む。
【0046】
設定記憶部432は、クラスタリング処理部490により行われるクラスタリング処理のためのパラメータ(クラスタ数、クラスタリング処理間の時間間隔、各クラスタの重心位置の計算方法に関するパラメータ)等を記憶するためのクラスタ設定記憶部470と、発話状態判定部492による発話確定状態判定の際に用いられる様々なしきい値を記憶するためのしきい値記憶部472と、発話開始・終了判定部494による処理で、所定の条件を満たした位置から発話の開始位置及び終了位置として決定すべき位置までのシフト量を記憶するためのシフト量記憶部474とを含む。
【0047】
[プログラム構成]
以後、上記した各機能ブロックを実現するためのプログラムの制御構造について、フローチャートを用いて説明し、あわせて各プログラムで行なわれる処理の詳細について説明する。
【0048】
《メインプログラム》
図8に示すメインプログラムは、所定時間(本実施の形態では10ミリ秒)ごとに繰返し起動されるであって、10ミリ秒ごとに、それまでに入力された音声データに対する以下に述べるような処理を繰返し実行する。
【0049】
このプログラムは、発話データに対して既にクラスタリング処理を開始しているか否かを判定するステップ520と、クラスタリング処理をまだ開始していないと判定されたときに、クラスタリング開始判定のための直近の窓内の発話データの各フレームの音声パワーの分散に基づいて、クラスタリングを開始するか否かを判定するステップ522とを含む。ステップ522で実行される処理については後述する。
【0050】
ステップ520の判定が肯定のとき、又はステップ520の判定が否定的で、ステップ522の処理が実行された後には、ステップ524で現在のクラスタリング状態が「クラスタリング中」か否かが判定される。判定が否定的であればこのプログラムの実行は一旦終了され、10ミリ秒後に先頭から再開される。
【0051】
ステップ524の判定が肯定的であれば、ステップ526で、発話開始からの全フレームの音声パワーについて、クラスタリング処理が実行される。この処理については後述する。
【0052】
ステップ526の処理が完了した後、ステップ528において、発話区間の判定タイミングであるか否かが判定される。発話区間とは、音声信号中で発話の占める区間のことを指す。本実施の形態では、フレームが入力されるたびに発話区間の判定を行なうのではなく、5フレームごとに発話区間の判定を行なう。
【0053】
例えば、図18を参照して、音声信号790において、あるタイミング794において、そこから5フレーム分の判定区間792について、発話区間の判定を行なう。次に発話区間の判定を行なうのは、上記したタイミング794から5フレーム分の時間が経過した後のタイミング796である。このタイミング796では、本実施の形態では、タイミング796の直前の5フレーム分の判定区間798に対して発話区間の判定処理を実行する。
【0054】
本実施の形態では、フレームは10ミリ秒ごとに入力される。すなわち、発話区間の判定は50ミリ秒ごとに行なう。そこで、ステップ528では、前回の発話区間の判定タイミングから50ミリ秒が経過したかを判定する。ステップ528の判定が否定的であれば何もせずこのプログラムの実行を終了する。ステップ528の判定が肯定的であれば、ステップ530において、発話区間の判定処理を実行してこのプログラムの実行を一旦終了する。ステップ530の詳細については後述する。なお、ステップ528で、どの程度の間隔で発話区間判定処理を行なうかは設計的事項である。例えば、クラスタリング開始後は、ステップ528の処理を行なわず常にステップ530の処理を実行するようにしてもよい。
【0055】
《クラスタリング開始位置判定》
図8のステップ522の処理について、図9〜図11を参照して説明する。以下、「クラスタリング状態」とは、クラスタリング処理を開始したか否かを示す変数のことをいう。そのとり得る値は「非クラスタリング」と「クラスタリング中」の2つである。初期値は「非クラスタリング」である。
【0056】
図9を参照して、発話開始位置と考えられる位置は、音声信号540のピーク542の直後の位置544にあると仮定できる。ピーク542の付近では、音声信号の音声パワーの分散がそれ以外の位置と比較して大きくなると考えられる。また、発話開始と考えられるまでは、上記したようなクラスタリング処理を実行することは意味がない。すなわち、音声信号540のピーク542の直後の位置544からクラスタリングを開始することが合理的と考えられる。この位置544を検出するために、本実施の形態では、現在時点の直近の所定時間の窓内の音声パワーの分散を求め、その値が所定のしきい値以上となったときにクラスタリングを開始する。この窓を以下では「分散窓」と呼ぶ。
【0057】
図10(A)を参照して、ある時点における音声信号560の分散窓564は、ある時点の直前の時間範囲562である。図10(B)に示されるように、時間がさらに進んだ音声信号570における分散窓574は、その時点の直前の時間範囲572である。
【0058】
図11を参照して、図8のステップ522における処理を実現するプログラムルーチンは、音声信号の入力開始時からの累計フレーム数が所定のしきい値より大きくなったか否かを判定し、判定が否定的であれば何もせずに処理を終了するステップ600を含む。所定長の分散窓に相当するフレーム数以上のフレームの入力を受けた後でなければ、音声パワーの分散に基づくクラスタリングの開始判定を行なうことはできない。したがって、入力されたフレーム数が少ない場合にはクラスタリングの開始判定は行なわない。
【0059】
このプログラムはさらに、ステップ600の判定が肯定的であるときに、現時点の直前の分散窓内に含まれるフレームの音声パワーについて、その分散を求めるステップ602と、ステップ602で求めた分散の値が所定のしきい値以上か否かを判定するステップ604とを含む。ステップ604の判定が否定的であればステップ608でクラスタリング状態を示す変数に「非クラスタリング」であることを示す値を格納してこの処理を終了する。ステップ604の判定が肯定的であれば、ステップ606で、クラスタリング状態を示す変数に、「クラスタリング中」であることを示す値を格納して処理を終了する。
【0060】
この結果、図11に示すクラスタリング開始判定処理により、通常は、処理の開始からしばらくの間は「非クラスタリング」状態と判定され、分散窓内のフレームの音声パワーの分散がしきい値以上になることがあると「クラスタリング中」と判定される。一旦「クラスタリング中」と判定された後は、後述するようにこの処理が中止されるまで、クラスタリング状態は「クラスタリング中」に維持される。
【0061】
《クラスタリング処理》
図12を参照して、図8のステップ526で実行されるクラスタリングのためのプログラムルーチンは、直前の分散窓内のフレームの音声パワー値の内、上位の所定個数をハズレ値として除外するステップ620と、残った音声パワー値に基づいて、各クラスタの重心位置を計算するステップ622と、ステップ622で計算された各クラスタの重心位置を用い、K平均クラスタ法によるクラスタリング処理により、各音声パワー値をクラスタリングして処理を終了するステップ624とを含む。本実施の形態では、クラスタ数は設定可能であり、図6に示す入力装置274により入力され、図7に示す設定記憶部432に記憶される。以下の説明では、クラスタ数として「4」が設定された場合を想定している。
【0062】
K平均クラスタ法については、統計学の辞書にも記載されている、クラスタ解析のための1手法であって、基本的な概念についてはよく知られている。したがってここではその詳細については繰返さない。
【0063】
なお、本実施の形態では、ステップ624のクラスタリング処理により、各フレームはその音声パワーによってクラスタレベル1〜4のいずれかに分類される。
【0064】
《発話区間判定》
図13を参照して、図8のステップ530で行なわれる発話区間判定処理のためのプログラムルーチンは、フレームのクラスタレベルの変化に基づいて、現在の発話確定状態を判定するステップ640を含む。ここで、発話確定状態とは、発話状態判定部492について述べたとおり、「非発話中状態」、「発話開始確定状態」、「発話中確定状態」、及び「発話終了確定状態」のいずれかであり、処理の最初には「非発話状態」となっている。
【0065】
このプログラムはさらに、ステップ640の後、発話確定状態が上記した4つの状態のいずれであるかを判定してその結果に基づいて制御の流れを分岐させるステップ642を含む。発話確定状態が「発話開始確定」又は「発話中確定」であれば制御はステップ644に進む。発話確定状態が「発話終了確定」であれば制御はステップ654に進む。発話確定状態が「非発話中」であれば何もせずこの発話区間判定処理を終了する。どのようなときに発話確定状態が上記した4つのいずれに分類されるかについては図14を参照して後述する。
【0066】
発話確定状態が「発話開始確定」又は「発話中確定」であれば、ステップ644で、これまでに発話区間と判定された区間の各々について、クラスタリング処理後の新たなクラスタレベルに基づいて発話区間でなくなるものがあればその発話区間を棄却する。続いてステップ646では、ステップ644の処理の結果、棄却された発話確定区間があるか否かを判定する。棄却された発話確定区間があれば、ステップ648で、音声認識エンジン272に対してリセット依頼信号を出力する。このリセット依頼信号は、これまで発話区間検出装置270から音声認識エンジン272に対して出力された発話区間の各フレームの特徴量データを全て破棄することを指示するためのものである。リセット信号を受信した音声認識エンジン272は、それまでに発話区間検出装置270から受信した一連のフレームの特徴量を全て破棄する。
【0067】
ステップ646の判定が否定的である場合、及びステップ646の判定が肯定的であってかつステップ648の処理が完了した場合には、ステップ650で、発話区間検出装置270は、発話確定区間の特徴量を音声認識エンジン272に送信する。ステップ646の判定が肯定的である場合、ステップ650では、棄却された発話区間を除く発話区間の各フレームの特徴量が音声認識エンジン272に送信される。ステップ650の後、ステップ652で発話確定状態を「発話中確定」に変更してこの処理を終了する。
【0068】
ステップ642の判定が「発話終了確定」である場合、ステップ654で、発話確定区間の各フレームの特徴量を音声認識エンジン272に送信する。続くステップ656では、発話確定状態を「非発話中状態」に修正してこの処理を終了する。
【0069】
《発話状態判定》
図14を参照して、図13のステップ640で実行される発話状態判定処理を実現するためのプログラムルーチンは、現在の発話状態が「発話中確定状態」か否かを判定し、その結果に応じて制御の流れを分岐させるステップ670を含む。ステップ670の判定が否定的である場合、制御はステップ672に進み、発話開始位置判定処理を行なってこの処理を終了する。ステップ670の判定が肯定的である場合、制御はステップ674に進み、発話終了位置判定処理を行なってこの処理を終了する。発話開始位置判定処理及び発話終了位置判定処理の詳細についてはそれぞれ図15及び図16を参照して説明する。
【0070】
《発話開始位置判定》
図15を参照して、発話開始位置判定処理を実現するプログラムルーチンは、現在の時刻からさかのぼって次のフレーム(すなわち前のフレーム)の音声パワーのバッファからの読出を試行するステップ700と、先頭のフレームに到達したときに処理を終了するステップ702と、ステップ702で次のフレームがあると判定された時に実行され、そのフレームの音声パワーのクラスタレベルが第1のしきい値TH1(発話開始クラスタレベルのしきい値)以上か否かを判定するステップ704とを含む。
【0071】
ステップ704の判定が肯定的であれば、ステップ706で発話中フレーム数を示す変数を1カウントアップする。続くステップ708で、非発話中フレーム数を示す変数に0を代入する。さらに、ステップ710で、発話中フレーム数が第2のしきい値TH2(最短発話時間を表す。)以上となったか否かを判定し、判定が否定的である場合には制御をステップ700に戻す。ステップ710の判定が肯定的であれば、ステップ712で「発話開始位置先行処理」を実行する。
【0072】
「発話開始位置先行処理」とは、発話の開始位置を、ステップ710の判定が肯定的となったフレームから所定数だけさかのぼって決定する処理のことをいう。この所定数(所定時間)を「プリロール時間」と呼ぶ。
【0073】
ステップ712の後、発話確定状態を「発話開始確定状態」に変更してこの処理を終了する。
【0074】
一方、ステップ704の判定が否定的であれば、ステップ716で非発話中フレーム数を1カウントアップする。続いてステップ718で非発話中フレーム数が第3のしきい値TH3(最短無音時間を表す。)以上となったか否かを判定する。判定が否定的であれば制御はステップ700に戻る。判定が肯定的であればステップ720で発話中フレーム数を0クリアし、制御をステップ700に戻す。
【0075】
《発話終了位置判定》
発話終了位置判定処理は、発話区間の終了位置を決定する処理である。
【0076】
図16を参照して、図14のステップ674で実行される発話終了位置判定のためのプログラムルーチンは、次のフレームの音声パワー値の読出を試行するステップ740と、ステップ740の試行の結果、フレームデータの最後(先頭)まで達したか否かを判定し、判定が肯定的であれば処理を終了するステップ742とを含む。このプログラムはさらに、ステップ742の判定が否定的であるときに実行され、ステップ740で読出したフレームのクラスタレベルが第4のしきい値TH4(発話終了クラスタレベルのしきい値)を下回ったか否かを判定し、判定結果に応じて制御の流れを分岐させるステップ744とを含む。
【0077】
ステップ744の判定が肯定的であれば、ステップ746で非発話中フレーム数を1カウントアップする。続くステップ748で、非発話中フレーム数が第5のしきい値TH5(発話終了と判定するための非発話フレーム数のしきい値)を上回ったか否かが判定され、判定が否定であれば制御はステップ740に戻る。ステップ748の判定が肯定的であればステップ750で発話終了位置を、現在のフレームから所定フレーム数だけ後ろの位置に移動した位置を発話終了位置とする処理をする。この移動量をアフターロールと呼ぶ。ステップ750の後、発話確定状態を「発話終了確定状態」に変更してこの処理を終了する。
【0078】
一方、ステップ744の判定が否定の場合、ステップ754で非発話フレーム数を0クリアし、制御をステップ740に戻す。
【0079】
図17を参照して、発話開始位置判定についてその概要を説明する。今、クラスタレベル曲線770において、第1のしきい値TH1(線分772により表す。)を超えたフレームが第2のしきい値TH2以上続いた場合、その最初の位置774を特定し、さらにその位置774からプリロール776だけ先行した位置778を発話開始位置とする。これが図15に示す発話開始位置判定処理の概要である。
【0080】
図19を参照して、発話終了位置判定についてその概要を説明する。今、クラスタレベル曲線810において、第4のしきい値TH4(線分772により表す。)を下回るクラスタレベルの連続するフレーム数が第5のしきい値TH5を下回ったとき、その最初の位置812から前述したアフターロール814だけ後ろに移動した位置816を発話終了位置とする。これが図16に示す発話終了位置判定処理の概要である。
【0081】
《発話棄却判定処理》
前述したとおり、上記した一連の処理により一端は発話区間と判定された区間であっても後続する音声信号を含めたクラスタリング処理により、発話区間から外すべき区間が生ずることがある。図13のステップ644で行われる発話棄却判定処理は、そうした発話区間を見つけ出し、発話区間から削除する処理のことをいう。
【0082】
図20を参照して、この処理を実現するプログラムルーチンは、音声信号上の現時点での処理位置より前に発話区間として特定された区間が存在しているか否かが判定される。判定が否定的であれば何もせずこの処理は終了する。判定が否定的であれば制御はステップ834に進む。判定が肯定的であれば、ステップ834の前にステップ832が実行される。ステップ832では、現在より前の発話区間の各々について、新たに行われたクラスタリング処理の結果、その発話区間を棄却すべきか否かが判定され、判定結果に応じて前発話区間が棄却又は維持される。その詳細については図21を参照して後述する。ステップ830の判定が否定的である場合、及びステップ830の判定が肯定的でかつステップ832の処理が終了した後、ステップ834で、現在の発話区間について、新たなクラスタリングの結果、発話区間から棄却すべきか否かが判定され、判定結果に応じて現発話区間が棄却又は維持される。この詳細については図22を参照して後述する。
【0083】
《前発話区間棄却判定》
図21を参照して、前発話区間棄却判定処理を実現するためのプログラムルーチンは、次のフレーム(すなわち直前のフレーム)の音声パワー値のバッファからの読出を試行するステップ850と、ステップ850の処理の結果、前の全ての発話区間に対し、棄却判定処理848を実行するステップ846を含む。棄却判定処理中では、処理対象の発話区間内のフレームが所定の順番で(例えば前からシーケンシャルに)読出され、以下の処理が実行される。なお、図21の処理では、デフォルトとして対象の前発話区間は発話区間であるものとして処理が開始される。
【0084】
棄却判定処理848は、対象となる前発話区間の中で次のフレームの読出を試行するステップ850と、ステップ850の処理の結果、処理対象の前発話区間内の全てのフレームに対してチェックが完了したと判定されたときに、この前発話区間に対する処理を終了するステップ852とを含む。ステップ852でまだ前発話区間内に未処理のフレームがあると判定されたときに、そのフレームのクラスタレベルを第1のしきい値TH1(発話開始クラスタレベルのしきい値)と比較し、判定結果に応じて制御の流れを分岐させるステップ854とを含む。
【0085】
ステップ854の判定が肯定の時には、ステップ856で発話中フレーム数を1カウントアップし、ステップ858で非発話中フレーム数を0クリアする。続いて発話中フレーム数が第2のしきい値TH2(最短発話時間)以上となったか否かを判定する。判定が肯定であれば、処理中の前発話区間を棄却しないことに設定し、この前発話区間に対する処理を終了する。ステップ860の判定が否定的であれば制御はステップ850に戻る。
【0086】
一方、ステップ854の判定が否定的であれば、ステップ862で非発話中フレーム数を1カウントアップし、ステップ864で非発話中フレーム数が第3のしきい値TH3(最短無音時間)以上となったか否かが判定される。判定結果が肯定的であれば発話中フレーム数を0クリアし、制御はステップ850に戻る。判定結果が否定であれば制御はステップ850に戻る。
【0087】
この処理により、例えば図3(A)において発話区間と判定されていた部分108が、図3(B)の部分128により示すように、非発話区間と判定される(棄却される)ことが生じ得る。
【0088】
《現発話区間棄却判定》
この処理は、現在処理中フレームを含む、発話区間と判定された区間について、棄却すべき区間が生じたか否かを判定する処理である。この処理では現発話区間のうち、最も新しいフレーム(カレントフレーム)から順番に前方のフレームを読出して以下の処理を行なう。なおこの処理でも、現発話区間については、まず発話区間であることが前提としてこの処理が開始される。
【0089】
図22を参照して、現発話区間棄却判定を実現するプログラムルーチンは、現発話区間において、次のフレーム(すなわち直前に読出したフレームの直前のフレーム)の読出を試行するステップ880と、ステップ880の試行の結果、現発話区間の全てのフレームの読出が完了したか否かを判定し、判定が肯定的であれば処理を終了するステップ882と、ステップ882の判定が否定的であるときに、読出したフレームのフレームレベルが第1のしきい値TH1(発話開始クラスタレベルのしきい値)以上か否かに応じて制御の流れを分岐させるステップ884とを含む。
【0090】
ステップ884の判定が肯定的である場合、ステップ890で発話中フレーム数を1カウントアップして制御はステップ880に戻る。
【0091】
ステップ884の判定が否定的である場合、ステップ886で非発話中フレーム数を1カウントアップする。続いてステップ888で、非発話中フレーム数が第3のしきい値TH3(最短無音時間)以上となったか否かを判定する。判定が否定的であれば制御はステップ880に戻る。判定が肯定的であればステップ892において、この最短無音時間の最初(最もカレントフレームに近いフレーム)から現発話区間の先頭までの区間の全フレームのフレームレベルに基づいて、その区間の発話状態クラスタの比率を計算する。ステップ894では、この比率が第6のしきい値TH6(発話状態と判定するためのクラスタ比率しきい値)未満か否かが判定される。判定が否定的であれば制御はステップ880に戻る。さもなければステップ896で、この最短無音時間の最初(最もカレントフレームに近いフレーム)から前述のプレロール時間だけ遡った位置を現発話区間の新たな先頭位置とし、それ以前の区間は非発話区間として(棄却して)処理を終了する。この場合、プレロール量及び第3のしきい値TH3の値は、発話開始位置が検出された直後にはステップ888の判定結果がYESとならないように設定されている。
【0092】
例えば、図23(A)を参照して、現発話区間932について、現発話区間棄却処理を行なう場合を考える。クラスタレベル曲線930について、カレントの位置(現発話区間932の最も右側の位置)から遡って第1のしきい値TH1(図23(A)において線分912で示す。)を下回った位置934を特定する。この位置からさらに遡って、クラスタレベルが第1のしきい値TH1を下回った区間938が第3のしきい値TH3(最短無音時間)以上となるような位置936があるか否かを探索し、そのような位置936があれば、位置934から現発話区間932の先頭位置942までのフレームについて、その区間の発話状態クラスタの比率を計算する。この比率が第6のしきい値TH6未満であれば、現発話区間のうち、図23(B)に示すように位置934からプレロール時間968だけ遡った位置から前の区間964を棄却し、位置962以降の区間960を新たな現発話区間とする。
【0093】
図23(A)に示す例では、位置934から現発話区間932の先頭までの中で、しきい値以上となる区間940の比率が上記しきい値より小さくなる。したがって図23(B)に示すように、位置934からプレロール時間968だけ遡った位置962から現発話区間の先頭位置942までが棄却され、位置962が新たな現発話区間960の先頭位置となる。
【0094】
[動作]
上記した本実施の形態に係る発話区間検出装置270は以下のように動作する。図6を参照して、マイクロフォン194を介して音声信号300が発話区間検出装置270に入力される。図7を参照して、フレーム化部450は音声信号300をデジタル化し、10ミリ秒ごとに10ミリ秒長のフレームに分離して特徴量計算部452に与える。特徴量計算部452は、各フレームについて、後続の音声認識エンジン272で使用される特徴量を算出し、バッファ454に格納する。このとき算出される特徴量の中には、本実施の形態では音声パワーが含まれている。
【0095】
クラスタリング開始位置判定部456は、バッファ454にフレームデータが格納されると、各フレームの音声パワーの分散に基づいて、クラスタリング開始位置を判定する。クラスタリングの開始条件が充足されると、クラスタリング開始位置判定部456は繰返制御部498に指示を送り、発話区間検出部436による発話区間の判定処理が開始される。
【0096】
繰返制御部498は、クラスタリング開始位置判定部456からクラスタリングの開始条件が満たされたことを示す信号を受けると、クラスタリング処理部490を10ミリ秒ごとに動作させ、バッファ454に含まれる各フレームの音声パワーについて、クラスタリングを行なわせる。クラスタリング処理部490はクラスタリングが完了すると、各フレームにクラスタレベルを付与して発話状態判定部492に与える。
【0097】
クラスタリングが完了すると繰返制御部498は次に、発話状態判定部492による発話状態判定処理を実行させる。ただし発話状態判定部492による処理は50ミリ秒ごとに行なわれるので、クラスタリング処理部490によるクラスタリングが5回行われるごとに発話状態判定部492が1回動作することになる。発話状態判定部492は、各フレームのクラスタレベルに基づいて、カレントフレームを含み、直前の判定窓内の各フレームについて、その発話確定状態を判定し、フレームにその結果を示すラベルを付して発話開始・終了判定部494に与える。発話開始・終了判定部494は、発話状態判定部492から与えられたフレームシーケンスの発話確定状態のラベルに基づいて、発話開始位置及び終了位置を特定する。発話開始・終了判定部494は、この結果を発話区間記憶部434に格納する。
【0098】
発話区間棄却処理部496は、この結果を受けてさらに、クラスタリング処理部490によるクラスタリングにより、前発話区間の内で棄却することになった区間を特定し、発話区間から除外する。発話区間棄却処理部496はさらに、カレントフレームが発話区間であるときには、そのフレーム内の発話フレーム比率に基づいて、棄却すべき区間があればその区間を現発話フレームから分離して棄却するよう、発話区間記憶部434に記憶された発話区間データを更新する。発話区間棄却処理部496は、発話区間記憶部434に記憶された発話区間のフレームデータの特徴量のシーケンスを音声認識エンジン272に与え、音声認識エンジン272はこれら特徴量のシーケンスに対して音声認識を行ない、音声認識結果のテキストを出力する。
【0099】
発話区間棄却処理部496は、発話区間の棄却が生じたときにはリセット信号308を音声認識エンジン272に与える。さらに発話区間棄却処理部496は、発話区間記憶部434に記憶された、棄却処理後の新たな発話区間のフレームデータの特徴量シーケンスを音声認識エンジン272に与える。音声認識エンジン272は、これら特徴量を用いて、音声認識を最初から実行する。
【0100】
こうした処理が繰返されていく。ユーザが発話を終了すると、本実施の形態ではユーザはスイッチ260を用い、発話終了を示す信号を出力する。このスイッチ260の出力302は発話区間検出装置270に含まれる各部に与えられ、これら各部の動作が終了する。
【0101】
実際には、これら処理は前述したプログラムにより実現される。以下、発話確定状態に応じてプログラムの実行経路がどのように変化するかを説明する。
【0102】
《クラスタリング開始まで》
クラスタリング開始位置判定部456は、図11を参照して、バッファ454に格納されたフレーム数が所定数以上になるまで待機し(ステップ600)、フレーム数が所定以上となるとステップ602以下のクラスタリング開始位置判定処理を開始する。この処理では、フレームがバッファ454に入力されるたびに(10ミリ秒ごとに)、カレントフレームの直前の所定の長さの分散窓内に含まれるフレームの音声パワーの分散を計算する(ステップ602)。その値がしきい値以上となる(ステップ604の判定がYESとなる)と、クラスタリング状態を示す変数にクラスタリング開始(クラスタリング中)を示す値が代入され(ステップ606)、クラスタリング処理が開始される。
【0103】
《最初の発話開始位置検出まで》
図12に示すクラスタリング処理が完了すると、図13に示す発話区間判定処理が実行される。この処理において、発話確定状態の初期値は「非発話中」である。
【0104】
発話開始位置の条件が充足されるまでは、図14のステップ670の判定は否定的であり、ステップ672(図15)の発話開始位置判定処理が実行される。発話開始位置の検出の条件が充足されるまでは、図15のステップ710の判定結果はNOである。したがって、いずれステップ702の判定結果がYESとなって発話開始位置は検出されずに、次の繰返しが行われる。
【0105】
《最初の発話開始位置検出時》
この場合、図14のステップ670の判定はまだ否定的であるが、ステップ674で図15のプログラムが実行され、図15のステップ710の判定が肯定的となる。その結果、ステップ712において発話開始位置が決定され、ステップ714で発話確定状態が「発話開始確定状態」となる。したがって、図13のステップ642の判定の結果、制御はステップ644に進む。まだ発話確定区間はないので、ステップ644では何もされず、ステップ646の判定も否定となる。ステップ650では、発話開始位置から発話開始確定位置まで(図17でいうと、位置778からカレントフレームまで)が発話区間として確定している。したがって、その区間の特徴量を音声認識エンジンに送る。ステップ652で発話確定状態は「発話中確定」となる。
【0106】
《最初の発話中確定状態、発話終了状態検出前まで》
この状態では、図8のプログラムが起動されると、ステップ520,524,526,及び528,又はステップ520,524,526,528、及び530の経路の処理が実行される。この条件では、ステップ530では、図14のステップ670の判定が肯定的となり、ステップ674の処理が実行される。ステップ674では、図16の処理が実行される。
【0107】
図16を参照して、カレントフレームからその直前の判定窓内の全てのフレームの各々に対して、ステップ742〜748の処理を実行する。発話終了位置の条件が充足されない場合、ステップ748の判定は常に否定的となり、いずれステップ742の判定が肯定的となる。図13のステップ642の結果、制御はステップ644(図20に示す発話棄却処理)に進む。
【0108】
図20を参照して、ここではまだ発話確定区間は存在しないため、ステップ832の処理は実行されず、ステップ834の処理(図22に詳細を示す)が実行される。図22の処理では、ステップ880〜888の処理を現発話区間のカレントフレームから遡って実行する。ステップ888の判定が肯定的となることなくステップ882の判定が肯定的となれば、ここでは何もされずにこの処理が終了する。ステップ882の判定が肯定的となる前にステップ888の判定が肯定的となる場合があると、ステップ892において、ステップ884の処理で最初に判定結果がYESとなったフレームから現発話区間の先頭までのフレームについて、発話状態クラスタの比率が算出される。もしもこの値がしきい値TH6未満であれば、ステップ884の判定が最初に肯定的となったフレームから所定のプレロール時間だけ遡った位置のフレームから現発話区間の先頭フレームまでが棄却される(ステップ896)。
【0109】
現発話区間の棄却が発生すると、図13のステップ646の判定が肯定的となり、ステップ648の処理が実行され、音声認識エンジンにリセット依頼が送られる。続いてステップ650で、棄却後の発話開始位置からカレントフレームまでの特徴量が音声認識エンジンに送信される。音声認識エンジンでは、リセット依頼に応答して、これまでの音声認識結果をリセットし、続いてステップ650で送信されてくる特徴量のシーケンスに対する音声認識を実行する。
【0110】
《最初の発話終了状態検出時》
この場合、図16の処理で、ステップ742の判定が肯定となる前に、ステップ748の判定が肯定となり、ステップ750で発話終了位置が特定され、ステップ752で発話確定状態が「発話終了確定状態」となる。ステップ750で発話終了位置が特定されるので、発話確定区間が1つ特定されたことになる。
【0111】
図13のステップ642の結果、制御はステップ654に進み、発話確定区間の特徴量のシーケンスが音声認識エンジン272に送信される。ステップ656で発話確定状態が「非発話中状態」に更新される。
【0112】
《2回目以降の発話開始位置検出まで》
この場合、1回目の発話開始位置検出までと概略同じ処理が実行される。すなわち、図13に示す処理でステップ640及び642の処理がされた後、ステップ642の判定によって発話区間判定処理では何もされない。
【0113】
《2回目以降の発話開始位置検出時》
この場合にも、1回目の発話開始位置検出時と概略同じ処理が実行される。ただし、図13のステップ644の処理が実行され、その結果、ステップ648の処理が実行される可能性があること、及びステップ650で発話確定区間の特徴量が音声認識エンジン272に実際に送信される点が異なる。
【0114】
発話棄却判定では、図20のステップ830の判定が肯定的となり、ステップ832の処理(図21)の処理が実行される。その後、ステップ834の処理も実行される。
【0115】
図21を参照して、前に特定された発話確定区間の各々について、ステップ850〜860の処理が繰返し実行される。新たに実行されたクラスタリング処理の結果、ステップ860の判定が肯定的となった場合には、ステップ868でこの発話確定区間を棄却しないことが決定される(非棄却)。そうでなく、ステップ852の判定が肯定的となった場合には、この発話確定区間は棄却される。
【0116】
再び図13を参照して、ステップ644の判定の結果、前発話区間の一部に棄却すべきものがある場合、ステップ646の判定が肯定的となり、ステップ648で音声認識エンジン272に対してリセット信号が出力される。続いてステップ650で、残った発話確定区間の特徴量を音声認識エンジン272に送信し、ステップ652で発話確定状態を「発話中」に変更する。
【0117】
《2回目以降の発話開始位置検出から発話終了位置検出まで》
この場合は、1回目の発話開始位置検出から発話終了位置検出までと同じ処理が実行される。
【0118】
《2回目以降の発話終了位置検出時》
この場合も、1回目の発話終了位置検出と同じ処理が実行される。
【0119】
こうした処理が繰返し実行されていく。ユーザが発話終了の印としてマイクロフォン194のスイッチ260を操作すると、上記した処理は中止される。
【0120】
上記実施の形態では、発話のクラスタリング開始条件が充足された後、所定時間間隔で全発話データのフレームの音声パワーをクラスタリングする処理を繰返し、各フレームのクラスタリグレベルに基づいて、発話区間の確定と棄却とを繰返して行なう。例えば発話開始の直前に雑音レベルの比較的高い領域があり、クラスタリングの初期に発話区間に分類されたとしても、後続する実際の発話区間の音声パワーが大きいことによって、クラスタリングの繰返しのうちにそれら雑音のクラスタレベルは低くなる。その結果、いずれそれら雑音により生じた発話区間は棄却され、正しい発話区間のみを精度良く抽出できるようになることが期待できる。実際、上記実施の形態にしたがって構築したシステムでは、従来技術と比較して雑音区間を発話区間として誤検出してしまう頻度が低くなり、後続の音声認識の精度を高めることができた。
【0121】
さらに、上記実施の形態では、各種のしきい値(クラスタ数、発話開始クラスタレベルのしきい値、最短発話時間、最短無音時間、発話終了クラスタレベル、発話終了と判定するための非発話フレーム数のしきい値、及び発話状態と判定するためのクラスタ比率しきい値、フレームのシフト長及びフレーム長を設定記憶部432に設定できる。そのため、音声認識システムが設置される環境にあわせて発話区間検出装置270を最適化できる。
【0122】
なお、上記実施の形態では、発話区間検出装置270に音声信号300がマイクロフォン194から与えられる例を説明した。しかし、本発明がそのような実施の形態には限定されず、何らかの形で音声データが発話区間検出装置270に与えられれば十分であることは明らかである。例えば遠隔地の携帯電話等において音声を収集し、符号化して発話区間検出装置270を持つサーバに送信してくるような実施の形態も考えられる。単に音声をデジタル化して発話区間検出装置270に送信してくるものでもよい。要は、各フレームについて音声パワーと特徴量とが得られる様なデータであれば、どのような形で発話区間検出装置270に音声データが与えられるものであってもよい。
【0123】
今回開示された実施の形態は単に例示であって、本発明が上記した実施の形態のみに制限されるわけではない。本発明の範囲は、発明の詳細な説明の記載を参酌した上で、特許請求の範囲の各請求項によって示され、そこに記載された文言と均等の意味及び範囲内での全ての変更を含む。
【符号の説明】
【0124】
80、100、120 音声信号
150 コンピュータシステム
160 コンピュータ
194 マイクロフォン
250 音声認識システム
270 発話区間検出装置
306 特徴量のシーケンス
308 リセット信号
430 前段階処理部
432 設定記憶部
434 発話区間記憶部
436 発話区間検出部
456 クラスタリング開始位置判定部
490 クラスタリング処理部
492 発話状態判定部
494 発話開始・終了判定部
496 発話区間棄却処理部
498 繰返制御部

【特許請求の範囲】
【請求項1】
音声信号のフレームのシーケンスを受け、当該シーケンス内の発話区間を検出するための発話区間検出装置であって、
受信したシーケンスの中で発話開始位置である可能性の高いフレームを検出し、検出信号を出力する検出手段と、
前記検出手段により出力された前記検出信号に応答して、前記フレームのシーケンスのうち、前記検出信号に対応するフレームより前の所定位置までのフレームから、最新に受信したフレームまでを、各フレームの音声パワーの値に基づいて繰返しクラスタリングする処理を開始し、繰返しごとに、音声パワーの値の大きさに応じたクラスタレベルを各フレームについて算出するためのクラスタリング手段と、
前記クラスタリング手段によるクラスタリングの繰返しと所定の関係を持ったタイミングで、前記クラスタリング手段により各フレームについて算出されたクラスタレベルのシーケンスに基づいて発話開始位置及び発話終了位置を検出する処理を繰返し行なう、クラスタレベルによる発話区間検出手段とを含む、発話区間検出装置。
【請求項2】
前記検出手段は、
所定個数のフレームを新たに受信するごとに、受信した前記シーケンスのうち、最新に受信したフレームから遡って所定の時間だけ前までの時間窓内のフレームの音声パワーの分散を算出するための分散算出手段と、
前記分散算出手段により算出された分散が予め定められたしきい値以上となったことに応答して、前記検出信号を出力するための検出信号出力手段とを含む、請求項1に記載の発話区間検出装置。
【請求項3】
前記所定個数は1個である、請求項2に記載の発話区間検出装置。
【請求項4】
前記検出信号に応答して、前記検出手段の動作を停止させるための手段をさらに含む、請求項1〜請求項3のいずれかに記載の発話区間検出装置。
【請求項5】
前記発話区間検出手段は、
前記クラスタリング手段によるクラスタリングの繰返しが所定回数だけ行われるごとに、当該所定回数の間に受信されたフレームの各々に対し、前記クラスタリング手段により算出されたクラスタレベルを所定のしきい値と比較することにより、各フレームが発話中フレーム及び非発話中フレームのいずれであるかを判定するための発話中フレーム判定手段と、
前記発話中フレーム判定手段により判定された発話中フレーム及び非発話中フレームのシーケンスに基づいて、発話開始位置及び発話終了位置を判定するための発話開始位置及び発話終了位置判定手段とを含む、請求項1〜請求項4のいずれかに記載の発話区間検出装置。
【請求項6】
前記発話中フレームは、クラスタレベルが前記しきい値以上であるフレームであり、
前記非発話中フレームは、クラスタレベルが前記しきい値未満であるフレームである
前記発話開始位置及び発話終了位置判定手段は、
発話の状態を記憶するための発話状態記憶手段を含み、
前記発話区間検出装置による発話区間の検出の開始時に前記発話状態記憶手段に記憶される発話の状態は前記非発話中状態であり、
前記発話の状態は、少なくとも、
発話のない状態である非発話中状態と、
発話中である発話中状態と、を含み、
前記発話中フレーム判定手段は、
前記発話中状態において、各フレームのクラスタレベルが第1のしきい値以上か否かに基づいて各フレームを発話中フレームと非発話中フレームとに分類する第1の分類手段と、
前記非発話中状態において、各フレームのクラスタレベルが前記第1のしきい値以下である第2のしきい値以上か否かに基づいて各フレームを発話中フレームと非発話中フレームとに分類する第2の分類手段とを含む、請求項5に記載の発話区間検出装置。
【請求項7】
前記発話開始位置及び発話終了位置判定手段は、さらに、
前記発話状態記憶手段に記憶された発話の状態が前記非発話中状態であるときに、前記発話中フレーム判定手段により出力される連続する発話中フレームの数をカウントする第1の発話中フレームカウント手段と、
前記第1の発話中フレームカウント手段によるカウントが予め定められた最短発話時間以上となったことに応答して、発話の状態を発話中状態に設定し、前記連続する発話中フレームの先頭フレーム以前の所定位置のフレームを発話開始位置として決定する発話開始位置決定手段と、
前記発話状態記憶手段に記憶された発話の状態が前記発話状態であるときに、前記発話中フレーム判定手段により判定される連続する非発話中フレームの数をカウントする第1の非発話中フレームカウント手段と、
前記第1の非発話中フレームカウント手段によるカウントが発話終了と判定するためのしきい値より大きくなったことに応答して、発話の状態を非発話中状態に設定し、前記連続する非発話中フレームの最後のフレーム以後の所定位置のフレームを発話終了位置に決定する発話終了位置決定手段とを含む、請求項6に記載の発話区間検出装置。
【請求項8】
前記発話開始位置及び発話終了位置判定手段は、さらに、
前記発話状態記憶手段に記憶された発話の状態が前記非発話中状態であるときに、前記発話中フレーム判定手段により出力される連続する非発話中フレームの数をカウントする第2の非発話中フレームカウント手段と、
前記第2の非発話中フレームカウント手段によるカウントが、予め設定された、最短無音時間に相当する数以上となったことに応答して、前記第1の発話中フレームカウント手段によるカウントをクリアするための発話中フレームカウントクリア手段とを含む、請求項7に記載の発話区間検出装置。
【請求項9】
前記発話開始位置及び発話終了位置判定手段は、さらに、前記発話状態記憶手段に記憶された発話の状態が前記発話状態であるときに、前記発話中フレーム判定手段により発話中フレームと判定されたフレームがあったことに応答して、前記第1の非発話中フレームカウント手段によるカウントをクリアするための非発話中フレームカウントクリア手段を含む、請求項7又は請求項8に記載の発話区間検出装置。
【請求項10】
さらに、
前記発話区間検出手段により検出された発話区間を記憶するための発話区間記憶手段と、
前記クラスタリング手段によるクラスタリングが実行されたことに応答して、クラスタリング後のクラスタレベルを用いて、前記発話区間記憶手段に記憶された発話区間の各々について棄却すべきか否かを判定するための棄却判定手段とを含む、請求項1〜請求項9のいずれかに記載の発話区間検出装置。
【請求項11】
コンピュータを、
受信した音声信号のフレームのシーケンスの中で発話開始位置である可能性の高いフレームを検出し、検出信号を出力する検出手段と、
前記検出手段により出力された前記検出信号に応答して、前記フレームのシーケンスのうち、前記検出信号に対応するフレームより前の所定位置までのフレームから、最新に受信したフレームまでを、各フレームの音声パワーの値に基づいて繰返しクラスタリングする処理を開始し、繰返しごとに、音声パワーの値の大きさに応じたクラスタレベルを各フレームについて算出するためのクラスタリング手段と、
前記クラスタリング手段によるクラスタリングの繰返しと所定の関係を持ったタイミングで、前記クラスタリング手段により各フレームについて算出されたクラスタレベルのシーケンスに基づいて発話開始位置及び発話終了位置を検出する処理を繰返し行なう、クラスタレベルによる発話区間検出手段として機能させる、発話区間検出プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate


【公開番号】特開2013−114024(P2013−114024A)
【公開日】平成25年6月10日(2013.6.10)
【国際特許分類】
【出願番号】特願2011−260005(P2011−260005)
【出願日】平成23年11月29日(2011.11.29)
【特許番号】特許第4959025号(P4959025)
【特許公報発行日】平成24年6月20日(2012.6.20)
【出願人】(307041344)株式会社ATR−Trek (2)
【Fターム(参考)】