| 【発明の名称】 |
HMMの出力確率計算方法および音声認識装置 |
| 【発明者】 |
【氏名】宮沢 康永
|
| 【要約】 |
【課題】HMMの出力確率を求めるための演算を簡略化することで処理能力の低いCPUでも対応することができるようにする。
【解決手段】入力ベクトルの各次元を幾つかにまとめて(ステップs1)、そのまとまりごとにテーブルを作成しておく(ステップs2)。そして、出力確率を計算する際は、入力ベクトルの1次元からn次元までの値に対するコードを順次得て(ステップs3)、それぞれのコードによって、対応するテーブルを参照してテーブルごとの出力値を得る(ステップs4)。そして、そのテーブルごとの出力値を出力確率を求めるための計算式に代入して出力確率を求める(ステップs5)。 |
【特許請求の範囲】
【請求項1】 出力確率分布として無相関正規分布を用いたHMMの出力確率の計算方法において、ある時刻における入力ベクトルをY(Yはn次元の成分を有し、nは正の整数である)、状態iからjの場合のk次元(kは1からnのいずれかの自然数)における分散をσij(k)、状態iからjの場合のk次元における平均値μij(k)としたとき、前記出力確率を求める計算式が、【数1】
で与えられ、この式の両辺を対数をとり、【数2】
で表した場合、(2)式の〔{yk−μij(k)}2〕/2σij(k)2・logxeでなる計算項の計算量を少なくするHMMの出力確率計算方法であって、ある時刻における入力ベクトルYの各次元ごとの値を代表値の集合として表すコードブックを作成し、前記ある時刻における入力ベクトルYの各次元(1〜n次元)ごとの値を前記コードブックに存在するあるコードで置換して、そのコードに基づいて、前記〔{yk−μij(k)}2〕/2σij(k)2・logxeでなる計算項をテーブル参照で求め、そのテーブルは、1からn次元のうち同じ組とすることのできる次元同志をまとめ、そのまとめられた組ごとに作成され、このそれぞれの組ごとのテーブルは、当該組に存在する各次元ごとに選ばれるそれぞれのコードに基づいて求められるそれぞれの出力値が、前記それぞれのコードの全ての組み合わせごとに合計の出力値として求められており、前記それぞれのコードの全ての組み合わせと、それによって得られる合計の出力値とが対応付けられてなり、ある組に対応するそれぞれの次元に対して選ばれたそれぞれのコードに基づいて前記テーブルを参照し、それぞれの次元に対するコードの組み合わせに対応した合計の出力値を取得して、その合計の出力値に基づいて出力確率を計算することを特徴とするHMMの出力確率計算方法。 【請求項2】 前記同じ組とすることのできる次元同志のまとまりは、それぞれの次元におけるコード数を次元によって異ならせることができる場合、コード数の同じ次元同志を同じ組としてまとめることを特徴とする請求項1記載のHMMの出力確率計算方法。 【請求項3】 入力音声信号に対し特徴分析を行い、ある時刻ごとの入力ベクトルと複数次元からなる成分を出力する特徴分析部と、この特徴分析部からの各次元ごとの成分を受け取ってスカラ量子化を行い、所定のコードに置き換えるスカラ量子化部と、このスカラ量子化部によってコード化されたコードによって、予め作成されたテーブルを参照することで出力値を得て、その出力値を用いて出力確率を求めると共に、その出力確率を用いて音声認識に必要な演算を行う演算処理部と、この演算処理部で計算された結果に基づいて音声認識を行って認識結果を出力する音声認識処理部とを有する音声認識装置において、前記テーブルは、1からn次元のうち同じ組とすることのできる次元同志をまとめ、そのまとめられた組ごとに作成され、このそれぞれの組ごとのテーブルは、当該組に存在する各次元ごとに選ばれるそれぞれのコードに基づいて求められるそれぞれの出力値が、前記それぞれのコードの全ての組み合わせごとに合計の出力値として求められており、前記それぞれのコードの全ての組み合わせと、それによって得られる合計の出力値とが対応付けられてなり、前記演算処理部は、ある組に対応するそれぞれの次元に対して選ばれたそれぞれのコードに基づいて前記テーブルを参照し、それぞれの次元に対するコードの組み合わせに対応した合計の出力値を取得して、その合計の出力値に基づいて出力確率を計算すると共に、当該計算された出力確率を用いて音声認識に必要な演算を行う、ことを特徴とする音声認識装置。 【請求項4】 前記同じ組とすることのできる次元同志のまとまりは、それぞれの次元におけるコード数を次元によって異ならせることができる場合、コード数の同じ次元同志を同じ組としてまとめることを特徴とする請求項3載の音声認識装置。
|
【発明の詳細な説明】【0001】 【発明の属する技術分野】本発明は音声認識において用いられるHMM(隠れマルコフモデル)の出力確率を少ない計算量で高速に求めることを可能とするHMMの出力確率計算方法および音声認識装置に関する。 【0002】 【従来の技術】音声認識を行うための音素モデルとしてHMMが広く使われている。このHMMは高い音声認識性能を得ることができる反面、計算量が多いのが難点である。特に、HMMの出力確率を求めるには多くの計算量を必要とする。ここで、ある時刻における入力ベクトルYについて、状態iから状態jへ遷移する時の出力確率をbij(Y)で表し、無相関正規分布に従うとすれば、 bij(Y)は前述の特許請求の範囲の項で示した(1)式で表すことができる。 【0003】このとき、入力ベクトルYは、入力音声をある時刻(時刻t1,時刻t2,・・・)ごとに、たとえば20msecというような長さで分析して得られたn次元(nは正の整数)の成分(LPCケプストラムなど)で表される。たとえば、時刻t1,t2,t3,・・・における入力ベクトルをY1,Y2,Y3,・・・で表すとすれば、時刻t1における入力ベクトルY1は(1y1,1y2,・・・、1yn)、 時刻t2における入力ベクトルY2は(2y1,2y2,・・・、2yn)、 時刻t3における入力ベクトルY3は(3y1,3y2,・・・、3yn)というように表される。 【0004】なお、上述の(1)式において、kはある時刻における入力ベクトルYの成分の次元数を表し、1からnのいずれかの値をとる。また、σij(k)は状態iからjの場合のk次元における分散、μij(k)は状態iからjの場合のk次元における平均値を表す。 【0005】 【発明が解決しようとする課題】上述した(1)式によって出力確率を求めることができるが、この(1)式をそのまま用いて計算すると、計算によって得られる値が小さくなりすぎてアンダーフローが起こる可能性がある。そこで、出力確率を求める際は、通常、対数化して求めることがなされている。上述の(1)式をxを底とする対数として表せば、前述の(2)式のように表すことができるこの(2)式において、計算項Aは、予め計算して求めておくことができるので、それを定数化してAと表し、さらに、計算項Bに存在するlogxeも定数として表すことができるので、 それをZで表せば、(2)式は、【0006】 【数3】
と表すことできる。 【0007】しかし、この(3)式においても計算量の多い計算項B’、つまり、〔{yk−μij(k)}2/2σij(k)2〕・Zが存在する。特に、この項B’は、ある時刻tにおける入力ベクトルYの各次元ごとに計算する必要がある。たとえば、ある時刻tにおける入力ベクトルYが10次元(n=10)の成分で構成されているとすれば、10回の引き算、10回の掛け算、10回の割り算、10回の足し算を行い、さらに、定数Zを掛け算する必要があり、これだけでもその計算量はきわめて多くなる。 【0008】特に、小型、軽量、安価な製品においては、使用されるハードウエアに大きな制約があるため、上述したようなHMMを用いた音声認識を用いるには無理がある。 【0009】そこで本発明は、 HMM(隠れマルコフモデル)の出力確率を求めるための計算の簡略化を図り、出力確率を高速に求めることを可能とし、ハードウエアの能力に大きな制約のあるシステムにもHMMの適用を可能とすることを目的とする。 【0010】 【課題を解決するための手段】上述した目的を達成するために本発明のHMMの出力確率計算方法は、出力確率分布として無相関正規分布を用いたHMMの出力確率の計算方法において、ある時刻における入力ベクトルをY(Yはn次元の成分を有し、nは正の整数である)、状態iからjの場合のk次元(kは1からnのいずれかの自然数)における分散をσij(k)、状態iからjの場合のk次元における平均値μij(k)としたとき、前記出力確率を求める計算式が、(1)式で与えられ、この(1)式の両辺を対数をとり、(2)のように表した場合、(2)式の〔{yk−μij(k)}2〕/2σij(k)2・logxeでなる計算項の計算量を少なくするHMMの出力確率計算方法であって、ある時刻における入力ベクトルYの各次元ごとの値を代表値の集合として表すコードブックを作成し、前記ある時刻における入力ベクトルYの各次元(1〜n次元)ごとの値を前記コードブックに存在するあるコードで置換して、そのコードに基づいて、前記〔{yk−μij(k)}2〕/2σij(k)2・logxeでなる計算項をテーブル参照で求める。そして、そのテーブルは、1からn次元のうち同じ組とすることのできる次元同志をまとめ、そのまとめられた組ごとに作成され、このそれぞれの組ごとのテーブルは、当該組に存在する各次元ごとに選ばれるそれぞれのコードに基づいて求められるそれぞれの出力値が、前記それぞれのコードの全ての組み合わせごとに合計の出力値として求められており、前記それぞれのコードの全ての組み合わせと、それによって得られる合計の出力値とが対応付けられてなり、ある組に対応するそれぞれの次元に対して選ばれたそれぞれのコードに基づいて前記テーブルを参照し、それぞれの次元に対するコードの組み合わせに対応した合計の出力値を取得して、その合計の出力値に基づいて出力確率を計算するようにしている。 【0011】このHMMの出力確率計算方法において、前記同じ組とすることのできる次元同志のまとまりは、それぞれの次元におけるコード数を次元によって異ならせることができる場合、コード数の同じ次元同志を同じ組としてまとめるようにしている。 【0012】また、本発明の音声認識装置は、入力音声信号に対し特徴分析を行い、ある時刻ごとの入力ベクトルと複数次元からなる成分を出力する特徴分析部と、この特徴分析部からの各次元ごとの成分を受け取ってスカラ量子化を行い、所定のコードに置き換えるスカラ量子化部と、このスカラ量子化部によってコード化されたコードによって、予め作成されたテーブルを参照することで出力値を得て、その出力値を用いて出力確率を求めると共に、その出力確率を用いて音声認識に必要な演算を行う演算処理部と、この演算処理部で計算された結果に基づいて音声認識を行って認識結果を出力する音声認識処理部とを有する音声認識装置において、前記テーブルは、1からn次元のうち同じ組とすることのできる次元同志をまとめ、そのまとめられた組ごとに作成され、このそれぞれの組ごとのテーブルは、当該組に存在する各次元ごとに選ばれるそれぞれのコードに基づいて求められるそれぞれの出力値が、前記それぞれのコードの全ての組み合わせごとに合計の出力値として求められており、前記それぞれのコードの全ての組み合わせと、それによって得られる合計の出力値とが対応付けられてなる。そして、前記演算処理部は、ある組に対応するそれぞれの次元に対して選ばれたそれぞれのコードに基づいて前記テーブルを参照し、それぞれの次元に対するコードの組み合わせに対応した合計の出力値を取得して、その合計の出力値に基づいて出力確率を計算すると共に、当該計算された出力確率を用いて音声認識に必要な演算を行う。 【0013】このように本発明は、HMMの出力確率を求める計算の一部、特に計算量の多い部分をテーブル参照で求められるようにしているので、出力確率を求めるための演算を簡略化することができ、出力確率を高速にかつ少ない処理量で求めることを可能としている。これにより、処理能力の低いCPUでも対応することができる。 【0014】また、本発明は、入力ベクトルの各次元を幾つかにまとめて、そのまとまりごとにテーブルを作成するようにしているので、テーブル数を少なくすることができ、それぞれのテーブルを参照することによって得られた値に対する後処理をより簡略化することができる。 【0015】また、次元同志のまとまりを作る際、各次元に対応するコードブック内のコード数の同じ次元同志を同じ組としてまとめるようにしている。これは、ある時刻の入力ベクトルがたとえば10次元の成分を持つと仮定すれば、1次元や2次元といった次元の数値が小さい次元では、コードブックのコード数をある程度多く密に持つ必要があるが、8次元、9次元、10次元というように数値が多くなるほどコードブックのコード数を疎とすることが可能となるというように、それぞれの次元におけるコード数を次元によって異ならせることができることを利用している。 【0016】たとえば、1次元と2次元に対するコードブックのコード数は16個、3次元から6次元に対するコードブックのコード数はそれぞれ8個、7次元から10次元に対するコードブックのコード数はそれぞれ4個というように、それぞれの次元によってコード数を変えることができる場合、1次元と2次元を1つのまとまりとして、それに対応するテーブルを作成し、3次元から6次元を1つのまとまりとして、それに対応するテーブルを作成し、7次元から10次元を1つのまとまりとして、それに対応するテーブルを作成することができる。 【0017】 【発明の実施の形態】以下、本発明の実施の形態について説明する。なお、この実施の形態で説明する内容は、本発明のHMMの出力確率計算方法および音声認識装置についての説明である。 【0018】本発明は、前述したように、HMMの出力確率を求めるための計算の簡素化を図ろうとするものである。すなわち、本発明は簡単にいえば、上述の(3)式において、計算項B’をテーブル化して、そのテーブルを参照することで計算項B’を求めることができるようにして、 HMMの出力確率の計算を簡素化しようとするものである。 【0019】以下、詳細に説明する。なお、この実施の形態では、各時刻t1,t2,t3,・・・ごとの入力ベクトル(これをY1,Y2,Y3,・・・と表す)は、それぞれ10次元の成分で構成されているものとする。たとえば、時刻t1における入力ベクトルY1は1y1,1y2,・・・、1yn、 時刻t2における入力ベクトルY2は2y1,2y2,・・・、2yn、時刻t3における入力ベクトル Y3は3y1,3y2,・・・、3ynというような成分を有している。 【0020】まず、1から10次元の各次元ごとにそれぞれの次元ごとの値を代表値の集合として表すコードブックを持つ。これを図1に示す。図1は時刻t1における入力ベクトルY1のそれぞれの成分1y1,1y2,・・・,1y10に対応するコードブックを示すもので、1次元の成分1y1に対しては、1C1,1C2,・・・,1Cmのコードを有するコードブック1C、2次元においては、2C1,2C2,・・・,2Cmのコードブック2C、3次元においては、3C1,3C2,・・・,3Cmのコードブック3C、10次元においては、10C1,10C2,・・・,10Cmのコードブック10Cというように、それぞれの次元ごとのコードブック1C,2C,・・・,10Cを持つ。 【0021】なお、ここで各コードブックのサイズを64とすれば、それぞれのコードブックにおけるmは64となり、それぞれ64個のコードを有することになる。ただし、実際には、全ての次元が同じコード数を持つ必要はなく、それぞれの次元ごとにコード数を変えることができる。 【0022】このように、各次元対応のコードブックを持つことによって、時刻t1,t2,・・・,tnのある時刻における入力ベクトルY1,Y2,・・・,Ynのそれぞれの10次元の成分は、それぞれの次元ごとのコードブック内に存在するいずれかのコードに置き換えることができる。 【0023】たとえば、時刻t1における入力ベクトルY1における1次元目の値は、コードブック1Cの中から最も近い値を選ぶことにより、その選ばれた値に置き換えることができ、同じく入力ベクトルY1における2次元目の値は、コードブック2Cの中から最も近いを選ぶことにより、その選ばれた値に置き換えることができる。 【0024】同様にして、時刻t2の入力ベクトルY2における1次元目2y1の値も、コードブック1Cの中から最も近い値を選ぶことにより、その選ばれた値に置き換えることができるというように、各時刻における入力ベクトルのそれぞれの次元の成分は、それぞれ対応するコードブック内のm個のコードのいずれかに置き換えることができる。 【0025】そして、このようにそれぞれのコードブックの中のいずれかのコードに置き換えられると、(3)式は以下のように表すことができる。 【0026】 【数4】
この(4)式において、kCcは置き換えられたコードを示すもので、kは次元を表し、1からnまでの次元があるとすれば、kは1からnのいずれかの値を取り、cはコード番号を表しコードブックサイズがm個であれば1からmのいずれかの値をとる。 【0027】この(4)式の計算項Dは、各次元ごとの値として予め求めておくことができ、それによって出力テーブルを作成する。すなわち、(4)式における計算項Dは、「σij(k)」、「μij(k)」、「kCc」、「Z」からなり、「σij(k)」は前述したように、状態iからjの場合のk次元における分散、μij(k)は状態iからjの場合のk次元における平均値を表すもので、予め計算して求めておくことが可能であり、Zは定数化されている。また、kCcはそれぞれの次元ごとのコードブック1C,2C,・・・,nCに存在するコードであるのでそれを用いることができる。 【0028】これら各次元ごとの「σij(k)」、「μij(k)」、定数化されている「Z」を用い、かつ、その次元に対するコードブックに存在するm個のコードを用いて計算項Dを計算しておくことができる。たとえば、コードブック1C内の各コード1C1〜1Cm(m=64)をそれぞれ用い、(4)式の計算項Dを予め計算しておくことによって、各コード1C1から1Cmのそれぞれに対する計算項Dの計算結果(これをここでは出力値と呼ぶ)を得ることができ、それをテーブル化する(これを1次元のテーブルT1という)。 【0029】また、コードブック2C内の各コード2C1〜2Cm(m=64)をそれぞれ用い、(4)式の計算項Dを予め計算しておくことによって、各コード2C1から2Cmのそれぞれに対する計算項Dの出力値を得ることができ、それをテーブル化する(これを2次元のテーブルT2という)。 【0030】このようにして、1〜nの各次元に対応したn個の出力テーブル(T1〜Tn)が作成され、これら各テーブルT1〜Tnは、1〜nの各次元ごとにm個のコードに対応したm個の出力値を持つことになる。 【0031】したがって、ある時刻における入力ベクトルYが得られて、その入力ベクトルYの各次元ごとの成分が得られれば、各次元ごとのスカラ量子化されたコードが得られ、そのコードに基づいてその次元に対応するテーブルを参照すれば(4)式の計算項Dが求められることになる。 【0032】たとえば、ある時刻t1における入力ベクトルY1の1次元目の成分1y1に対し、コード1C3が選ばれたとすると、そのコード1C3を用いて1次元のテーブルT1を参照することにより、計算項Dにおける1次元目の出力値が求められることになり、同様に、ある時刻t1における入力ベクトルY1の2次元目の成分1y2に対し、コード2C16が選ばれたとすると、そのコード2C16を用いて2次元のテーブルT2を参照することにより、計算項Dにおける2次元目の出力値が求められることになる。 【0033】これを図2により説明する。同図(a)に示すように、ある時刻t1における入力ベクトルY1の1次元目の成分を1y1とし、この1y1によってコードブック1Cからコード1C3が選ばれたとする。そして、このコード1C3によって、1次元の出力テーブルT1を参照することで、出力値1O3を得る。この出力値1O3は、(4)式の計算項Dから予め求められているものである。 【0034】同様にして、同図(b)に示すように、同じ入力ベクトルY1の2次元目の成分を1y2とし、この1y2によってコードブック2Cからコード1C16が選ばれたとする。そして、このコード1C16によって、2次元のテーブルT2を参照することで、出力値2O16を得る。この出力値2O16は、(4)式の計算項Dから予め求められているものである。 【0035】このようにしてn次元までそれを繰り返すことで、それぞれの次元ごとの出力値が得られる。そして、それぞれの次元ごとの出力値(ここでは、説明を簡単にするために、各次元ごとの出力値をO1,O2,O3,・・・,Onで表す)を足し算( O1+O2+,・・・,+On)する。このO1+O2+,・・・,+On は(4)式の計算項Eの計算結果となるので、その足し算した結果を用いて(4)式全体を計算すれば、ある時刻の入力ベクトルYの出力確率bij(Y)が求められる。 【0036】以上のような処理を行うことにより、(4)式の項Eを得るのに必要な計算は、1つの次元について1回のコードブックを参照する処理と、その結果に基づいてテーブルT1〜Tnのいずれかのテーブルを参照する処理を行い、得られた出力値を足し算すればよく、たとえば10次元とした場合、それぞれの次元ごとの10回のコードブック参照と、10回のテーブル参照と、それによって得られた10個の出力値を足し算するだけの処理ですむ。 【0037】以上は本発明を説明するための基本的な処理を説明するものであって、各次元ごとに作成されたテーブルT1〜Tnを参照することにより(4)式の計算項Dを得て、それぞれに次元ごとの出力値を足し算することによって(4)式の計算項Eを得る。このような計算手法はすでに知られた方法であるが、本発明は、この考え方をさらに発展させたものであり、より効率よく少ない計算量で出力確率を求めることができるようにする。以下、本発明について説明する。 【0038】本発明は、前述した出力テーブルを個々の次元ごとに持つのではなく、1からnの次元のうち同じ組とすることのできる次元同志をまとめ、そのまとめられた組ごとにテーブルをもつことに特徴がある。 【0039】図3は本発明の出力確率計算手順の概略を示すフローチャートであり、入力ベクトルの1からnの次元のうち同じ組とすることのできる次元同志を幾つかにまとめて(ステップs1)、そのまとまりごとにテーブルを作成しておく(ステップs2)。そして、出力確率を計算する際は、入力ベクトルの1次元からn次元までの成分に対するコードを、対応するコードブックから順次得て(ステップs3)、それぞれのコードを基に、対応するテーブルを参照してテーブルごとの出力値を得る(ステップs4)。そして、そのテーブルごとの出力値を出力確率を求めるための計算式(前述の(4)式)に代入して出力確率を求める(ステップs5)。以下、詳細に説明する。 【0040】各時刻ごとの入力ベクトルのそれぞれの次元における成分をスカラ量子化したコードブックを生成する際、前述したように、それぞれの次元ごとにコード数を変えることができる。たとえば、各時刻の入力ベクトルが10次元の成分を持つと仮定すれば、1次元や2次元といった次元の数値が小さい次元では、コードブックのコード数を密に持ち、8次元、9次元、10次元というように次元の数値の大きな次元ではコードブックのコード数を疎とするようにしてもよい。 【0041】ここで、入力ベクトルが10次元のLPCケプストラム係数である場合、1つの例として、1次元に対するコードブックのコード数は16個、2次元に対しても16個、3次元に対するコードブックのコード数は8個、4次元に対しても8個、5次元、6次元に対してもそれぞれ8個、7次元に対するコードブックのコード数は4個、8次元に対しても4個、9次元、10次元に対してもそれぞれ4個というように、それぞれの次元によってコード数を変えることができる。 【0042】したがって、それぞれのまとまりを生成する際、この場合、1次元と2次元がともに16個のコード数、3次元から6次元がそれぞれ8個のコード数、7次元から10次元がそれぞれ4個のコード数であるから、同じコード数ごとに次元をまとめると都合がよい。なお、説明の都合上、1次元と2次元のまとまりを第1の組V1、3次元〜6次元のまとまりを第2の組V2、7次元〜10次元のまとまりを第3の組V3と呼ぶことにする。 【0043】そして、これら第1〜第3の組V1,V2,V3ごとにテーブル(第1のテーブルT10、第2のテーブルT20、第3のテーブルT30)を作成する。 【0044】第1のテーブルT10は、ある時刻における入力ベクトルYにおける1次元の成分y1に対してコードブック1Cの中から選ばれたあるコード(これを1Cmとする)に対する出力値(これを1Omとする)と、同じ時刻の入力ベクトルYの2次元の成分y2に対してコードブック2Cの中から選ばれたあるコード(これを2Cmとする)に対する出力値(これを2Omとする)とを足し算した結果(1Om+2Om)が、コードブック1Cと2Cのそれぞれに存在する全てのコードの組み合わせに対応して格納されているものである。 【0045】つまり、コードブック1Cに存在する全てのコードに対して(4)式の計算項Dを求めておくとともに、コードブック2Cに存在する全てのコードに対して(4)式の計算項Dを求めておく。そして、コードブックC1とC2に存在するコードの全ての組み合わせに対するそれぞれの出力値1Om+2Omを予め計算しておく。これを図4によって具体的に説明する。 【0046】たとえば、時刻t1における入力ベクトルY1の1次元の成分1y1に対してコードブック1Cからコード1C3が選ばれ、同時刻における入力ベクトルY1の2次元の成分1y2に対してコードブック2Cからコード2C16が選ばれたとする。 【0047】このとき、コード1C3に対する(4)式の計算項D はすでに求められていてその出力値を1O3、コード2C16に対する(4)式の計算項Dもすでに求められていてその出力値を2O16とする。そして、これらの出力値の合計値「1O3+2O16」もすでに計算されていて(1O3+2O16=O1とする)、その合計値は第1のテーブルT10に格納されている。したがって、1次元の成分1y1に対して選ばれたコード1C3と、2次元の成分1y2に対して選ばれたコード2C16とによって第1のテーブルT10を参照すると、この場合、「1O3+2O16」、つまり、出力値として「O1」が読み出される。 【0048】これは他の組に対する出力テーブルも同じで、それぞれの組に属する次元ごとにその次元のコードブックに存在する全てのコードに対し、(4)式の項D がすでに求められていて、それぞれの組に属する次元ごとの全てのコードの組み合わせに対する合計の出力値が算出されている。 【0049】たとえば、図5に示すように、時刻t1における入力ベクトルY1の3次元の成分1y3に対してコードブック3Cからコード3C5が選ばれ、同時刻における入力ベクトルY1の4次元の成分1y4に対してコードブック4Cからコード4C6が選ばれたとする。また、同時刻における入力ベクトルY1の5次元の成分1y5に対してコードブック5Cからコード5C7が選ばれ、さらに、同時刻における入力ベクトルY1の6次元の成分1y6に対してコードブック6Cからコード6C8が選ばれたとする。 【0050】このとき、コード3C5に対しては(4)式の計算項Dにより、その出力値として3O5が求められており、コード4C6に対しては(4)式の計算項Dにより、その出力値として4O6が求められており、コード5C7に対しては(4)式の計算項Dにより、その出力値として5O7が求められており、コード6C8に対しては(4)式の計算項Dにより、その出力値として6O8が求められているとする。 【0051】そして、3O5+4O6+5O7+6O8もすでに計算されていて( 3O5+4O6+5O7+6O8=O2とする)、その合計値は第2のテーブルT20に格納されている。したがって、3次元の成分に対するコード3C5、4次元の成分に対するコード4C6、5次元の成分に対するコード5C7、6次元の成分に対するコード6C8によって、第2のテーブルT20を参照すると、この場合、 「3O5+4O6+5O7+6O8」、つまり、出力値として「O2」が読み出される。 【0052】さらに、図6に示すように、時刻t1における入力ベクトルY1の7次元の成分1y7に対してコードブック7Cからコード7C1が選ばれ、同時刻における入力ベクトルY1の8次元の成分1y8に対してコードブック8Cからコード8C2が選ばれたとする。また、同時刻における入力ベクトルY1の9次元の成分1y9に対してコードブック9Cからコード9C3が選ばれ、さらに、同時刻における入力ベクトルY1の10次元の成分1y10に対してコードブック10Cからコード10C4が選ばれたとする。 【0053】このとき、コード7C1に対しては(4)式の計算項Dにより、その出力値として7O1が求められており、コード8C2に対しては(4)式の計算項Dにより、その出力値として8O2が求められており、コード9C3に対しては(4)式の計算項Dにより、その出力値として9O3が求められており、コード10C4に対しては(4)式の計算項Dにより、その出力値として10O4が求められているとする。 【0054】そして、7O1+8O2+9O3+10O4もすでに計算されていて( 7O1+8O2+9O3+10O4=O3とする)、その合計値は第3のテーブルT30に格納されている。したがって、7次元の成分に対するコード7C1、8次元の成分に対するコード8C2、9次元の成分に対するコード9C3、10次元の成分に対するコード10C4によって、第3のテーブルT30を参照すると、この場合、「 7O1+8O2+9O3+10O4」、つまり、出力値として「O3」が読み出される。 【0055】以上のように、1から10の次元を3つのまとまり(第1の組V1、第2の組V2、第3の組V3)に分けて、これら第1の組V1、第2の組V2、第3の組V3ごとにテーブル(第1のテーブルT10、第2のテーブルT20、第3のテーブルT30)を持つようにしている。したがって、第1、第2、第3の組V1,V2,V3に属する次元のコードブックから選ばれたそれぞれの次元ごとのコードが対応するテーブルに入力されると、入力されたコード群の組み合わせに対応する合計の出力値が得られる。 【0056】これによって、たとえば、第1の組V1に対応するテーブルT10からの出力値がO1、第2の組V2に対応するテーブルT20からの出力値がO2、第3の組V3に対応するテーブルT30からの出力値がO3であるとすれば、これら3つの出力値O1,O2,O3を合計することで、(4)式の計算項Eの計算が済むことになる。すなわち、(4)式の計算項Eを得るための処理としては、10次元とした場合、10回のコードブック参照と、3回のテーブル参照と、3回の足し算だけで済むことになり、大幅に演算量を減らすことができる。 【0057】そして、(4)式の計算項Eが求められれば、それを用いて(4)式全体を計算することによって、時刻t1における入力ベクトルの状態iから状態jの出力確率を求めることができる。 【0058】このように、本発明によれば、出力確率を求める際、(4)式の計算項Eを求めるに必要な処理は、各次元ごとのコードブック参照と、それによって得られたコードを用いて次元ごとにまとめられた幾つかの(上述の例では3つ)テーブルを参照して、それによって得られた値を足し算するだけの簡単処理で済むので、演算量を大幅に削減することができ、処理能力の低いCPUであっても十分対応できるものとなる。 【0059】ところで、これまでの説明は、ある1つの正規分布に対しての説明であった。しかし、本発明は複数の正規分布を用いる混合連続分布型HMMにも対応することができる。以下、これについて説明する。 【0060】本発明では、全ての音素に共通のm個のコード化された正規分布(代表的なm個の正規分布がコード化されてコードブックとされているもので、それぞれのコードに対応する正規分布の分散と平均値が予め求められている)を予め用意し、ある音素について状態ijにおいて時刻tにおける入力ベクトルYtのある次元ykにおける出力確率を求めることができるようにする。 【0061】このm個(たとえば256個)のコード化された正規分布は、全ての音素に対して共通に使用可能であり、ある音素について状態ijごとに、必要に応じて、コードブックから複数個の正規分布を選択して出力確率を求めることができるようにしたものである。m番目の正規分布を用いた場合の出力確率をbm(Y)とすれば、bm(Y)は以下の式で表すことができる。 【0062】 【数5】
なお、(5)式において、Wijmは、それぞれの音素における状態ijにおけるm番目の正規分布に対する重みである。 【0063】この(5)式は、前述したと同様に、対数をとって、【0064】 【数6】
と表すことができる。そして、この(6)式において、計算項Aは、前述したように、予め計算して求めておくことができるので、それを定数化してAと表し、さらに、計算項Bにおけるlogxeも前述同様、定数として表すことができるので、 それをZで表せば、(6)式は、【0065】 【数7】
と表すことできる。 【0066】そしてさらに、前述同様、(7)式の計算項B’におけるykをスカラ量子化してコード化し、それをkCcで表すと、(7)式は、【0067】 【数8】
のように表すことができる。なお、(7)式、(8)式において、logxWijmも予め計算して求めておくことができるので定数として扱うことができる。 【0068】そして、この(8)式における計算項Dをテーブル化してそのテーブルを参照することで求ることができるようにする。これについてはすでに詳細に説明したのでここではその説明は省略する。 【0069】このように本発明は、全ての音素に共通のコード化されたm個の正規分布を予め用意することで、ある音素について状態ijにおいて時刻における入力ベクトルのある次元における出力確率を(8)式によって簡単に求めることができる。 【0070】図7は以上説明したHMMの出力確率計算方法が適用された音声認識装置の概略的な構成を示すもので、音声入力部としてのマイクロホン11、入力された音声信号を増幅したりA/D変換する音声信号入力処理部12、音声信号入力処理部12で処理された音声信号に対し特徴分析を行い時刻tごとの入力ベクトルとその成分(たとえば10次元のLPCケプストラム)を出力する処理などを行う特徴分析部13、この特徴分析部13からの各次元ごとの成分を受け取ってコードブック記憶部14に記憶されている次元ごとのコードブック(たとえば図1に示すコードブック1C,2C,・・・,10C)を参照してスカラ量子化を行うスカラ量子化部15、HMM演算に必要な各種パラメータ(状態ijの場合の次元kにおけるσijやμijなど)や前述したテーブル(第1、第2、第3のテーブルT10,T20,T30)など各種データを記憶する演算データ記憶部16、この演算データ記憶部16に記憶されている各種データと上述のスカラ量子化部15によってスカラ量子化された結果(各次元の成分に対応するコードブックから選ばれたコード)に基づいてHMM演算を行う演算処理部17、この演算処理部17で計算された結果を用い、かつ、単語や言語テーブル18を用いて音声認識を行って認識結果を出力する音声認識処理部19などを有した構成となっている。 【0071】なお、演算処理部17が行う処理の1つである出力確率を求める処理は、前述したように、スカラ量子化部15によって選ばれたコードに基づいて、テーブル(前述の例では第1、第2、第3のテーブルT10,T20,T30)を参照して各テーブルごとの出力値を求め、それによって出力確率を計算して、この出力確率を用いて最終的な出力尤度を得る。これをある音素において各時刻ごとに行う。そして、この演算処理部17からの出力を音声認識処理部が受け取って入力音声に対する音声認識処理を行う。 【0072】このように本発明の音声認識装置は、図1から図6によって説明したHMMの出力確率計算方法を用いて出力確率を求めるようにしている。これによって、出力確率を求めるための演算が大幅に簡略化され、高速に出力確率を求めることができ、処理能力の低いCPUで十分対応できるものなる。これによって、 低価格が要求される安価なシステムにおいてもHMMを用いた音声認識を適用することが可能となる。 【0073】本発明は以上説明した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で種々変形実施可能となるものである。たとえば、前述の実施の形態では、音声認識について説明したが、画像認識を行う際のパターン認識などにも適用することができる。また、以上説明した本発明のHMMの出力確率計算方法を実現するための処理手順が記述された処理プログラムを作成し、その処理プログラムをフロッピィディスク、光ディスク、ハードディスクなどの記録媒体に記録させておくことができ、本発明はその記録媒体をも含むものである。また、ネットワークから当該処理プログラムを得るようにしてもよい。 【0074】 【発明の効果】以上説明したように本発明によれば、 HMMの出力確率を求める計算の一部、特に計算量の多い部分をテーブル参照で求められるようにしているので、出力確率を求めるための演算を簡略化することができ、出力確率を高速にかつ少ない処理量で求めることを可能としている。これにより、処理能力の低いCPUでも対応することができる。また、本発明は、入力ベクトルの各次元を幾つかにまとめて、そのまとまりごとにテーブルを作成するようにしているので、テーブル数を少なくすることができ、それぞれのテーブルを参照することによって得られた値に対する後処理をより簡略化することができる。 【0075】このように本発明は、 HMMの出力確率を求める演算が大幅に簡略化され、高速に出力確率を求めることができ、処理能力の低いCPUで十分対応できるものなる。
|
| 【出願人】 |
【識別番号】000002369 【氏名又は名称】セイコーエプソン株式会社
|
| 【出願日】 |
平成12年9月20日(2000.9.20) |
| 【代理人】 |
【識別番号】100095728 【弁理士】 【氏名又は名称】上柳 雅誉 (外1名)
|
| 【公開番号】 |
特開2002−91483(P2002−91483A) |
| 【公開日】 |
平成14年3月27日(2002.3.27) |
| 【出願番号】 |
特願2000−285330(P2000−285330) |
|