(57)【特許請求の範囲】
【請求項１】
出力確率分布として無相関正規分布を用いたＨＭＭの出力確率の計算方法において、ある時刻における入力ベクトルをＹ（Ｙはｎ次元の成分を有し、ｎは正の整数である）、状態ｉからｊの場合のｋ次元（ｋは１からｎのいずれかの自然数）における分散をσｉｊ（ｋ）、状態ｉからｊの場合のｋ次元における平均値μｉｊ（ｋ）としたとき、前記出力確率を求める計算式が、
【数１】
0003932789.tif 000008
で与えられ、この式の両辺を対数をとり、
【数２】
0003932789.tif 000009
で表した場合、（２）式の〔｛ｙk−μｉｊ（ｋ）｝2〕／２σ2ｉｊ（ｋ）・ｌｏｇxｅでなる計算項の計算量を少なくするＨＭＭの出力確率計算方法であって、前記入力ベクトルＹの各次元の値を代表値のコードの集合として表すコードブックおよび１からｎの各次元のうち同じコード数を持つ次元同士をまとめた組ごとに作成され、前記組内に存在する各次元間の前記コードの組み合わせの全てと、前記組み合わせたコード群の各コードに対応する出力値の合計とを対応付けられてなるテーブルを作成し、前記各次元の値を前記コードブック内のコードに置換し、置換された前記コードに基づいて、前記テーブルを参照し、参照した前記テーブルから前記組み合わせに対応する前記合計を取得し、前記合計に基づいて出力確率を計算し、各次元内にある第一の次元と、前記各次元内にあって前記第一の次元より高次元の第二の次元に対し、前記第一の次元のコードブックのコード数を前記第二の次元のコードブックのコード数より密にすることを特徴とするＨＭＭの出力確率計算方法。
【請求項２】
入力音声信号に対し特徴分析を行い、ある時刻ごとの入力ベクトルと複数次元からなる成分を出力する特徴分析部と、前記特徴分析部からの各次元の成分を受け取ってスカラ量子化を行い、所定のコードに置き換えるスカラ量子化部と、前記コードにより、予め作成されたテーブルを参照することで出力値を得て、前記出力値を用いて出力確率を求めると共に、前記出力確率を用いて音声認識に必要な演算を行う演算処理部と、前記演算処理部で計算された結果に基づいて前記音声認識を行って音声認識結果を出力する音声認識処理部とを有する音声認識装置であって、前記テーブルは、１からｎ次元のうち同じコード数を持つ次元同士をまとめた組ごとに作成され、前記組内に存在する各次元間の前記コードの組み合わせの全てと、前記組み合わせの各コードに対応する出力値の合計とを対応付けられてなり、前記演算処理部は、前記組内に存在する各次元に対して選ばれた前記コードに基づいて前記テーブルを参照し、前記コードの組み合わせに対応した前記出力値の合計を取得して、前記出力値の合計に基づいて出力確率を計算すると共に、当該計算された出力確率を用いて音声認識に必要な演算を行い各次元内にある第一の次元と、前記各次元内にあって前記第一の次元より高次元の第二の次元に対し、前記第一の次元のコードブックのコード数を前記第二の次元のコードブックのコード数より密にすることを特徴とする音声認識装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は音声認識において用いられるＨＭＭ（隠れマルコフモデル）の出力確率を少ない計算量で高速に求めることを可能とするＨＭＭの出力確率計算方法および音声認識装置に関する。
【０００２】
【従来の技術】
音声認識を行うための音素モデルとしてＨＭＭが広く使われている。このＨＭＭは高い音声認識性能を得ることができる反面、計算量が多いのが難点である。特に、ＨＭＭの出力確率を求めるには多くの計算量を必要とする。ここで、ある時刻における入力ベクトルＹについて、状態ｉから状態ｊへ遷移する時の出力確率をｂij（Ｙ）で表し、無相関正規分布に従うとすれば、 ｂij（Ｙ）は前述の特許請求の範囲の項で示した（１）式で表すことができる。
【０００３】
このとき、入力ベクトルＹは、入力音声をある時刻（時刻ｔ１，時刻ｔ２，・・・）ごとに、たとえば２０msecというような長さで分析して得られたｎ次元（ｎは正の整数）の成分（ＬＰＣケプストラムなど）で表される。たとえば、時刻ｔ１，ｔ２，ｔ３，・・・における入力ベクトルをＹ１，Ｙ２，Ｙ３，・・・で表すとすれば、時刻ｔ１における入力ベクトルＹ１は（１ｙ１，１ｙ２，・・・、１ｙｎ）、 時刻ｔ２における入力ベクトルＹ２は（２ｙ１，２ｙ２，・・・、２ｙｎ）、 時刻ｔ３における入力ベクトルＹ３は（３ｙ１，３ｙ２，・・・、３ｙｎ）というように表される。
【０００４】
なお、上述の（１）式において、ｋはある時刻における入力ベクトルＹの成分の次元数を表し、１からｎのいずれかの値をとる。また、σij(k)は状態ｉからｊの場合のｋ次元における分散、μij(k)は状態ｉからｊの場合のｋ次元における平均値を表す。
【０００５】
【発明が解決しようとする課題】
上述した（１）式によって出力確率を求めることができるが、この（１）式をそのまま用いて計算すると、計算によって得られる値が小さくなりすぎてアンダーフローが起こる可能性がある。そこで、出力確率を求める際は、通常、対数化して求めることがなされている。上述の（１）式をｘを底とする対数として表せば、前述の（２）式のように表すことができる
この（２）式において、計算項Ａは、予め計算して求めておくことができるので、それを定数化してＡと表し、さらに、計算項Ｂに存在するlogxｅも定数として表すことができるので、 それをＺで表せば、（２）式は、
【０００６】
【数３】
0003932789.tif 000002
と表すことできる。
【０００７】
しかし、この（３）式においても計算量の多い計算項Ｂ’、つまり、〔｛ｙk−μij(k)｝2／２σij(k)2〕・Ｚが存在する。特に、この項Ｂ’は、ある時刻ｔにおける入力ベクトルＹの各次元ごとに計算する必要がある。たとえば、ある時刻ｔにおける入力ベクトルＹが１０次元（ｎ＝１０）の成分で構成されているとすれば、１０回の引き算、１０回の掛け算、１０回の割り算、１０回の足し算を行い、さらに、定数Ｚを掛け算する必要があり、これだけでもその計算量はきわめて多くなる。
【０００８】
特に、小型、軽量、安価な製品においては、使用されるハードウエアに大きな制約があるため、上述したようなＨＭＭを用いた音声認識を用いるには無理がある。
【０００９】
そこで本発明は、 ＨＭＭ（隠れマルコフモデル）の出力確率を求めるための計算の簡略化を図り、出力確率を高速に求めることを可能とし、ハードウエアの能力に大きな制約のあるシステムにもＨＭＭの適用を可能とすることを目的とする。
【００１０】
【課題を解決するための手段】
上述した目的を達成するために本発明のＨＭＭの出力確率計算方法は、出力確率分布として無相関正規分布を用いたＨＭＭの出力確率の計算方法において、ある時刻における入力ベクトルをＹ（Ｙはｎ次元の成分を有し、ｎは正の整数である）、状態ｉからｊの場合のｋ次元（ｋは１からｎのいずれかの自然数）における分散をσij(k)、状態ｉからｊの場合のｋ次元における平均値μij(k)としたとき、前記出力確率を求める計算式が、（１）式で与えられ、この（１）式の両辺を対数をとり、（２）のように表した場合、（２）式の〔｛ｙk−μij(k)｝2〕／２σij(k)2・logxｅでなる計算項の計算量を少なくするＨＭＭの出力確率計算方法であって、ある時刻における入力ベクトルＹの各次元ごとの値を代表値の集合として表すコードブックを作成し、前記ある時刻における入力ベクトルＹの各次元（１〜ｎ次元）ごとの値を前記コードブックに存在するあるコードで置換して、そのコードに基づいて、前記〔｛ｙk−μij(k)｝2〕／２σij(k)2・logxｅでなる計算項をテーブル参照で求める。そして、そのテーブルは、１からｎ次元のうち同じ組とすることのできる次元同志をまとめ、そのまとめられた組ごとに作成され、このそれぞれの組ごとのテーブルは、当該組に存在する各次元ごとに選ばれるそれぞれのコードに基づいて求められるそれぞれの出力値が、前記それぞれのコードの全ての組み合わせごとに合計の出力値として求められており、前記それぞれのコードの全ての組み合わせと、それによって得られる合計の出力値とが対応付けられてなり、ある組に対応するそれぞれの次元に対して選ばれたそれぞれのコードに基づいて前記テーブルを参照し、それぞれの次元に対するコードの組み合わせに対応した合計の出力値を取得して、その合計の出力値に基づいて出力確率を計算するようにしている。
【００１１】
このＨＭＭの出力確率計算方法において、前記同じ組とすることのできる次元同志のまとまりは、それぞれの次元におけるコード数を次元によって異ならせることができる場合、コード数の同じ次元同志を同じ組としてまとめるようにしている。
【００１２】
また、本発明の音声認識装置は、入力音声信号に対し特徴分析を行い、ある時刻ごとの入力ベクトルと複数次元からなる成分を出力する特徴分析部と、この特徴分析部からの各次元ごとの成分を受け取ってスカラ量子化を行い、所定のコードに置き換えるスカラ量子化部と、このスカラ量子化部によってコード化されたコードによって、予め作成されたテーブルを参照することで出力値を得て、その出力値を用いて出力確率を求めると共に、その出力確率を用いて音声認識に必要な演算を行う演算処理部と、この演算処理部で計算された結果に基づいて音声認識を行って認識結果を出力する音声認識処理部とを有する音声認識装置において、前記テーブルは、１からｎ次元のうち同じ組とすることのできる次元同志をまとめ、そのまとめられた組ごとに作成され、このそれぞれの組ごとのテーブルは、当該組に存在する各次元ごとに選ばれるそれぞれのコードに基づいて求められるそれぞれの出力値が、前記それぞれのコードの全ての組み合わせごとに合計の出力値として求められており、前記それぞれのコードの全ての組み合わせと、それによって得られる合計の出力値とが対応付けられてなる。そして、前記演算処理部は、ある組に対応するそれぞれの次元に対して選ばれたそれぞれのコードに基づいて前記テーブルを参照し、それぞれの次元に対するコードの組み合わせに対応した合計の出力値を取得して、その合計の出力値に基づいて出力確率を計算すると共に、当該計算された出力確率を用いて音声認識に必要な演算を行う。
【００１３】
このように本発明は、ＨＭＭの出力確率を求める計算の一部、特に計算量の多い部分をテーブル参照で求められるようにしているので、出力確率を求めるための演算を簡略化することができ、出力確率を高速にかつ少ない処理量で求めることを可能としている。これにより、処理能力の低いＣＰＵでも対応することができる。
【００１４】
また、本発明は、入力ベクトルの各次元を幾つかにまとめて、そのまとまりごとにテーブルを作成するようにしているので、テーブル数を少なくすることができ、それぞれのテーブルを参照することによって得られた値に対する後処理をより簡略化することができる。
【００１５】
また、次元同志のまとまりを作る際、各次元に対応するコードブック内のコード数の同じ次元同志を同じ組としてまとめるようにしている。これは、ある時刻の入力ベクトルがたとえば１０次元の成分を持つと仮定すれば、１次元や２次元といった次元の数値が小さい次元では、コードブックのコード数をある程度多く密に持つ必要があるが、８次元、９次元、１０次元というように数値が多くなるほどコードブックのコード数を疎とすることが可能となるというように、それぞれの次元におけるコード数を次元によって異ならせることができることを利用している。
【００１６】
たとえば、１次元と２次元に対するコードブックのコード数は１６個、３次元から６次元に対するコードブックのコード数はそれぞれ８個、７次元から１０次元に対するコードブックのコード数はそれぞれ４個というように、それぞれの次元によってコード数を変えることができる場合、１次元と２次元を１つのまとまりとして、それに対応するテーブルを作成し、３次元から６次元を１つのまとまりとして、それに対応するテーブルを作成し、７次元から１０次元を１つのまとまりとして、それに対応するテーブルを作成することができる。
【００１７】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。なお、この実施の形態で説明する内容は、本発明のＨＭＭの出力確率計算方法および音声認識装置についての説明である。
【００１８】
本発明は、前述したように、ＨＭＭの出力確率を求めるための計算の簡素化を図ろうとするものである。すなわち、本発明は簡単にいえば、上述の（３）式において、計算項Ｂ’をテーブル化して、そのテーブルを参照することで計算項Ｂ’を求めることができるようにして、 ＨＭＭの出力確率の計算を簡素化しようとするものである。
【００１９】
以下、詳細に説明する。なお、この実施の形態では、各時刻ｔ１，ｔ２，ｔ３，・・・ごとの入力ベクトル（これをＹ１，Ｙ２，Ｙ３，・・・と表す）は、それぞれ１０次元の成分で構成されているものとする。たとえば、時刻ｔ１における入力ベクトルＹ１は１ｙ１，１ｙ２，・・・、１ｙｎ、 時刻ｔ２における入力ベクトルＹ２は２ｙ１，２ｙ２，・・・、２ｙｎ、時刻ｔ３における入力ベクトル Ｙ３は３ｙ１，３ｙ２，・・・、３ｙｎというような成分を有している。
【００２０】
まず、１から１０次元の各次元ごとにそれぞれの次元ごとの値を代表値の集合として表すコードブックを持つ。これを図１に示す。図１は時刻ｔ１における入力ベクトルＹ１のそれぞれの成分１ｙ１，１ｙ２，・・・，１ｙ１０に対応するコードブックを示すもので、１次元の成分１ｙ１に対しては、１Ｃ１，１Ｃ２，・・・，１Ｃｍのコードを有するコードブック１Ｃ、２次元においては、２Ｃ１，２Ｃ２，・・・，２Ｃｍのコードブック２Ｃ、３次元においては、３Ｃ１，３Ｃ２，・・・，３Ｃｍのコードブック３Ｃ、１０次元においては、１０Ｃ１，１０Ｃ２，・・・，１０Ｃｍのコードブック１０Ｃというように、それぞれの次元ごとのコードブック１Ｃ，２Ｃ，・・・，１０Ｃを持つ。
【００２１】
なお、ここで各コードブックのサイズを６４とすれば、それぞれのコードブックにおけるｍは６４となり、それぞれ６４個のコードを有することになる。ただし、実際には、全ての次元が同じコード数を持つ必要はなく、それぞれの次元ごとにコード数を変えることができる。
【００２２】
このように、各次元対応のコードブックを持つことによって、時刻ｔ１，ｔ２，・・・，ｔｎのある時刻における入力ベクトルＹ１，Ｙ２，・・・，Ｙｎのそれぞれの１０次元の成分は、それぞれの次元ごとのコードブック内に存在するいずれかのコードに置き換えることができる。
【００２３】
たとえば、時刻ｔ１における入力ベクトルＹ１における１次元目の値は、コードブック１Ｃの中から最も近い値を選ぶことにより、その選ばれた値に置き換えることができ、同じく入力ベクトルＹ１における２次元目の値は、コードブック２Ｃの中から最も近いを選ぶことにより、その選ばれた値に置き換えることができる。
【００２４】
同様にして、時刻ｔ２の入力ベクトルＹ２における１次元目２ｙ１の値も、コードブック１Ｃの中から最も近い値を選ぶことにより、その選ばれた値に置き換えることができるというように、各時刻における入力ベクトルのそれぞれの次元の成分は、それぞれ対応するコードブック内のｍ個のコードのいずれかに置き換えることができる。
【００２５】
そして、このようにそれぞれのコードブックの中のいずれかのコードに置き換えられると、（３）式は以下のように表すことができる。
【００２６】
【数４】
0003932789.tif 000003
この（４）式において、ｋＣｃは置き換えられたコードを示すもので、ｋは次元を表し、１からｎまでの次元があるとすれば、ｋは１からｎのいずれかの値を取り、ｃはコード番号を表しコードブックサイズがｍ個であれば１からｍのいずれかの値をとる。
【００２７】
この（４）式の計算項Ｄは、各次元ごとの値として予め求めておくことができ、それによって出力テーブルを作成する。すなわち、（４）式における計算項Ｄは、「σij(k)」、「μij(k)」、「ｋＣｃ」、「Ｚ」からなり、「σij(k)」は前述したように、状態ｉからｊの場合のｋ次元における分散、μij(k)は状態ｉからｊの場合のｋ次元における平均値を表すもので、予め計算して求めておくことが可能であり、Ｚは定数化されている。また、ｋＣｃはそれぞれの次元ごとのコードブック１Ｃ，２Ｃ，・・・，ｎＣに存在するコードであるのでそれを用いることができる。
【００２８】
これら各次元ごとの「σij(k)」、「μij(k)」、定数化されている「Ｚ」を用い、かつ、その次元に対するコードブックに存在するｍ個のコードを用いて計算項Ｄを計算しておくことができる。たとえば、コードブック１Ｃ内の各コード１Ｃ１〜１Ｃｍ（ｍ＝６４）をそれぞれ用い、（４）式の計算項Ｄを予め計算しておくことによって、各コード１Ｃ１から１Ｃｍのそれぞれに対する計算項Ｄの計算結果（これをここでは出力値と呼ぶ）を得ることができ、それをテーブル化する（これを１次元のテーブルＴ１という）。
【００２９】
また、コードブック２Ｃ内の各コード２Ｃ１〜２Ｃｍ（ｍ＝６４）をそれぞれ用い、（４）式の計算項Ｄを予め計算しておくことによって、各コード２Ｃ１から２Ｃｍのそれぞれに対する計算項Ｄの出力値を得ることができ、それをテーブル化する（これを２次元のテーブルＴ２という）。
【００３０】
このようにして、１〜ｎの各次元に対応したｎ個の出力テーブル（Ｔ１〜Ｔｎ）が作成され、これら各テーブルＴ１〜Ｔｎは、１〜ｎの各次元ごとにｍ個のコードに対応したｍ個の出力値を持つことになる。
【００３１】
したがって、ある時刻における入力ベクトルＹが得られて、その入力ベクトルＹの各次元ごとの成分が得られれば、各次元ごとのスカラ量子化されたコードが得られ、そのコードに基づいてその次元に対応するテーブルを参照すれば（４）式の計算項Ｄが求められることになる。
【００３２】
たとえば、ある時刻ｔ１における入力ベクトルＹ１の１次元目の成分１ｙ１に対し、コード１Ｃ３が選ばれたとすると、そのコード１Ｃ３を用いて１次元のテーブルＴ１を参照することにより、計算項Ｄにおける１次元目の出力値が求められることになり、同様に、ある時刻ｔ１における入力ベクトルＹ１の２次元目の成分１ｙ２に対し、コード２Ｃ１６が選ばれたとすると、そのコード２Ｃ１６を用いて２次元のテーブルＴ２を参照することにより、計算項Ｄにおける２次元目の出力値が求められることになる。
【００３３】
これを図２により説明する。同図（ａ）に示すように、ある時刻ｔ１における入力ベクトルＹ１の１次元目の成分を１ｙ１とし、この１ｙ１によってコードブック１Ｃからコード１Ｃ３が選ばれたとする。そして、このコード１Ｃ３によって、１次元の出力テーブルＴ１を参照することで、出力値１Ｏ３を得る。この出力値１Ｏ３は、（４）式の計算項Ｄから予め求められているものである。
【００３４】
同様にして、同図（ｂ）に示すように、同じ入力ベクトルＹ１の２次元目の成分を１ｙ２とし、この１ｙ２によってコードブック２Ｃからコード１Ｃ１６が選ばれたとする。そして、このコード１Ｃ１６によって、２次元のテーブルＴ２を参照することで、出力値２Ｏ１６を得る。この出力値２Ｏ１６は、（４）式の計算項Ｄから予め求められているものである。
【００３５】
このようにしてｎ次元までそれを繰り返すことで、それぞれの次元ごとの出力値が得られる。そして、それぞれの次元ごとの出力値（ここでは、説明を簡単にするために、各次元ごとの出力値をＯ１，Ｏ２，Ｏ３，・・・，Ｏｎで表す）を足し算（ Ｏ１＋Ｏ２＋，・・・，＋Ｏｎ）する。このＯ１＋Ｏ２＋，・・・，＋Ｏｎ は（４）式の計算項Ｅの計算結果となるので、その足し算した結果を用いて（４）式全体を計算すれば、ある時刻の入力ベクトルＹの出力確率ｂij（Ｙ）が求められる。
【００３６】
以上のような処理を行うことにより、（４）式の項Ｅを得るのに必要な計算は、１つの次元について１回のコードブックを参照する処理と、その結果に基づいてテーブルＴ１〜Ｔｎのいずれかのテーブルを参照する処理を行い、得られた出力値を足し算すればよく、たとえば１０次元とした場合、それぞれの次元ごとの１０回のコードブック参照と、１０回のテーブル参照と、それによって得られた１０個の出力値を足し算するだけの処理ですむ。
【００３７】
以上は本発明を説明するための基本的な処理を説明するものであって、各次元ごとに作成されたテーブルＴ１〜Ｔｎを参照することにより（４）式の計算項Ｄを得て、それぞれに次元ごとの出力値を足し算することによって（４）式の計算項Ｅを得る。このような計算手法はすでに知られた方法であるが、本発明は、この考え方をさらに発展させたものであり、より効率よく少ない計算量で出力確率を求めることができるようにする。以下、本発明について説明する。
【００３８】
本発明は、前述した出力テーブルを個々の次元ごとに持つのではなく、１からｎの次元のうち同じ組とすることのできる次元同志をまとめ、そのまとめられた組ごとにテーブルをもつことに特徴がある。
【００３９】
図３は本発明の出力確率計算手順の概略を示すフローチャートであり、入力ベクトルの１からｎの次元のうち同じ組とすることのできる次元同志を幾つかにまとめて（ステップｓ１）、そのまとまりごとにテーブルを作成しておく（ステップｓ２）。そして、出力確率を計算する際は、入力ベクトルの１次元からｎ次元までの成分に対するコードを、対応するコードブックから順次得て（ステップｓ３）、それぞれのコードを基に、対応するテーブルを参照してテーブルごとの出力値を得る（ステップｓ４）。そして、そのテーブルごとの出力値を出力確率を求めるための計算式（前述の（４）式）に代入して出力確率を求める（ステップｓ５）。以下、詳細に説明する。
【００４０】
各時刻ごとの入力ベクトルのそれぞれの次元における成分をスカラ量子化したコードブックを生成する際、前述したように、それぞれの次元ごとにコード数を変えることができる。たとえば、各時刻の入力ベクトルが１０次元の成分を持つと仮定すれば、１次元や２次元といった次元の数値が小さい次元では、コードブックのコード数を密に持ち、８次元、９次元、１０次元というように次元の数値の大きな次元ではコードブックのコード数を疎とするようにしてもよい。
【００４１】
ここで、入力ベクトルが１０次元のＬＰＣケプストラム係数である場合、１つの例として、１次元に対するコードブックのコード数は１６個、２次元に対しても１６個、３次元に対するコードブックのコード数は８個、４次元に対しても８個、５次元、６次元に対してもそれぞれ８個、７次元に対するコードブックのコード数は４個、８次元に対しても４個、９次元、１０次元に対してもそれぞれ４個というように、それぞれの次元によってコード数を変えることができる。
【００４２】
したがって、それぞれのまとまりを生成する際、この場合、１次元と２次元がともに１６個のコード数、３次元から６次元がそれぞれ８個のコード数、７次元から１０次元がそれぞれ４個のコード数であるから、同じコード数ごとに次元をまとめると都合がよい。なお、説明の都合上、１次元と２次元のまとまりを第１の組Ｖ１、３次元〜６次元のまとまりを第２の組Ｖ２、７次元〜１０次元のまとまりを第３の組Ｖ３と呼ぶことにする。
【００４３】
そして、これら第１〜第３の組Ｖ１，Ｖ２，Ｖ３ごとにテーブル（第１のテーブルＴ１０、第２のテーブルＴ２０、第３のテーブルＴ３０）を作成する。
【００４４】
第１のテーブルＴ１０は、ある時刻における入力ベクトルＹにおける１次元の成分ｙ１に対してコードブック１Ｃの中から選ばれたあるコード（これを１Ｃｍとする）に対する出力値（これを１Ｏｍとする）と、同じ時刻の入力ベクトルＹの２次元の成分ｙ２に対してコードブック２Ｃの中から選ばれたあるコード（これを２Ｃｍとする）に対する出力値（これを２Ｏｍとする）とを足し算した結果（１Ｏｍ＋２Ｏｍ）が、コードブック１Ｃと２Ｃのそれぞれに存在する全てのコードの組み合わせに対応して格納されているものである。
【００４５】
つまり、コードブック１Ｃに存在する全てのコードに対して（４）式の計算項Ｄを求めておくとともに、コードブック２Ｃに存在する全てのコードに対して（４）式の計算項Ｄを求めておく。そして、コードブックＣ１とＣ２に存在するコードの全ての組み合わせに対するそれぞれの出力値１Ｏｍ＋２Ｏｍを予め計算しておく。これを図４によって具体的に説明する。
【００４６】
たとえば、時刻ｔ１における入力ベクトルＹ１の１次元の成分１ｙ１に対してコードブック１Ｃからコード１Ｃ３が選ばれ、同時刻における入力ベクトルＹ１の２次元の成分１ｙ２に対してコードブック２Ｃからコード２Ｃ１６が選ばれたとする。
【００４７】
このとき、コード１Ｃ３に対する（４）式の計算項Ｄ はすでに求められていてその出力値を１Ｏ３、コード２Ｃ１６に対する（４）式の計算項Ｄもすでに求められていてその出力値を２Ｏ１６とする。そして、これらの出力値の合計値「１Ｏ３＋２Ｏ１６」もすでに計算されていて（１Ｏ３＋２Ｏ１６＝Ｏ１とする）、その合計値は第１のテーブルＴ１０に格納されている。したがって、１次元の成分１ｙ１に対して選ばれたコード１Ｃ３と、２次元の成分１ｙ２に対して選ばれたコード２Ｃ１６とによって第１のテーブルＴ１０を参照すると、この場合、「１Ｏ３＋２Ｏ１６」、つまり、出力値として「Ｏ１」が読み出される。
【００４８】
これは他の組に対する出力テーブルも同じで、それぞれの組に属する次元ごとにその次元のコードブックに存在する全てのコードに対し、（４）式の項Ｄ がすでに求められていて、それぞれの組に属する次元ごとの全てのコードの組み合わせに対する合計の出力値が算出されている。
【００４９】
たとえば、図５に示すように、時刻ｔ１における入力ベクトルＹ１の３次元の成分１ｙ３に対してコードブック３Ｃからコード３Ｃ５が選ばれ、同時刻における入力ベクトルＹ１の４次元の成分１ｙ４に対してコードブック４Ｃからコード４Ｃ６が選ばれたとする。また、同時刻における入力ベクトルＹ１の５次元の成分１ｙ５に対してコードブック５Ｃからコード５Ｃ７が選ばれ、さらに、同時刻における入力ベクトルＹ１の６次元の成分１ｙ６に対してコードブック６Ｃからコード６Ｃ８が選ばれたとする。
【００５０】
このとき、コード３Ｃ５に対しては（４）式の計算項Ｄにより、その出力値として３Ｏ５が求められており、コード４Ｃ６に対しては（４）式の計算項Ｄにより、その出力値として４Ｏ６が求められており、コード５Ｃ７に対しては（４）式の計算項Ｄにより、その出力値として５Ｏ７が求められており、コード６Ｃ８に対しては（４）式の計算項Ｄにより、その出力値として６Ｏ８が求められているとする。
【００５１】
そして、３Ｏ５＋４Ｏ６＋５Ｏ７＋６Ｏ８もすでに計算されていて（ ３Ｏ５＋４Ｏ６＋５Ｏ７＋６Ｏ８＝Ｏ２とする）、その合計値は第２のテーブルＴ２０に格納されている。したがって、３次元の成分に対するコード３Ｃ５、４次元の成分に対するコード４Ｃ６、５次元の成分に対するコード５Ｃ７、６次元の成分に対するコード６Ｃ８によって、第２のテーブルＴ２０を参照すると、この場合、 「３Ｏ５＋４Ｏ６＋５Ｏ７＋６Ｏ８」、つまり、出力値として「Ｏ２」が読み出される。
【００５２】
さらに、図６に示すように、時刻ｔ１における入力ベクトルＹ１の７次元の成分１ｙ７に対してコードブック７Ｃからコード７Ｃ１が選ばれ、同時刻における入力ベクトルＹ１の８次元の成分１ｙ８に対してコードブック８Ｃからコード８Ｃ２が選ばれたとする。また、同時刻における入力ベクトルＹ１の９次元の成分１ｙ９に対してコードブック９Ｃからコード９Ｃ３が選ばれ、さらに、同時刻における入力ベクトルＹ１の１０次元の成分１ｙ１０に対してコードブック１０Ｃからコード１０Ｃ４が選ばれたとする。
【００５３】
このとき、コード７Ｃ１に対しては（４）式の計算項Ｄにより、その出力値として７Ｏ１が求められており、コード８Ｃ２に対しては（４）式の計算項Ｄにより、その出力値として８Ｏ２が求められており、コード９Ｃ３に対しては（４）式の計算項Ｄにより、その出力値として９Ｏ３が求められており、コード１０Ｃ４に対しては（４）式の計算項Ｄにより、その出力値として１０Ｏ４が求められているとする。
【００５４】
そして、７Ｏ１＋８Ｏ２＋９Ｏ３＋１０Ｏ４もすでに計算されていて（ ７Ｏ１＋８Ｏ２＋９Ｏ３＋１０Ｏ４＝Ｏ３とする）、その合計値は第３のテーブルＴ３０に格納されている。したがって、７次元の成分に対するコード７Ｃ１、８次元の成分に対するコード８Ｃ２、９次元の成分に対するコード９Ｃ３、１０次元の成分に対するコード１０Ｃ４によって、第３のテーブルＴ３０を参照すると、この場合、「 ７Ｏ１＋８Ｏ２＋９Ｏ３＋１０Ｏ４」、つまり、出力値として「Ｏ３」が読み出される。
【００５５】
以上のように、１から１０の次元を３つのまとまり（第１の組Ｖ１、第２の組Ｖ２、第３の組Ｖ３）に分けて、これら第１の組Ｖ１、第２の組Ｖ２、第３の組Ｖ３ごとにテーブル（第１のテーブルＴ１０、第２のテーブルＴ２０、第３のテーブルＴ３０）を持つようにしている。したがって、第１、第２、第３の組Ｖ１，Ｖ２，Ｖ３に属する次元のコードブックから選ばれたそれぞれの次元ごとのコードが対応するテーブルに入力されると、入力されたコード群の組み合わせに対応する合計の出力値が得られる。
【００５６】
これによって、たとえば、第１の組Ｖ１に対応するテーブルＴ１０からの出力値がＯ１、第２の組Ｖ２に対応するテーブルＴ２０からの出力値がＯ２、第３の組Ｖ３に対応するテーブルＴ３０からの出力値がＯ３であるとすれば、これら３つの出力値Ｏ１，Ｏ２，Ｏ３を合計することで、（４）式の計算項Ｅの計算が済むことになる。すなわち、（４）式の計算項Ｅを得るための処理としては、１０次元とした場合、１０回のコードブック参照と、３回のテーブル参照と、３回の足し算だけで済むことになり、大幅に演算量を減らすことができる。
【００５７】
そして、（４）式の計算項Ｅが求められれば、それを用いて（４）式全体を計算することによって、時刻ｔ１における入力ベクトルの状態ｉから状態ｊの出力確率を求めることができる。
【００５８】
このように、本発明によれば、出力確率を求める際、（４）式の計算項Ｅを求めるに必要な処理は、各次元ごとのコードブック参照と、それによって得られたコードを用いて次元ごとにまとめられた幾つかの（上述の例では３つ）テーブルを参照して、それによって得られた値を足し算するだけの簡単処理で済むので、演算量を大幅に削減することができ、処理能力の低いＣＰＵであっても十分対応できるものとなる。
【００５９】
ところで、これまでの説明は、ある１つの正規分布に対しての説明であった。しかし、本発明は複数の正規分布を用いる混合連続分布型ＨＭＭにも対応することができる。以下、これについて説明する。
【００６０】
本発明では、全ての音素に共通のｍ個のコード化された正規分布（代表的なｍ個の正規分布がコード化されてコードブックとされているもので、それぞれのコードに対応する正規分布の分散と平均値が予め求められている）を予め用意し、ある音素について状態ｉｊにおいて時刻ｔにおける入力ベクトルＹｔのある次元ｙｋにおける出力確率を求めることができるようにする。
【００６１】
このｍ個（たとえば２５６個）のコード化された正規分布は、全ての音素に対して共通に使用可能であり、ある音素について状態ｉｊごとに、必要に応じて、コードブックから複数個の正規分布を選択して出力確率を求めることができるようにしたものである。ｍ番目の正規分布を用いた場合の出力確率をｂｍ（Ｙ）とすれば、ｂｍ（Ｙ）は以下の式で表すことができる。
【００６２】
【数５】
0003932789.tif 000004
なお、（５）式において、Ｗijmは、それぞれの音素における状態ｉｊにおけるｍ番目の正規分布に対する重みである。
【００６３】
この（５）式は、前述したと同様に、対数をとって、
【００６４】
【数６】
0003932789.tif 000005
と表すことができる。そして、この（６）式において、計算項Ａは、前述したように、予め計算して求めておくことができるので、それを定数化してＡと表し、さらに、計算項Ｂにおけるlogxｅも前述同様、定数として表すことができるので、 それをＺで表せば、（６）式は、
【００６５】
【数７】
0003932789.tif 000006
と表すことできる。
【００６６】
そしてさらに、前述同様、（７）式の計算項Ｂ’におけるｙｋをスカラ量子化してコード化し、それをｋＣｃで表すと、（７）式は、
【００６７】
【数８】
0003932789.tif 000007
のように表すことができる。なお、（７）式、（８）式において、logxWijmも予め計算して求めておくことができるので定数として扱うことができる。
【００６８】
そして、この（８）式における計算項Ｄをテーブル化してそのテーブルを参照することで求ることができるようにする。これについてはすでに詳細に説明したのでここではその説明は省略する。
【００６９】
このように本発明は、全ての音素に共通のコード化されたｍ個の正規分布を予め用意することで、ある音素について状態ｉｊにおいて時刻における入力ベクトルのある次元における出力確率を（８）式によって簡単に求めることができる。
【００７０】
図７は以上説明したＨＭＭの出力確率計算方法が適用された音声認識装置の概略的な構成を示すもので、音声入力部としてのマイクロホン１１、入力された音声信号を増幅したりＡ／Ｄ変換する音声信号入力処理部１２、音声信号入力処理部１２で処理された音声信号に対し特徴分析を行い時刻ｔごとの入力ベクトルとその成分（たとえば１０次元のＬＰＣケプストラム）を出力する処理などを行う特徴分析部１３、この特徴分析部１３からの各次元ごとの成分を受け取ってコードブック記憶部１４に記憶されている次元ごとのコードブック（たとえば図１に示すコードブック１Ｃ，２Ｃ，・・・，１０Ｃ）を参照してスカラ量子化を行うスカラ量子化部１５、ＨＭＭ演算に必要な各種パラメータ（状態ｉｊの場合の次元ｋにおけるσｉｊやμｉｊなど）や前述したテーブル（第１、第２、第３のテーブルＴ１０，Ｔ２０，Ｔ３０）など各種データを記憶する演算データ記憶部１６、この演算データ記憶部１６に記憶されている各種データと上述のスカラ量子化部１５によってスカラ量子化された結果（各次元の成分に対応するコードブックから選ばれたコード）に基づいてＨＭＭ演算を行う演算処理部１７、この演算処理部１７で計算された結果を用い、かつ、単語や言語テーブル１８を用いて音声認識を行って認識結果を出力する音声認識処理部１９などを有した構成となっている。
【００７１】
なお、演算処理部１７が行う処理の１つである出力確率を求める処理は、前述したように、スカラ量子化部１５によって選ばれたコードに基づいて、テーブル（前述の例では第１、第２、第３のテーブルＴ１０，Ｔ２０，Ｔ３０）を参照して各テーブルごとの出力値を求め、それによって出力確率を計算して、この出力確率を用いて最終的な出力尤度を得る。これをある音素において各時刻ごとに行う。そして、この演算処理部１７からの出力を音声認識処理部が受け取って入力音声に対する音声認識処理を行う。
【００７２】
このように本発明の音声認識装置は、図１から図６によって説明したＨＭＭの出力確率計算方法を用いて出力確率を求めるようにしている。これによって、出力確率を求めるための演算が大幅に簡略化され、高速に出力確率を求めることができ、処理能力の低いＣＰＵで十分対応できるものなる。これによって、 低価格が要求される安価なシステムにおいてもＨＭＭを用いた音声認識を適用することが可能となる。
【００７３】
本発明は以上説明した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で種々変形実施可能となるものである。たとえば、前述の実施の形態では、音声認識について説明したが、画像認識を行う際のパターン認識などにも適用することができる。また、以上説明した本発明のＨＭＭの出力確率計算方法を実現するための処理手順が記述された処理プログラムを作成し、その処理プログラムをフロッピィディスク、光ディスク、ハードディスクなどの記録媒体に記録させておくことができ、本発明はその記録媒体をも含むものである。また、ネットワークから当該処理プログラムを得るようにしてもよい。
【００７４】
【発明の効果】
以上説明したように本発明によれば、 ＨＭＭの出力確率を求める計算の一部、特に計算量の多い部分をテーブル参照で求められるようにしているので、出力確率を求めるための演算を簡略化することができ、出力確率を高速にかつ少ない処理量で求めることを可能としている。これにより、処理能力の低いＣＰＵでも対応することができる。また、本発明は、入力ベクトルの各次元を幾つかにまとめて、そのまとまりごとにテーブルを作成するようにしているので、テーブル数を少なくすることができ、それぞれのテーブルを参照することによって得られた値に対する後処理をより簡略化することができる。
【００７５】
このように本発明は、 ＨＭＭの出力確率を求める演算が大幅に簡略化され、高速に出力確率を求めることができ、処理能力の低いＣＰＵで十分対応できるものなる。
【図面の簡単な説明】
【図１】本発明の実施の形態を説明する図であり、時刻ｔ１における入力ベクトルＹ１の各次元の成分をコード化する処理を説明する図である。
【図２】図１に示されるコードブックによってコード化されたコードを用いてテーブル参照することにより、実施の形態で説明した（４）式の計算項Ｄを求める処理を説明する図である。
【図３】本発明の実施の形態であるＨＭＭの出力確率を求めるための概略的な処理手順を説明するフローチャートである。
【図４】本発明の実施の形態で説明した（４）式の計算項Ｄをテーブル参照により求める処理（１次元と２次元に対する処理）を説明する図である。
【図５】本発明の実施の形態で説明した（４）式の項Ｄをテーブル参照により求める処理（３次元から６次元に対する処理）を説明する図である。
【図６】本発明の実施の形態で説明した（４）式の項Ｄをテーブル参照により求める処理（７次元と１０次元に対する処理）を説明する図である。
【図７】本発明の音声認識装置の実施の形態を概略的に示す構成図である。
【符号の説明】
１１  マイクロホン
１２  音声信号入力処理部
１３  特徴分析部
１４  コードブック記憶部
１５  スカラ量子化部
１６  演算データ記憶部
１７  演算処理部
１８  音声認識処理部
１９  単語・言語テーブル
１Ｃ，２Ｃ，・・・，１０Ｃ  １次元から１０次元に対応するコードブック
Ｔ１０，Ｔ２０，Ｔ３０  第１、第２、第３のテーブル
【図１】
0003932789.tif 000010
【図２】
0003932789.tif 000011
【図３】
0003932789.tif 000012
【図４】
0003932789.tif 000013
【図５】
0003932789.tif 000014
【図６】
0003932789.tif 000015
【図７】
0003932789.tif 000016