【実施例1】
【0021】
図1は、本発明の実施例1を示し、音声認識装置100の一例を示すブロック図である。音声認識装置100は、プロセッサ1と、メモリ2と、ストレージ装置3と、入力装置4と、出力装置5と、ネットワークインタフェース6を含む計算機で構成される。
【0022】
メモリ2には、前処理部10と、特徴量算出部20と、学習部30と、認識部40がプログラムとしてロードされ、プロセッサ1によって実行される。ストレージ装置3には、各プログラムが利用するデータ等が格納され、本実施例1では、学習用音声データ31と、認識用音声データ32と、音響モデル33と、言語モデル34が格納される。
【0023】
入力装置4は、マウスやキーボードあるいはタッチパネルなどで構成される。出力装置5は、ディスプレイなどで構成される。ネットワークインタフェース6は、図示しないネットワークに接続される。
【0024】
前処理部10は、学習部30や認識部40へ入力するデータを、音声データと発話順序情報に分離する。学習部30は、学習用音声データ31を入力して特徴量算出部20で音声特徴量を算出し、当該音声特徴量をニューラルネットワークで学習し、音響モデル33を生成する。ニューラルネットワークとしては、例えば、RNN(Recurrent Neural Network)やLSTM(Long short−term memory)を用いることができる。
【0025】
また、音響モデル33は、ニューラルネットワークによって算出されたHMM(Hidden Markov Model:隠れマルコフモデル)の各状態の出力確率分布を含む。なお、音響モデル33は、DNN(Deep Neural Network:ディープニューラルネットワーク)であってもよい。
【0026】
認識部40は、認識用音声データ32を入力して特徴量算出部20で音声特徴量を算出し、音響モデル33を用いて音素の確率を出力する。認識部40は、さらに各音素の確率と、言語モデル34から算出される言語スコアを用いて、最も確率の高い単語列を認識結果のテキストとして出力する。
【0027】
学習部30及び認識部40で利用される特徴量算出部20は、例えば、入力された認識用音声データ32をFFTで処理し、FFTの処理結果に基づいてMFCC(Mel Frequency Cepstral Coefficient:メル周波数ケプストラム係数)を計算し、所定の時間区間(例えば、10msec)の単位(フレーム)で差分を算出して音声特徴量とすることができる。なお、音声データの特徴量については、上記に限定されるものではなく周知または公知の手法を適用すれば良い。
【0028】
学習用音声データ31は、後述するように複数の話者の音声を混合(または合成)した音声データと、発話(話者)の順序と発話の内容(書き起こしデータ)を特定した発話順序情報を含む学習用データである。認識用音声データ32は、複数の話者の音声が混在する音声データである。
【0029】
音響モデル33は、ニューラルネットワークで算出された音素の出力確率分布を含む数学モデルである。言語モデル34は、音素や単語等のシンボル系列で構成される。
【0030】
前処理部10と、特徴量算出部20と、学習部30と、認識部40の各機能部はプログラムとしてメモリ2にロードされる。
【0031】
プロセッサ1は、各機能部のプログラムに従って処理することによって、所定の機能を提供する機能部として稼働する。例えば、プロセッサ1は、学習プログラムに従って処理することで学習部30として機能する。他のプログラムについても同様である。さらに、プロセッサ1は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
【0032】
音声認識装置100の各機能を実現するプログラム、テーブル等の情報は、ストレージ装置3や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
【0033】
図2は、音声認識装置100の学習処理の一例を示す図である。本実施例1では、予め学習用音声データ31を生成してストレージ装置3に格納しておく例を示す。
【0034】
まず、学習用音声データ31の生成について説明する。学習用音声データ31は、複数の話者の発話を合成した音声データである。図示の例では、話者1の発話「こんにちは」(S1)と、話者2の発話「ありがとう」(S2)と、話者3の発話「元気ですか?」(S3)の音声データを合成して、学習用音声データ31とする。また、各発話の合成は、音声データの足し合わせによって行えば良い。
【0035】
次に、合成された学習用音声データ31の発話始端を検出して、発話(S1〜S3)の順序と発話のテキスト(書き起こしデータ)を発話順序情報D2として生成する。図示の例では、発話(S1)が順序=1、発話(S2)が順序=2、発話(S3)が順序=3となった例を示す。学習用音声データ31は、複数の発話が合成された音声データに発話順序情報D2が付加されてストレージ装置3に予め格納される。なお、発話始端とは、合成前の音声データに対し各時間フレームでの音量を求め、当該音量が一定時間、一定音量を上回る時刻を検出することにより検出した発話(単語)の開始位置または開始時刻を示す。ただし必ずしもこの方法によらず、発話(単語)の開始位置または開始時刻が検出できていればよい。さらに、学習用音声データ31に対し人間の聴取により付与しておいた発話時刻情報を、あらかじめ学習用音声データ31と紐づけて保存しておき、当該発話時刻情報を呼び出す方法でも構わない。
【0036】
学習処理を行う際には、まず、前処理部10が学習用音声データ31をストレージ装置3から読み込んで、合成された音声データと発話順序情報D2を学習部30へ入力する。
【0037】
学習部30は、学習用音声データ31の合成された音声データを特徴量算出部20へ入力して、所定の時間区間(フレーム)毎に音声特徴量D1を算出する。音声特徴量D1は、例えば、数百次元の特徴量ベクトルで構成される。
【0038】
学習部30は、特徴量算出部20で算出された音声特徴量D1を取得すると、当該音声特徴量D1と、発話順序情報D2をニューラルネットワーク50で学習し、複数の話者と発話順序の音響モデル33を生成する。学習部30は、生成された音響モデル33をストレージ装置3に格納する。
【0039】
本実施例1の音響モデル33は、話者1の音声特徴量に反応するモデルと、話者2の音声特徴量に反応するモデルと、話者3の音声特徴量に反応するモデルを内包する。音響モデル33に内包される話者の数は、発話順序情報D2の発話(話者)の数に対応する。
【0040】
図3は、学習処理の一例を示すフローチャートである。このフローチャートは、音声認識装置100の利用者が、入力装置4を操作して学習の開始を指示したときに実行される。
【0041】
まず、前処理部10が、学習用音声データ31をストレージ装置3から読み込んで(S101)、学習用音声データ31から合成された音声データと発話順序情報D2を分離する(S102)。
【0042】
前処理部10は、合成された音声データと発話順序情報D2を学習部30へ入力する。学習部30は、合成された音声データを特徴量算出部20に入力して音声特徴量D1を計算させる(S103)。特徴量算出部20は、所定のフレーム単位で音声特徴量D1を算出して学習部30に出力する。
【0043】
学習部30は、ニューラルネットワーク50を利用して音声特徴量D1と発話順序情報D2の学習を実施して(S104)、HMMの各状態の出力確率分布を含む音響モデル33を生成する。そして、学習部30は、音響モデル33をストレージ装置3へ格納する。生成された音響モデル33は、上述のように各話者を識別可能なモデルとなる。
【0044】
図4は、ニューラルネットワーク50の一例を示す図である。本実施例1のニューラルネットワーク50は、入力層51と、隠れ層52と、出力層53に加えてサブネットワーク60を含む。
【0045】
サブネットワーク60は、入力層61と、隠れ層62と、出力層63を含む。入力層61には発話順序情報D2が入力され、出力層63の出力は、隠れ層52の出力側に加えられる。ただし、必ずしも出力層63の出力と隠れ層52の出力は加算である必要はなく、例えば、出力層63の出力と隠れ層52の出力を掛け合わせるなど、深層学習手法で一般的な組み合わせであれば適用できる。また発話順序情報D2の入力としては、例えば予め規定した最大発話者数に応じた要数のベクトルで、発話順序に該当する要素を1、それ以外の要素を0とするようなベクトルを用いることが考えられる。
【0046】
ニューラルネットワーク50の入力層51には、音声特徴量D1が入力され、サブネットワーク60の発話順序情報D2を掛け合わせることで認識の際には出力層53に音素の確率が出力される。
【0047】
なお、上記では、隠れ層52、62を1層で構成する例を示したが、これに限定されるものではなく、所望の数の隠れ層を用いることができる。
【0048】
図5は、音声認識装置100で行われる音声認識処理の一例を示す図である。本実施例1では、複数の話者の音声を含む認識用音声データ32を予め生成してストレージ装置3に格納しておく例を示す。
【0049】
音声認識装置100の前処理部10は、認識用音声データ32をストレージ装置3から読み込む。また、前処理部10は、入力装置4を介して認識する話者の発話の順序D4を受け付ける。なお、発話の順序D4は、認識用音声データ32に付加するようにしても良い。
【0050】
前処理部10は、認識部40に認識用音声データ32と発話の順序D4を入力する。学習部30は、特徴量算出部20を用いて認識用音声データ32の音声特徴量(第2の音声特徴量)を所定のフレーム単位で算出する。特徴量算出部20は、上述したように、認識用音声データ32にFFTを実施し、さらにFFTの結果に基づいてMFCCを音声特徴量D3として算出し、認識部40に出力する。
【0051】
認識部40は、音響モデル33を読み込んで、認識用音声データ32の音声特徴量D3と発話の順序を受け付けて音響モデルの出力を計算する。具体的には、音響モデル33は、
図4のニューラルネットワーク50のように構成され、入力層51に認識用音声データ32の音声特徴量D3が入力され、サブネットワーク60の入力層61には発話の順序2が入力される。ニューラルネットワーク50は、サブネットワーク60の発話の順序を重みに掛け合わせることで、話者の発話に対応する音素の確率を出力する。
【0052】
認識部40は、出力された各音素の確率と、言語モデル34から算出される言語スコアを用いて、最も確率の高い単語列を認識結果のテキストとして出力する。
【0053】
図示の例では、複数の話者の音声を含む認識用音声データ32から、発話の順序D4=2で指定された話者の「ありがとう」の発話を分離して音声認識を実現することができる。
【0054】
図6は、音声認識処理の一例を示すフローチャートである。このフローチャートは、音声認識装置100の利用者が、入力装置4を操作して音声認識の開始を指示したときに実行される。
【0055】
まず、前処理部10が、複数の話者の音声を含む認識用音声データ32をストレージ装置3から読み込む(S111)。また、前処理部10は、発話の順序D4を受け付けて、音声認識の対象を特定する(S112)。
【0056】
前処理部10は、認識用音声データ32と発話の順序D4を認識部40へ入力する。認識部40は、特徴量算出部20に認識用音声データ32を入力して音声特徴量D3を計算させる(S113)。特徴量算出部20は、所定のフレーム単位で音声特徴量D3を算出して認識部40に出力する。
【0057】
認識部40は、音響モデル33を読み込んで、音声特徴量D3から発話の順序D4の話者に対応する音素の確率を計算する(S114)。認識部40は、さらに各音素の確率と、言語モデル34から算出される言語スコアを用いて、最も確率の高い単語列を認識結果のテキストとして出力する(S115)。
【0058】
上記の処理によって、複数の話者の音声を含む認識用音声データ32から、発話の順序D4で指定された話者の発話を分離して音声認識を実現することができる。さらに、発話の順序D4で指定する話者を変更することで、任意の話者の発話を認識することが可能となる。
【0059】
以上のように、本実施例1では、特徴量算出部20が、複数の発話を合成した学習用音声データ31の音声信号を周波数分析を用いて音声特徴量D1を算出し、さらに、前処理部10では複数の発話の順序と発話の内容(テキスト)を発話順序情報D2を取得し、学習部30は、音声特徴量D1と発話順序情報D2を入力としてニューラルネットワーク50に学習させて音響モデル33を生成する。
【0060】
複数の発話を含む認識用音声データ32の音声特徴量D3と、認識対象の発話の順序D4を指定して認識部40へ入力し、認識部40は、音響モデル33を利用して発話の順序D4で指定された話者の発話を認識して音素の確率を出力することができる。本実施例1の音声認識装置100では、発話の順序D4で指定する発話(話者)を変更することで、複数の発話を含む認識用音声データ32から所望の話者の発話を抽出する。これにより、複数の話者の音声を分離して音声認識を行うことが可能となる。
【実施例2】
【0061】
図7は、本発明の実施例2を示し、ニューラルネットワーク50の音声認識処理の一例を示す図である。本実施例2のニューラルネットワーク50は、前記実施例1の
図4に示したサブネットワーク60を削除したもので、その他の構成は前記実施例1と同様である。
【0062】
本実施例2では、ニューラルネットワーク50をパイプラインとして利用する例を示し、特徴量算出部20から得られた音声特徴量D3を1フレーム分ずつ入力し、発話の順序D4の話者の数に応じてループを繰り返す。なお、話者の数は、発話の順序D4に含まれる順序の最大値とする。なお、図中「Delay」は、予め設定した遅延時間(例えば、1フレーム分など)を示す。なお、ネットワーク構成はこの構成に限らず、深層学習で一般的に用いられるどのような構成を用いても良い。
【0063】
図示では、認識用音声データ32に話者が3人含まれる例を示し、認識部40は1回目の処理で話者1の音声認識結果を出力し、2回目の処理で話者2の音声認識結果を出力し、3回目の処理で話者3の音声認識結果を出力する例を示す。
【0064】
以上の処理によって、複数の話者の音声が含まれる認識用音声データ32から、複数の話者の発話を分離して認識することが可能となる。
【0065】
図8は、本発明の実施例2の変形例を示し、音声認識処理の一例を示すフローチャートである。
【0066】
前処理部10が、複数の話者の音声を含む認識用音声データ32をストレージ装置3から読み込む(S121)。また、前処理部10は、発話の順序D4の値を0に設定する(S122)。
【0067】
前処理部10は、認識用音声データ32と発話順序情報D2を認識部40へ入力する。認識部40は、特徴量算出部20に認識用音声データ32を入力して音声特徴量D3を計算させる(S123)。特徴量算出部20は、所定のフレーム単位で音声特徴量D3を算出して認識部40に出力する。
【0068】
認識部40は、発話の順序D4の値に1を加算する(S124)。認識部40は、音響モデル33と言語モデル34を用いて発話の順序D4に該当する話者の音声を音声特徴量D3から認識する(S25)。
【0069】
認識部40は、音声認識の結果の有無を判定し(S126)、音声認識の結果が算出されなければ処理を終了し、音声認識の結果が算出された場合には、ステップS124へ戻って、次の話者について上記処理を繰り返す。
【0070】
上記処理によって、認識結果が出力されなくなるまで音声認識処理を繰り返すことにより、認識用音声データ32に含まれる全て(N人)の話者の発話を分離して認識することができる。
【実施例3】
【0071】
図9は、本発明の実施例3を示し、音声認識装置100を用いた音声認識システムの一例を示すブロック図である。
【0072】
本実施例3の音声認識システムでは、前記実施例1に示した音声認識装置100の一部を変更して、サービスロボット200−1、200−2の対話処理を制御する例を示す。サービスロボット200−1と200−2は、同一の空間に配置されて、サービスロボット200−1は、利用者300−1と対話を行い、サービスロボット200−2は、利用者300−2と対話を行う。なお、以下では、サービスロボットを特定しない場合には、「−」以降を省略した符号「200」を使用する。利用者の符号についても同様である。
【0073】
サービスロボット200は、ネットワーク150を介して音声認識装置100に接続される。サービスロボット200は、図示はしないが制御装置とマイクとスピーカを含み、利用者300の発話をマイクで取得して音声認識装置100へ送信し、音声認識を実行する。なお、音声認識の結果は、図示しない対話装置に送信され、対話装置は利用者300の発話に対する応答を生成してサービスロボット200へ送信する。サービスロボット200は、受信した応答をスピーカから出力する。
【0074】
複数のサービスロボット200が、同一の空間に配置されて対話サービスを提供する場合、サービスロボット200−1が利用者300−1の発話を聴取しているときに、近傍で稼働するサービスロボット200−2が発話すると、サービスロボット200−2の発話がサービスロボット200−1のマイクへ入力される。
【0075】
サービスロボット200−1のマイクが取得した音声データは、利用者300−1の発話とサービスロボット200−2の発話が合成された音声データとなる。音声認識装置100は、利用者300−1の発話について音声認識を行う必要があるが、サービスロボット200−2の発話を音声認識する必要はない。
【0076】
そこで、本実施例3では、音声認識の対象から除外する話者の音声から除外対象の話者特徴量を算出し、ニューラルネットワーク50で学習させる例を示す。
【0077】
図10は、実施例3の音声認識装置100の一例を示すブロック図である。音声認識装置100は、前記実施例1の
図1の構成に話者特徴量算出部25を加えたもので、その他の構成は前記実施例1と同様である。
【0078】
話者特徴量算出部25は、音声認識の対象から除外する話者の音声データを入力として、除外対象の話者特徴量D5を算出する。除外対象の話者特徴量D5としては、例えば、iVectorを利用することができる。なお、iVectorは、DEHAK, Najim, 他著の、「Front-end factor analysis for speaker verification」として知られている。
【0079】
本実施例3では、iVectorを利用する例を示すが、これに限定されるものではなく、2つの話者特徴量の距離(ベクトル間距離、例えばコサイン距離など)を比較することで、話者特徴量の抽出元となる2つの音声波形が同一話者のものか否かを判定できるような話者の特性を表す特徴量であればよい。
【0080】
図11は、実施例3の学習部30で行われる学習処理の一例を示す図である。特徴量算出部20には、前記実施例1と同様に、複数の発話が合成された学習用音声データ31を入力して、所定のフレーム毎に音声特徴量D1を算出する。
【0081】
一方、話者特徴量算出部25は、音声認識の対象から除外する話者の音声データS5を入力として、除外対象の話者特徴量D5を上述のiVectorによって算出する。そして、学習部30は、音声特徴量D1をニューラルネットワーク50の入力層51へ入力し、除外対象の話者特徴量D5をサブネットワーク60の入力層61へ入力して、音響モデル33の学習を実施する。
【0082】
学習の結果として生成される音響モデル33は、除外対象以外の話者の音声について認識を実施することができる。
【0083】
音声認識処理では、まず、音声認識装置100が、サービスロボット200から取得した複数の話者の音声を含む認識用音声データ32を取得し、認識部40が特徴量算出部20で音声特徴量D1を算出させる。さらにサービスロボット200が発話した音声データを、話者特徴量算出部25へ入力して話者特徴量D5を生成する。
【0084】
認識部40は、音響モデル33を読み込んで、サービスロボット200が取得した複数の話者の音声を含む認識用音声データ32の音声特徴量D1と除外話者の話者特徴量D5を入力として音声認識を実施する。認識部40は、話者特徴量D5に対応するサービスロボット200の発話を除外して、利用者300の発話について音声認識を実施することができる。
【0085】
以上のように、本実施例3によれば、音声認識の不要な音源を除外対象の話者特徴量D5としてニューラルネットワーク50に学習させることで、認識部40は、複数の話者の発話が合成された音声データから対象の話者の音声を分離して音声認識を行うことが可能となる。
【0086】
<まとめ>
なお、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明を分かりやすく説明するために詳細に記載したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施例の構成の一部を他の実施例の構成に置き換えることが可能であり、また、ある実施例の構成に他の実施例の構成を加えることも可能である。また、各実施例の構成の一部について、他の構成の追加、削除、又は置換のいずれもが、単独で、又は組み合わせても適用可能である。
【0087】
また、上記の各構成、機能、処理部、及び処理手段等は、それらの一部又は全部を、例えば集積回路で設計する等によりハードウェアで実現してもよい。また、上記の各構成、及び機能等は、プロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、メモリや、ハードディスク、SSD(Solid State Drive)等の記録装置、または、ICカード、SDカード、DVD等の記録媒体に置くことができる。
【0088】
また、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしも全ての制御線や情報線を示しているとは限らない。実際には殆ど全ての構成が相互に接続されていると考えてもよい。
【0089】
<補足>
特許請求の範囲に記載した以外の本発明の観点の代表的なものとして、次のものがあげ
られる。
【0090】
<9>
プロセッサとメモリを有する計算機で音声の認識を行う音声認識方法であって、
前記計算機が、複数の話者の音声が混合された第1の音声データから第1の音声特徴量を算出する第1のステップと、
前記計算機が、認識対象外の話者の音声データから話者の特性を表す話者特徴量を算出する第2のステップと、
前記計算機が、前記第1の音声特徴量と前記話者特徴量に基づいて音響モデルを学習する第3のステップと、
を含むことを特徴とする音声認識方法。
【0091】
<10>
上記<9>に記載の音声認識方法であって、
前記計算機が、複数の話者の音声が混合された第2の音声データから第2の音声特徴量を算出する第4のステップと、
前記計算機が、前記音響モデルを用いて前記第2の音声特徴量と前記話者特徴量に基づいて音声認識を実施する第5のステップと、
をさらに含むことを特徴とする音声認識方法。