(57)【特許請求の範囲】
【請求項１】
データ処理装置において、入力データを関数に与えることによって、前記入力データに対する出力値を得るデータ演算処理方法であって、
前記データ処理装置の演算部が、
前記入力データの範囲を、少なくとも、前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間とに分け、２進法で表現された前記入力データの上位ｎビット（ｎは正の整数で、入力データのビット数Ｎとしたとき、ｎ＜Ｎ）のビットの組み合わせによって前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間とのいずれに対応するかを決定し、
前記入力データが前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間とのいずれの区間にあるかを判定し、前記入力データが前記入力データに対する出力値として高精度な値を得る必要がない区間に属すると判定される場合に、前記入力データに対する出力値を前記区間における関数曲線を近似して求めること
を特徴とするデータ演算処理方法。
【請求項２】
前記関数曲線を近似する方法として直線近似を用いることを特徴とする請求項１記載のデータ演算処理方法。
【請求項３】
前記入力データが前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間とのいずれの区間にあるかを判定し、
前記判定された区間に対応した前記入力データに応じた分解能の値を出力値とする処理は、階層構造に作成されたテーブル群のテーブルを順次参照することによって行い、この階層構造に作成されたテーブルを順次参照する処理は、
２進法で表現された前記入力データの上位ｎビットを読み込み、前記ｎビットのビット内容をkeyとして、前記階層構造のテーブル群のうちの先頭テーブルを参照し、前記先頭テーブルにおいて、次に参照すべきテーブルの指示があれば前記参照すべきテーブル情報と前記上位ｎビットに続く次に読み込むべきビット数の指示があれば前記読み込みビット数を得て、当該参照すべきテーブルを前記読み込むべきビット数に対応する入力データのビット内容をkeyとして参照する処理を、次に参照すべきテーブルの指示のない終端テーブルまで行い、この終端テーブルの直前のテーブルで指示され読み込むべきビット数に対応する入力データのビット内容をkeyとして当該終端テーブルを参照することで、当該入力データに対する出力値を得ることを特徴とする請求項１記載のデータ演算処理方法。
【請求項４】
前記入力データに対する出力値として高精度な値を得る必要のある区間における前記入力データに対する出力値は、前記区間において前記入力データの取り得る個々の入力データ値に対応した出力値とし、前記出力値が前記区間において取り得る前記入力データの個々の値に対応して記述された終端テーブルとして用意されることを特徴とする請求項１から３のいずれかに記載のデータ演算処理方法。
【請求項５】
前記入力データに対する出力値として高精度な値を得る必要がない区間における前記入力データに対する出力値は、当該区間ごとまたは前記区間をさらに細分化した区間ごとの出力値とし、前記出力値がそれぞれの区間に対応して記述された終端テーブルとして用意されることを特徴とする請求項１から３のいずれかに記載のデータ演算処理方法。
【請求項６】
前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間の他に、
前記入力データに対して予め決められたある一定値を前記区間の出力値とする区間を設けることを特徴とする請求項１から５のいずれかに記載のデータ演算処理方法。
【請求項７】
前記入力データを関数に与えることによって、前記入力データに対する出力値を所定のアルゴリズムに従って得るデータ演算を、ＨＭＭにおける出力確率を求める演算に用いることを特徴とする請求項１から６のいずれかに記載のデータ演算処理方法。
【請求項８】
データ処理装置において、入力データを関数に与えることによって、前記入力データに対する出力値を得るデータ演算処理方法であって、
前記データ処理装置の演算部が、
前記入力データの範囲を、少なくとも、前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間とに分け、２進法で表現された前記入力データの上位ｎビット（ｎは正の整数で、入力データのビット数Ｎとしたとき、ｎ＜Ｎ）のビットの組み合わせによって前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間とのいずれに対応するかを決定し、
前記入力データが前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間とのいずれの区間にあるかを判定し、前記入力データが前記入力データに対する出力値として高精度な値を得る必要がない区間に属すると判定される場合に、前記入力データに対する出力値を前記区間における関数曲線を近似して求めること
を特徴とするデータ演算処理プログラムを記録した記録媒体。
【請求項９】
前記関数曲線を近似する方法として直線近似を用いることを特徴とする請求項８記載のデータ演算処理プログラムを記録した記録媒体。
【請求項１０】
前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間とを判定し、前記判定された区間に対応した前記入力データに応じた分解能の値を出力値とする処理は、階層構造に作成されたテーブル群のテーブルを順次参照することによって行い、この階層構造に作成されたテーブルを順次参照する処理は、
２進法で表現された前記入力データの上位ｎビットを読み込み、前記ｎビットのビット内容をkeyとして、前記階層構造のテーブル群のうちの先頭テーブルを参照し、前記先頭テーブルにおいて、次に参照すべきテーブルの指示があれば前記参照すべきテーブル情報と前記上位ｎビットに続く次に読み込むべきビット数の指示があれば前記読み込みビット数を得て、当該参照すべきテーブルを前記読み込むべきビット数に対応する入力データのビット内容をkeyとして参照する処理を、次に参照すべきテーブルの指示のない終端テーブルまで行い、この終端テーブルの直前のテーブルで指示され読み込むべきビット数に対応する入力データのビット内容をkeyとして当該終端テーブルを参照することで、当該入力データに対する出力値を得ることを特徴とする請求項８記載のデータ演算処理プログラムを記録した記録媒体。
【請求項１１】
前記入力データに対する出力値として高精度な値を得る必要のある区間における前記入力データに対する出力値は、前記区間において前記入力データの取り得る個々の入力データ値に対応した出力値とし、前記出力値が前記区間において取り得る前記入力データの個々の値に対応して記述された終端テーブルとして用意されることを特徴とする請求項８から１０のいずれかに記載のデータ演算処理プログラムを記録した記録媒体。
【請求項１２】
前記入力データに対する出力値として高精度な値を得る必要がない区間における前記入力データに対する出力値は、当該区間ごとまたは前記区間をさらに細分化した区間ごとの出力値とし、前記出力値がそれぞれの区間に対応して記述された終端テーブルとして用意されることを特徴とする請求項８から１０のいずれかに記載のデータ演算処理プログラムを記録した記録媒体。
【請求項１３】
前記入力データに対する出力値として高精度な値を得る必要のある区間と前記入力データに対する出力値として高精度な値を得る必要がない区間の他に、前記入力データに対して予め決められたある一定値を前記区間の出力値とする区間を設けることを特徴とする請求項８から１２のいずれかに記載のデータ演算処理プログラムを記録した記録媒体。
【請求項１４】
前記入力データを関数に与えることによって、前記入力データに対する出力値を所定のアルゴリズムに従って得るデータ演算を、ＨＭＭにおける出力確率を求める演算に用いることを特徴とする請求項８から１３のいずれかに記載のデータ演算処理プログラムを記録した記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は入力データを複雑なアルゴリズムを有する関数に与えることによって、その入力データに対する出力値を得るようなデータ演算を行う際、そのデータ演算の簡略化を図ろうとするデータ演算処理方法に関し、特に、ＨＭＭ（Hidden Markov Model）の出力確率を求めるのに好適なデータ演算処理方法およびデータ演算処理プログラムを記録した記録媒体に関する。
【０００２】
【従来の技術】
たとえば、入力データをある複雑なアルゴリズムを必要とする関数に与えることによって、その入力データに対する出力値を得ることが情報技術などの技術分野では一般に行われている。その一つの例として、音声認識などで用いられるＨＭＭの出力確率を得るアルゴリズムがある。
【０００３】
このＨＭＭを用いた音声認識手法として連続分布型ＨＭＭを用いる方法が広く知られている。この連続分布型ＨＭＭを用いた音声認識は高い認識率を得ることができる反面、計算量が多いのが難点である。特にＨＭＭにおけるそれぞれの状態における出力確率（状態出力確率）を求めるには多くの演算量を必要とし、それに伴って、演算を行うために多くのメモリ領域を必要とするなどの問題がある。
【０００４】
ここで、音声分析されて得られたある時刻における特徴ベクトルＹについて、状態ｉから状態ｊへ遷移する時の出力確率をｂij（Ｙ）で表し、無相関正規分布に従うとすれば、 ｂij（Ｙ）は下記の（１）式で表すことができる。
【０００５】
【数１】
0003991629.tif 000002
このとき、入力ベクトルＹは、入力音声をある時刻（時刻ｔ１，時刻ｔ２，・・・）ごとに、たとえば２０msecというような長さで分析して得られたｎ次元（ｎは正の整数）の成分（ＬＰＣケプストラムなど）で表される。たとえば、時刻ｔ１，ｔ２，ｔ３，・・・における入力ベクトルをＹ１，Ｙ２，Ｙ３，・・・で表すとすれば、時刻ｔ１における入力ベクトルＹ１は（１ｙ１，１ｙ２，・・・、１ｙｎ）、 時刻ｔ２における入力ベクトルＹ２は（２ｙ１，２ｙ２，・・・、２ｙｎ）、 時刻ｔ３における入力ベクトルＹ３は（３ｙ１，３ｙ２，・・・、３ｙｎ）というように表される。
【０００６】
なお、上述の（１）式において、ｋはある時刻における入力ベクトルＹの成分の次元数を表し、１からｎのいずれかの値をとる。また、σij(k)は状態ｉからｊの場合のｋ次元における分散、μij(k)は状態ｉからｊの場合のｋ次元における平均値を表す。
【０００７】
【発明が解決しようとする課題】
しかし、この（１）式は計算量がきわめて多いのが問題である。特に、小型、軽量、安価な製品においては、使用されるハードウエアに大きな制約があるため、（１）式のような複雑な計算を決められた時間内に行うのは不可能であるといっても過言ではない。
【０００８】
この問題を解決する手法として、たとえば、特開平９−６３８２のように、出力確率計算時にスカラ量子化を行う方法が提案されている。
【０００９】
図８はそのスカラ量子化について説明するもので、ある音素ＨＭＭにおけるある状態（状態ｉから状態ｊ）の入力データ（特徴ベクトルのある次元ｋ）に対する出力確率分布において、ｋ次元の特徴データｙｋは、この場合、コードＣ１，Ｃ２，・・・，ＣＭのいずれかの値で近似される。この図８の例では、 ｋ次元の特徴データｙｋはその特徴データｙｋの最近傍のコードＣｍに置き換えられ、そのコードＣｍをもとに、予め作成されたテーブルを参照することで、 ｋ次元の特徴データｙｋを出力する確率（出力確率）を得ることができる。
【００１０】
このように、スカラ量子化を行うことによってテーブル参照でｋ次元の特徴データの出力確率を得ることができ、前述した複雑な数式を用いて計算するのに比べれば、計算量を大幅に削減することができるが、テーブル参照によって得られる出力確率は、図８からもわかるように、本来の値に対して、Δεの誤差を生じることになる。この誤差Δεがそれ以降の認識処理に影響を与えて認識結果を劣化させる原因ともなる。
【００１１】
これを解決する手段として、テーブルサイズを大きくして量子化誤差をできるだけ小さくすることも考えられるが、テーブルサイズを大きくすると、そのテーブルを記憶させるためのメモリ（ＲＯＭ）領域を確保する必要があり、大容量のメモリが必要となるといった問題もある。
【００１２】
また、スカラ量子化する方法は、確かに、前述した複雑な数式を用いて計算するのに比べれば、計算量を大幅に削減することができるが、このスカラ量子化による方法でも、入力された特徴データ（それぞれの次元ごとの特徴データ）がどのコードに近いかを調べるために、それぞれのコードとの差分を取って比較する演算が必要であり、その計算量は処理対象となる入力データ全体について考えるときわめて多いものとなる。
【００１３】
以上はＨＭＭの音声認識などで用いられるＨＭＭの出力確率を得るアルゴリズムについて説明したが、このような問題は、前述したように、入力データをある複雑なアルゴリズムを必要とする関数に与えることによって、その入力データに対する値を得る必要のあるデータ処理を行う場合に一般的に言えることである。
【００１４】
そこで本発明は、入力データをある関数に与えることによって、その入力データに対する値を得る必要のあるデータ演算を少ない演算量でしかも精度の必要な部分には高精度な出力値を得ることができるようすることを目的としている。
【００１５】
【課題を解決するための手段】
上述した目的を達成するために、本発明のデータ演算処理方法は、入力データをある関数に与えることによって、その入力データに対する出力値を得るデータ演算を簡略化するデータ演算処理方法であって、そのデータ演算処理方法は、前記入力データの取り得る範囲を、少なくとも、その入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得るようにしている。
【００１６】
このデータ演算処理方法において、前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間は、２進法で表現された入力データの上位ｎビット（ｎは正の整数で、入力データのビット数Ｎとしたとき、ｎ＜Ｎ）のビットの組み合わせに対応して存在し、そのビットの組み合わせに対応する区間が、前記入力データに対する出力値を高精度に得る必要のある区間であるか、多少の誤差が許容される区間であるかを決めておくようにする。
【００１７】
そして、前記入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得る処理は、階層構造に作成されたテーブル群のテーブルを順次参照することによって行い、この階層構造に作成されたテーブルを順次参照する処理は、２進法で表現された入力データの前記上位ｎビットを読み込み、そのｎビットのビット内容をkeyとして、前記階層構造のテーブル群のうちの先頭テーブルを参照し、その先頭テーブルにおいて、次に参照すべきテーブルの指示があればその参照すべきテーブル情報と前記上位ｎビットに続く次に読み込むべきビット数の指示があればその読み込みビット数を得て、当該参照すべきテーブルを前記読み込むべきビット数に対応する入力データのビット内容をkeyとして参照する処理を、次に参照すべきテーブルの指示のない終端テーブルまで行い、この終端テーブルの直前のテーブルで指示される読み込むべきビット数に対応する入力データのビット内容をkeyとして当該終端テーブルを参照することで、当該入力データに対する出力値を得るようにする。
【００１８】
また、前記出力値を高精度に得る必要のある区間における入力データに対する出力値は、その区間において入力データの取り得る個々の入力データ値に対応した出力値とし、その出力値がその区間において取り得る入力データの個々の値に対応して記述された終端テーブルとして用意される。
【００１９】
また、前記多少の誤差が許容される区間における入力データに対する出力値は、当該多少の誤差が許容される区間ごとまたはその区間をさらに細分化した区間ごとの出力値とし、その出力値がそれぞれの区間に対応して記述された終端テーブルとして用意される。
【００２０】
また、多少の誤差が許容される区間における入力データに対する出力値は、その区間における関数曲線を近似して求めるようにすることも可能である。
【００２１】
なお、この関数曲線の近似する方法として直線近似を用いることが可能である。
【００２２】
また、前記入力データに対する出力値を高精度に得る必要のある区間と多少の誤差が許容される区間の他に、入力データに対して予め決められたある一定値をその区間の出力値とする区間を設けることも可能である。
【００２３】
また、前記入力データをある関数に与えることによって、その入力データに対する出力値を所定のアルゴリズムに従って得るデータ演算を、ＨＭＭにおける出力確率を求める演算に用いることができる。
【００２４】
また、本発明のデータ演算処理プログラムを記録した記録媒体は、入力データをある関数に与えることによって、その入力データに対する出力値を得るデータ演算を簡略化するデータ演算処理プログラムを記録した記録媒体であって、その演算処理プログラムは、そのデータ演算処理方法は、前記入力データの取り得る範囲を、少なくとも、その入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得るようにしている。
【００２５】
このデータ演算処理プログラムを記録した記録媒体において、前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間は、２進法で表現された入力データの上位ｎビット（ｎは正の整数で、入力データのビット数Ｎとしたとき、ｎ＜Ｎ）のビットの組み合わせに対応して存在し、そのビットの組み合わせに対応する区間が、前記入力データに対する出力値を高精度に得る必要のある区間であるか、多少の誤差が許容される区間であるかを決めておくようにする。
【００２６】
そして、前記入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得る処理は、階層構造に作成されたテーブル群のテーブルを順次参照することによって行い、この階層構造に作成されたテーブルを順次参照する処理は、２進法で表現された入力データの前記上位ｎビットを読み込み、そのｎビットのビット内容をkeyとして、前記階層構造のテーブル群のうちの先頭テーブルを参照し、その先頭テーブルにおいて、次に参照すべきテーブルの指示があればその参照すべきテーブル情報と前記上位ｎビットに続く次に読み込むべきビット数の指示があればその読み込みビット数を得て、当該参照すべきテーブルを前記読み込むべきビット数に対応する入力データのビット内容をkeyとして参照する処理を、次に参照すべきテーブルの指示のない終端テーブルまで行い、この終端テーブルの直前のテーブルで指示される読み込むべきビット数に対応する入力データのビット内容をkeyとして当該終端テーブルを参照することで、当該入力データに対する出力値を得るようにする。
【００２７】
また、前記出力値を高精度に得る必要のある区間における入力データに対する出力値は、その区間において入力データの取り得る個々の入力データ値に対応した出力値とし、その出力値がその区間において取り得る入力データの個々の値に対応して記述された終端テーブルとして用意される。
【００２８】
また、前記多少の誤差が許容される区間における入力データに対する出力値は、当該多少の誤差が許容される区間ごとまたはその区間をさらに細分化した区間ごとの出力値とし、その出力値がそれぞれの区間に対応して記述された終端テーブルとして用意される。
【００２９】
また、多少の誤差が許容される区間における入力データに対する出力値は、その区間における関数曲線を近似して求めるようにすることも可能である。
【００３０】
なお、この関数曲線の近似する方法として直線近似を用いることが可能である。
【００３１】
また、前記入力データに対する出力値を高精度に得る必要のある区間と多少の誤差が許容される区間の他に、入力データに対して予め決められたある一定値をその区間の出力値とする区間を設けることも可能である。
【００３２】
また、前記入力データをある関数に与えることによって、その入力データに対する出力値を所定のアルゴリズムに従って得るデータ演算を、ＨＭＭにおける出力確率を求める演算に用いることができる。
【００３３】
このように本発明は、入力データの取り得る範囲を、少なくとも、前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値が取得できるようにしているので、出力値としてのデータを必要以上に持つ必要がなくなり、データを記憶させるためのメモリ領域の占有度を小さくすることができる。
【００３４】
また、入力データに応じた分解能で出力を得ることができることから、精度が必要とされる入力データに対してはその出力を高精度に得ることができ、多少の誤差が許容される入力データに対してはその出力を許容される誤差範囲で得ることができ、これによって、その出力値を用いたそれ以降のデータ処理を高精度に行うことができる。
【００３５】
また、入力データの上位ｎビットのビットの組み合わせに対応する区間が、前記入力データに対する出力値を高精度に得る必要のある区間であるか、多少の誤差が許容される区間であるかを決めておくことによって、入力データの上位ｎビットのビット内容により、その入力データがどの区間に存在するデータであるかを判定することができる。
【００３６】
そして、前記入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得る処理は、階層構造に作成されたテーブルを順次参照するだけでよいので、簡単で高速に入力データに対する出力値を得ることができる。
【００３７】
また、出力値を高精度に得る必要のある区間における入力データに対する出力値は、その区間において入力データの取り得る個々の入力データ値に対応した出力値とし、それをテーブルとして持つようにしているので、入力データに対し高精度な出力値を得ることができ、しかも、その出力値をテーブル参照だけで得ることができる。
【００３８】
また、多少の誤差が許容される区間における入力データに対する出力値は、当該多少の誤差が許容される区間ごとまたはその区間をさらに細分化した区間ごとの出力値としているので、この多少の誤差が許容される区間においては、区間ごとの代表値のみをデータとして持てばよいので、テーブルサイズの無駄を省くことができ、しかも、テーブル参照だけで、それぞれの区間に存在する入力データに対する出力値を得ることができるので、従来のスカラ量子化のように入力データがどのコードに近いかを見るための比較計算が不要となり計算量の削減が図れる。
【００３９】
また、このような多少の誤差が許容される区間における入力データに対する出力値は、その区間における関数曲線を近似して求めるようにしてもよく、これによっても、関数をそのまま計算するのに比べて計算量の削減が図れ、しかも、入力データに対し良好な精度を有した出力値を得ることができる。
【００４０】
なお、この関数曲線を近似する方法の一つとして直線近似があり、この直線近似法を用いることによって、演算量をより少なくすることができる。
【００４１】
また、入力データに対する出力値を高精度に得る必要のある区間と多少の誤差が許容される区間の他に、入力データに対して予め決められたある一定値をその区間の出力値とする区間を設けるようにしている。この区間は精度の要求されない区間であるため、ある一定値で置き換えるたとしても、それ以降の処理に特に問題がなく、これによって、より一層の演算量の削減を図ることができる。
【００４２】
また、本発明はＨＭＭにおける出力確率を求める演算に適用することができ、これによれば、精度が必要とされる特徴データに対してはその出力確率を高精度に得ることができ、多少の誤差が許容される特徴データに対してはその出力確率を許容される誤差範囲で得ることができるというように、入力される特徴データに応じた分解能での出力確率を得ることができる。
【００４３】
そして、その出力確率を得る処理は、階層構造に作成されたテーブルを順次参照するだけあるいは簡単な近似計算で済む。これによって、少ない演算量で高速に出力確率を得ることができ、また、不必要な出力確率値を持たないので、メモリ領域の占有度を小さくすることができるなどの効果が得られ、さらに、精度が必要な部分に対しては高精度な出力確率値を得ることができるので、高い認識性能を得ることができる。
【００４４】
【発明の実施の形態】
以下、本発明の実施の形態について説明する。なお、この実施の形態で説明する内容は、本発明のデータ演算処理方法の説明であるとともに、データ演算処理プログラムを記録した記録媒体のデータ演算処理プログラムの内容についての説明を含むものである。
【００４５】
まず、図１により本発明のデータ演算方法の基本的な処理について説明する。この図１はある関数によって表される曲線を示すもので、この関数はある複雑なアルゴリズムによって入力データｘに対する出力値ｙが得られるものであるとする。また、ここでは入力データｘは６ビットで表現されるものとする。したがって、この関数の定義域は１０進法で示せば、０から６３とすることができる。
【００４６】
本発明は、ある入力データｘに対する出力値ｙを少ない演算量で、しかも、精度の要求される部分に対しては高精度に得るかを課題とするもので、本発明では、入力データが関数の定義域のどこに存在する入力データかによって、その入力データに対する出力値の精度を変えるようにしている。
【００４７】
すなわち、入力データの取り得る範囲（関数の定義域）を、少なくとも、その入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、その入力データがどの区間に存在するかを判定し、判定された区間に対応した分解能の出力値を得るようにするものである。その方法として、本発明では、２つの方法（第１の方法と第２の方法）について説明する。
【００４８】
まず、第１の方法について説明する。この第１の方法は、テーブル参照のみによって入力データｘに対する出力値ｙを得るものである。
【００４９】
大まかにいえば、あるデータ処理を行うための関数の定義域のうち、入力データｘがこの入力データｘに対する出力値として高精度な値を得る必要のある区間に存在する場合には、入力データｘの値に対し高精度な出力値ｙを得ることができるようなテーブルを参照して、入力データｘに対する出力値ｙを得るようにし、また、入力データｘがこの入力データｘの値に対する出力値として多少の誤差が許容される区間に存在する場合には、それに対応するテーブルを参照して、入力データｘに対する出力値ｙを得るようにする。また、入力データｘに対する出力値がある一定値として差し支えないような区間に存在する場合には、その区間に存在する入力データをある一定値で置き換えるようにする。
【００５０】
これを図１に当てはめて考えると、たとえば、入力データｘの取り得る範囲において、区間Ａはこの区間Ａに存在する入力データｘに対する出力値をある一定値として差し支えないような区間であるとし、区間Ｂは入力データｘの値に対する出力値として多少の誤差が許容される区間であるとし、区間Ｃは入力データｘに対する出力値として高精度な値を得る必要のある区間であるとし、区間Ｄも区間Ｂと同様に入力データｘの値に対する出力値として多少の誤差が許容される区間であるとしている。
【００５１】
つまり、この実施の形態では、入力データｘに対する出力値ｙの変化が急峻である部分を、入力データｘに対する出力値として高精度な値を得る必要のある区間とし、入力データｘに対するｙの変化がそれ程急峻でない部分を、入力データｘの値に対する出力値として多少の誤差が許容される区間であるとし、入力データｘに対するｙの変化が殆どない部分を、入力データｘに対する出力値をある一定値として差し支えないような区間であるとしている。
【００５２】
以下、具体的な処理例について、図２のフローチャートと図３に示されるテーブルＴ０〜Ｔ６を用いて説明する。このテーブルＴ０〜Ｔ６は階層的な構造となっており、まず、階層の先頭に位置するテーブルＴ０を参照して、そのテーブルＴ０の内容の指示に基づいて、それよりあとの階層のテーブルを順次参照する。
【００５３】
なお、これらテーブルＴ０〜Ｔ６は、入力データｘから読み込んだビット内容、次に参照すべきテーブル番号、次に読み込むべきビット数、入力データｘに対して得られる出力値が記述されるデータ記述欄がある。これらテーブルＴ０〜Ｔ６の参照例については以下の処理手順の説明のなかで説明する。
【００５４】
ここでは、前述したように、入力データｘは６ビットで表現されるデータであるとし、今、「０１１０１１」の入力データｘが与えられたとする。
【００５５】
この「０１１０１１」の入力データｘにおいて、ここでは上位２ビットを見て、その２ビットからその入力データｘが定義域のどこに存在するかを判断する設定となっているものとする。
【００５６】
つまり、この場合、上位２ビットを用いているので、定義域（０〜６３）を４等分した区間（図１における区間Ａ，Ｂ，Ｃ，Ｄ）のどの区間に、その入力データｘが存在するかを判定することができる。ここでは、まず、上位２ビットをkeyとしてテーブルＴ０を参照し、そのテーブルＴ０の内容に応じた処理を順次行って行く。
【００５７】
また、ここでは、入力データｘの上位２ビットのビットの組み合わせ（「００」，「０１」，「１０」，「１１」）と前述した区間Ａ，Ｂ，Ｃ，Ｄの対応付けは、上位２ビット「００」を区間Ａ、上位２ビット「０１」を区間Ｂ、上位２ビット「１０」を区間Ｃであるとし、上位２ビット「１１」を区間Ｄとする。
【００５８】
まず、図２のフローチャートにおいて、テーブル番号と読み込みビット数を初期化し（ステップｓ１）、上述の「０１１０１１」の入力データにおいて、指定されたｎビット（この場合は、上位２ビット）を読み込む（ステップｓ２）。このとき、読み込まれた上位２ビットは「０１」であるから、その上位２ビット「０１」をkeyとして図３に示すテーブルＴ０を参照すると、次に参照すべきテーブルを示すテーブル情報（テーブル番号）と、次に読み込むべきビット数を得ることができる。
【００５９】
すなわち、この場合、次に参照すべきテーブルのテーブル番号として「Ｔ１」、次に読み込むべきビット数（上位２ビットに続くビット数）として「１」が得られる。なお、この図３に示すそれぞれのテーブルＴ０〜Ｔ６において、テーブル番号の欄に「−１」が記述されている場合には、それよりあとの階層のテーブル参照は行わないことを示し、この場合、現在参照しているテーブルを終端テーブルとし、この終端テーブルによって入力データｘに対する出力値を得ることができる。
【００６０】
このように、まず最初に、入力データの上位２ビット「０１」を読み込んで、その上位２ビット「０１」をkeyとしてテーブルＴ０を参照すると、次に参照すべきテーブル番号として「Ｔ１」、次に読み込むべきビット数として「１」を得ることができる。そして、この場合、入力データｘは「０１１０１１」であり、テーブルＴ０の指示によって読み込んだ１ビット（上位２ビット「０１」に続く１ビット）の値は、「１」であるので、この読み込んだ１ビットの値「１」をkeyとしてテーブルＴ１を参照すると、次に参照すべきテーブルのテーブル番号「Ｔ５」と、次に読み込むべきビット数「２」を得る。
【００６１】
つまり、この場合、図２のフローチャートにおては、テーブルＴ１を参照したとき、そのテーブルＴ１に記述された次に読み込むべきテーブル番号が「−１」であるか否かを判定するが（ステップｓ３）、ここでは、まだ、次に参照すべきテーブル番号が「−１」ではないので、テーブル参照は終わりではなく、次に参照すべきテーブル番号として「Ｔ５」、次に読み込むべきビット数として「２」を取得する（ステップｓ４）。
【００６２】
そして、ステップｓ２に戻って、今度は、ステップｓ４で取得した読み込むべきビット数だけ、入力データのビット（この場合、「０１１」に続く２ビット「０１」）を読み込み、読み込んだ「０１」をkeyとしてテーブルＴ５を参照すると、次に参照すべきテーブル番号として「−１」が記述されているので、それより後の階層のテーブル参照を行う必要の無いことがわかる（次に読み込むべきビット数は「０」となっている）。
【００６３】
したがって、このテーブルＴ５を終端テーブルとし、このテーブルＴ５によって入力データｘに対する出力値を得ることができる。このテーブルＴ５によれば、その出力値として「４」が記述されており、この「４」を入力データｘに対する出力値として得ることができる（ステップｓ５）。
【００６４】
以上の処理を図１に対応させて説明すると、まず、 「０１１０１１」の入力データｘにおいて、上位２ビットが「０１」であるので、この入力データはこの関数の定義域における区間Ｂに存在する入力データであることがわかる。なお、この区間Ｂは、この場合、入力データｘに対する出力値は多少の誤差が許容される区間としている。
【００６５】
そして、この区間Ｂにおいては、テーブルＴ０によれば、上位２ビットに続くビット数として、１ビットを読み込むことになっているので、この区間Ｂをさらに２等分して区間Ｂ１とＢ２に分けて考えることができる。この場合、区間Ｂ１は上位２ビットに続く１ビットの値が「０」、区間Ｂ２は上位２ビットに続く１ビットの値が「１」に対応している。
【００６６】
上述の入力データｘ が「０１１０１１」の例では、上位２ビットに続く１ビットの値が「１」であるので、区間Ｂ２であり、この場合、テーブルＴ１によれば、さらに、そのあとに続く２ビットを読み込むことになっているので、区間Ｂ２をさらに４等分した区間Ｂ２１，Ｂ２２，Ｂ２３，Ｂ２４のどれかに入力データｘが存在することになる。
【００６７】
この場合、テーブルＴ１の指示による読み込みビット数「２」に対応する入力データのビット内容は「０１」（「０１１」に続く２ビット）であるので、「０１１０１１」の入力データｘは区間Ｂ２２に存在することになる。
【００６８】
そして、その読み込んだ２ビット「０１」をkeyとしてテーブルＴ５を参照すれば、このテーブルＴ５にはそれ以上のテーブル参照はせず、その段階で入力データｘに対して出力値を得るようになっている。ここで、このテーブルＴ５には入力データｘに対する出力値として「４」が記述されているので、この入力データｘに対しては「４」という出力値を得ることができる。
【００６９】
つまり、この場合、入力データ「０１１０１１」は区間Ｂ２２に存在することになり、この区間Ｂ２２に存在する入力データｘに対してはすべて出力値として「４」が得られることになる。
【００７０】
このテーブルＴ５からもわかるように、区間Ｂ２１，Ｂ２２，Ｂ２３，Ｂ２４においては、それぞれの区間ごとに入力データｘに対する値が予め求められていて、このテーブルＴ５によれば、区間Ｂ２１に存在する入力データｘに対しては出力値として「３」が得られ、区間Ｂ２２に存在する入力データｘに対しては出力値として「４」が得られ、区間Ｂ２３に存在する入力データｘに対してはこの場合も出力値として「４」が得られ、区間Ｂ２４に存在する入力データｘに対しては出力値として「５」が得られるというように、それぞれの区間ごとに出力値が求められている。
【００７１】
これらそれぞれの区間の出力値は、実際の計算値に対しては多少の誤差を生じる場合もあるが、この区間Ｂでは多少の誤差は許容されることになっているので、この出力値は実用に十分耐えうるものとなる。
【００７２】
また、上述の例で、もし、入力データの上位２ビットに続く１ビットの値が「０」であるとすれば、つまり、入力データｘが「０１００１１」であったとすれば、「０」をkeyとしてテーブルＴ１を参照することになる。この場合は、入力データｘの上位２ビットに続く１ビットの値が「０」であるので、図１において、区間ＢにおけるＢ１に「０１００１１」の入力データｘが存在することになる。
【００７３】
また、この場合、このテーブルＴ１によれば、次に参照すべきテーブルはテーブルＴ４であり、読み込むビット数は１ビットであるので、この区間Ｂ１をさらに２等分した区間Ｂ１１，Ｂ１２のいずれかに「０１００１１」の入力データｘが存在することになる。この場合、テーブルＴ１の指示による読み込みビット数「１」に対応する入力データのビット内容は「０」（「０１０」に続く１ビット）であるので、「０１００１１」の入力データｘは区間Ｂ１１に存在することになる。
【００７４】
そして、その「０」をkeyとしてテーブルＴ４を参照する。このテーブルＴ４によれば、次に続くテーブル番号は「−１」となっているので、それよりあとのテーブル参照は行わず、このテーブルＴ４を終端テーブルとして出力値を得る。この場合、出力値は「２」と記述されているので、その「２」を入力データ「０１００１１」の出力値とする。
【００７５】
このように、「０１００１１」の入力データｘは区間Ｂ１１に存在することになり、この区間Ｂ１１に存在する入力データｘに対してはすべて出力値として「２」が得られることになる。
【００７６】
このテーブルＴ４からもわかるように、区間Ｂ１１，Ｂ１２においては、それぞれの区間ごとに入力データｘに対する値が予め求められていて、このテーブルＴ４によれば、区間Ｂ１１に存在する入力データｘに対しては出力値として「２」が得られ、区間Ｂ１２に存在する入力データｘに対しては出力値として「３」が得られるというように、それぞれの区間ごとに出力値が求められている。
【００７７】
これらそれぞれの区間Ｂ１１，Ｂ１２の出力値は、実際の計算値に対しては多少の誤差を生じる場合もあるが、この区間Ｂでは多少の誤差は許容されることになっているので、この出力値は実用に十分耐えうるものとなる。なお、区間Ｂ１は区間Ｂ２よりもさらに誤差が大きくなる可能性が高い。
【００７８】
次に、入力データｘが「１００１００」である場合について考える。まず、上位２ビットを読み込むが、この場合、上位２ビットは「１０」であるので、この「１０」をkeyとしてテーブルＴ０を参照すると、次に参照すべきテーブル番号として「Ｔ２」、次に読み込むべきビット数として「４」を得ることができる。
【００７９】
これにより、読み込んだ４ビット（上位２ビット「１０」に続く４ビット）の値が、「０１００」であるので、この読み込んだ４ビットの値「０１００」をkeyとしてテーブルＴ２を参照すると、次に参照すべきテーブル番号として「−１」が記述されているので、この段階でテーブル参照は終了し、このテーブルＴ２を終端テーブルとして、入力データｘに対する出力値「９」を得ることができる。
【００８０】
このように、入力データｘの上位２ビット「１０」は、この図１の例では、区間Ｃに相当し、ここでは、区間Ｃは入力データｘに対して高精度な出力値を得ることが要求される区間としている。この場合、区間Ｃ（入力データの取りうる範囲０〜６３を４等分したうちの１つの区間）おいては、１６通りの入力データｘのすべてに対してデータを得ることができるようにしている。
【００８１】
次に、入力データｘが「１１０１０１」である場合について考える。まず、上位２ビットを読み込むが、この場合、上位２ビットは「１１」であるので、この「１１」をkeyとしてテーブルＴ０を参照すると、次に参照すべきテーブル番号として「Ｔ３」、次に読み込むべきビット数として「１」を得ることができる。
【００８２】
これにより、読み込んだ１ビット（上位２ビット「１１」に続く１ビット）の値が、「０」であるので、この読み込んだ１ビットの値「０」をkeyとしてテーブルＴ３を参照すると、次に参照すべきテーブル番号として「Ｔ６」、次に読み込むべきビット数「０」を得ることができる。
【００８３】
この場合、読み込むべきビット（上位ビット「１１０」に続くビット）が「１」であるので、この「１」をkeyとしてテーブルＴ６を参照すると、次に参照すべきテーブル番号として「−１」が記述されているので、それより後の階層のテーブル参照を行う必要の無いことがわかる。
【００８４】
したがって、このテーブルＴ６を終端テーブルとして、入力データｘに対する値を得ることができる。このテーブルＴ６によれば、その値として「３」を得ることができ、この「３」が入力データｘに対する出力値となる。
【００８５】
この入力データｘが「１１０１０１」の処理を図１に対応させて説明すると、まず、 「１１０１０１」の入力データｘにおいて、上位２ビットが「１１」であるので、この入力データｘは区間Ｄに存在する入力データであることがわかる。なお、この区間Ｄは、この場合、入力データｘに対する出力値は多少の誤差が許容される区間としている。
【００８６】
そして、この区間Ｄにおいては上位２ビットに続くビット数として１ビットを参照することになっているので、この区間Ｄをさらに２等分して区間Ｄ１とＤ２に分けて考えることができる。
【００８７】
この場合、区間Ｄ１は上位２ビットに続く１ビットが「０」、区間Ｂ２は上位２ビットに続く１ビットが「１」に対応している。上述の例では、上位２ビットに続く１ビットが「０」であるので、区間Ｄ１であり、この場合、テーブルＴ３によれば、さらに、そのあとに続く１ビットを読み込むことになっているので、区間Ｄ１をさらに２分割した区間Ｄ１１，Ｄ１２にいずれかに入力データｘが存在することになる。
【００８８】
そして、ここで読み込んだ１ビット（上位ビット「１１０」に続く１ビット）の値が「１」であるので、この入力データは区間Ｄ１２に存在し、この「１」をkeyとしてテーブルＴ６を参照すると、次に参照すべきテーブル番号が「−１」となっているので、それよりあとのテーブル参照はせず、このテーブルＴ６を終端テーブルとし、この入力データｘに対しては「３」という値を得ることができる。
【００８９】
つまり、区間Ｄ１１，Ｄ１２においては、それぞれの区間ごとに入力データｘに対する値が予め求められていて、このテーブルＴ６によれば、区間Ｄ１１であれば入力データｘに対しては「４」が得られ、区間Ｄ１２であれば入力データｘに対しては「３」が得られるというようにそれぞれの区間ごとのデータが実際の計算値に対しては多少の誤差を許容する値として得られるようになっている。
【００９０】
また、上述の例で、もし、入力データｘの上位２ビットに続く１ビットの値が「１」、つまり、入力データｘが「１１１１０１」であるとすれば、テーブルＴ３において、次に参照すべきテーブルが「−１」となっているので、それ以上のテーブル参照はせず、このテーブルＴ３を終端テーブルとし、このテーブルＴ３により入力データｘに対する出力値「２」を得ることができる。
【００９１】
この入力データの上位２ビットに続く１ビットの値が「１」というのは、図１において、区間Ｄを細分化して得られた区間Ｄ２に相当し、入力データｘがこの区間Ｄ２内に存在したときは、それに対する値を一律に「２」としている。
【００９２】
次に、入力データｘが「００１０１０」である場合について考える。まず、上位２ビットを読み込むが、この場合、上位２ビットは「００」であるので、この「００」をkeyとしてテーブルＴ０を参照すると、次に参照すべきテーブル番号として「−１」が記述されているので、この場合は、それ以降のテーブル参照は行わずに、この先頭のテーブルＴ０を終端テーブルとし、そのまま入力データｘに対する出力値「２」を得るようにしている。
【００９３】
このように上位ビットが「００」である場合には、図１における区間Ａに入力データが存在する場合であり、ここでは、区間Ａは、入力データｘに対して一定の値を出力するような設定となっているので、この場合は、入力データｘが区間Ａに存在する場合には、一律に、予め設定された「２」を出力するようにしている。
【００９４】
以上はある関数を用いて入力データｘに対する出力ｙを階層的な構造を有するテーブルを参照することにより、入力データｘに応じた分解能の出力を得る方法について説明した。
【００９５】
この第１の方法によれば、複雑な関数式をそのまま計算することなくテーブル参照だけで入力データｘに対する出力値ｙを求めることができ、しかも、精度が必要とされる入力データｘに対してはその出力値を高精度に得ることができ、多少の誤差が許容される入力データｘに対しては許容される誤差範囲での出力値を得ることができるというように、入力データｘに応じた分解能で出力を得ることができるようにしているので、テーブルサイズの無駄を省くことができる。
【００９６】
また、この第１の方法は、一種のスカラ量子化とも言えるが、従来のスカラ量子化と異なる点は、従来のスカラ量子化は入力データに対する代表値を決める場合、入力データと代表値を比較してどの代表値に最も近いかを決める演算がそれぞれの入力データｘごとに必要であったが、この第１の方法ではその必要はなく、入力データｘに対して、多くても数回のテーブル参照を行うだけでその出力値を得ることができるので、比較のための引き算などの計算を不要とできることも大きな特徴の一つである。
【００９７】
次に第２の方法について説明する。この第２の方法は、多少の誤差が許容される区間（上述の第１の方法において説明した図１における区間Ｂなど）においては、その区間の関数曲線を近似して入力データに対する出力を求めるようにするというものである。その具体例について、前述の第１の方法で用いた図１および図３のテーブルを参照して以下に説明する。なお、ここでは、関数曲線を近似する方法として演算量の少ない直線近似を用いた例について説明する。
【００９８】
なお、ここでは、入力データｘが区間Ｃ（高精度な出力値の要求される区間）に存在する場合には、前述と同様、テーブルＴ０とテーブルＴ２を用いてその入力データｘに対する出力値を得るようするが、それ以外の区間に存在する場合には、関数曲線を直線近似して入力データに対する出力を求めるか、入力データｘに対しある一定値を出力するものとする。
【００９９】
ここでは、説明を簡単にするために、入力データｘが区間Ｂと区間Ｄに存在する場合には、その区間の関数曲線を直線近似して入力データｘに対する出力を求め、入力データｘが区間Ａに存在する場合には、入力データｘに対する出力はある一定値を出力するというような設定を行っておくものとする。
【０１００】
この第２に方法においても入力データｘがどの区間に存在するかを判断する必要があるが、それは、前述したように、この実施の形態の例では、入力データｘの上位２ビットを読み込むことによって判断できる。たとえば、入力データｘが「０１１０１１」である場合には、上位２ビットが「０１」であるので区間Ｂに存在する。
【０１０１】
このように、入力データｘが区間Ｂに存在する場合には、ここでは、その区間における関数曲線を直線近似して入力データに対する出力を求めることにしているので、図４に示すように、区間Ｂを直線Ｌ１で直線近似して、その直線Ｌの傾きｇを求め、予め求められている代表値（たとえば、区間Ｂの開始点に対する出力を代表値ｙｂとして予め求めておく）と直線Ｌの傾きｇを用いることによって、その区間Ｃ内に存在する入力データｘに対する出力値を求めることができる。
【０１０２】
なお、この直線近似によって入力データｘに対する出力を求める方法は本発明においては特に限定されるものではなく、種々の方法を用いることができる。入力データｘが区間Ｄに存在する場合も同様にして求めることができる。
【０１０３】
また、ここでは、区間Ｂおよび区間Ｄをそれぞれ１つの区間として、それら区間Ｂと区間Ｄをそれぞれ直線近似した例について説明したが、これらの区間Ｂと区間Ｄをそれぞれ細分化してその細分化されたそれぞれの区間において直線近似を行って入力データｘに対する出力を求めるようにしてもよい。
【０１０４】
たとえば、前述の第１の方法で説明したように、区間Ｂにおいては、区間Ｂ１と区間Ｂ２に２等分し、さらに、区間Ｂ２については区間Ｂ２１，Ｂ２２，Ｂ２３，Ｂ２４というように４等分している。このように、それぞれの区間を細分化して、それぞれ細分化された区間ごとにその区間の関数曲線を直線近似してもよい。
【０１０５】
図５の例は、区間Ｂを区間Ｂ１と区間Ｂ２に２等分し、それぞれの区間Ｂ１，Ｂ２をそれぞれ直線Ｌ１，Ｌ２で直線近似した例であり、この場合、それぞれの区間Ｂ１，Ｂ２の代表値ｙｂ１，ｙｂ２と傾きｇ１，ｇ２を求めておき、それら代表値ｙｂ１，ｙｂ２と傾きｇ１，ｇ２を用いることによって、それぞれの区間Ｂ１，Ｂ２内に存在する入力データｘに対する出力を求めることができる。
【０１０６】
以上説明したようにこの第２の方法では、第１の方法と同様、複雑な関数式をそのまま計算することなくテーブル参照のみ、あるいは、テーブル参照に加えて近似値を求めるための簡単な計算だけで入力データｘに対する出力ｙを求めることができる。
【０１０７】
なお、この第２の方法では、関数曲線を近似する方法として、演算量の少ない直線近似を用いたが、直線近似以外の近似方法を用いてもよいことは勿論である。たとえば、より精度が必要であれば、直線近似法よりは多少演算量は増えるが、シンプソン法と呼ばれる近似法を用いることもできる。このシンプソン法による近似法は、直線近似に比べれば、確かに、演算量は多少増えるが、前述した従来の演算方法に比べれば演算量を削減でき、しかも、実用上、十分な精度を得ることが可能となる。
【０１０８】
また、上述した第１の方法および第２の方法においては、関数曲線の変化が急峻な区間を高精度な出力を得る必要のある区間とし、変化がそれ程急峻でない区間は多少の誤差を許容できる区間として説明したが、これに限られるものではなく、たとえば、変化がそれ程急峻でない区間であっても高精度な出力を得る必要のある場合もあり、変化が急峻であっても多少の誤差を許容できる場合もあり、どの区間を高精度な出力を得るようにするか、どの区間は多少の誤差を許容できる区間とするかなどは任意に設定することができる。
【０１０９】
以上、本発明の基本的な処理について説明したが、本発明は、音声認識などに用いられるＨＭＭの出力確率を求める際の処理に適用することで好結果を得ることができる。
【０１１０】
図６はある音素ＨＭＭにおけるある状態（状態ｉから状態ｊ）の入力データ（音声分析されて得られたある時刻の特徴ベクトルのある次元の特徴データ）に対する出力確率分布を示すもので、これは、前述の図１に示す関数曲線に相当すると考えることができ、このような出力確率分布において、前述した第１の方法あるいは第２の方法を用いて、入力データ（ある次元ｋの特徴データｙｋ）に対する出力確率を得ることができる。
【０１１１】
ここでは、特徴データｙｋを前述の第１の方法あるいは第２の方法と同様、６ビットで表されるデータとし、その特徴データの取り得る値の範囲（関数の定義域）を説明の都合上、図１と同様、区間Ａ、区間Ｂ、区間Ｃ、区間Ｄの４つの区間に分けるものとする。
【０１１２】
ここで、区間Ａは出力確率分布の端部付近で出力確率の変化の殆どない区間、区間Ｂは出力確率の変化が比較的なだらかで特徴データの出現頻度もそれほどは多くない区間、区間Ｃは出力確率の変化が激しく、特徴データの出現頻度も高い区間（出力確率分布の平均μij(k)の前後の区間）、区間Ｄは区間Ｂと同じく出力確率の変化が比較的なだらかで特徴データの出現頻度もそれほどは多くない区間であるとする。
【０１１３】
この図６における区間Ａ，Ｂ，Ｃ，Ｄを図１の区間Ａ，Ｂ，Ｃ，Ｄに対応付けるとすれば、図６における区間Ａは図１の区間Ａに、図６における区間Ｂは図１の区間Ｂに、図６における区間Ｃは図１の区間Ｃ、図６における区間Ｄは図１における区間Ｄにそれぞれ対応する区間であるといえる。
【０１１４】
したがって、ここでは、入力データとしてのある次元ｋの特徴データｋが区間Ｃに存在した場合には、高精度な出力確率が得られるようにし、また、特徴データｙｋが区間Ｂまたは区間Ｄに存在した場合には、多少の誤差は許容できるがある程度の精度を持った出力確率を得られるようにし、特徴データｙｋが区間Ａに存在した場合には、予め決められたある一定値した出力確率を得るようにするというような区間ごとの設定を行う。
【０１１５】
具体的な処理動作としては前述の第１の方法あるいは、第２の方法と同様に行うことができる。たとえば、ある時刻ｔの特徴ベクトルＹｔを構成するある次元（ｋ次元）の特徴データｙｋが前述の第１の方法あるいは第２の方法で用いた入力データｘに相当するので、仮に、特徴データｙｋが「０１１０１１」であったとすれば、前述したと同じ処理を実行することで、特徴ベクトルｙｋに対する出力確率を得ることができる。
【０１１６】
なお、本来はこのＨＭＭの出力確率分布に対応したテーブルを作成し、そのテーブルに従って処理を行うのであるが、ここでは、便宜的に前述の第１の方法と同じテーブルを用いて説明を行うことにする。
【０１１７】
すなわち、その「０１１０１１」の特徴データｙｋにおいて、上位２ビットを読み込む。この場合、上位２ビットは「０１」であるから、その上位２ビット「０１」をkeyとして図３に示すテーブルＴ０を参照すると、次に参照すべきテーブルのテーブル番号として「Ｔ１」、次に読み込むべきビット数「１」を得る。
【０１１８】
そして、読み込んだ１ビット（上位２ビット「０１」に続く１ビット）の値「１」をkeyとしてテーブルＴ１により次に参照すべきテーブルＴ５を得るとともに、次に読み込むべきビット数「２」を得る。
【０１１９】
そして、今度は、読み込んだ２ビット（この場合、「０１１」に続く２ビット「０１」）をkeyとしてテーブルＴ５を参照すると、次に参照すべきテーブル番号として「−１」が記述されているので、この段階で特徴データｙｋに対する出力確率値を得ることができる。
【０１２０】
この処理を図６に対応させて説明すると、まず、 「０１１０１１」の値を有する特徴データｙｋについて上位２ビットが「０１」であるので、この特徴データｙｋは区間Ｂ内に存在する入力データであることがわかる。なお、この区間Ｂにおいては、この場合、入力データｘに対して求められる値は多少の誤差が許容される区間としている。
【０１２１】
そして、この区間Ｂにおいては上位２ビットに続くビット数として、１ビットを読み込むことになっているので、この区間Ｂをさらに２等分して区間Ｂ１とＢ２に分けて考えることができる。この場合、区間Ｂ１は上位２ビットに続く１ビットの値が「０」、区間Ｂ２は上位２ビットに続く１ビットの値が「１」に対応している。
【０１２２】
このように、特徴データｙｋが「０１１０１１」の例では、上位２ビットに続く１ビットの値が「１」であるので、区間Ｂ２であり、この場合、テーブルＴ１によれば、さらに、そのあとに続く２ビットを読み込むことになっているので、区間Ｂ２をさらに４分割した区間Ｂ２１，Ｂ２２，Ｂ２３，Ｂ２４のどれかに特徴データｙｋが存在することになる（この特徴データｙｋは区間Ｂ２２に存在する）。
【０１２３】
そして、その読み込んだ２ビット「０１」をkeyとしてテーブルＴ５を参照すればによれば、このテーブルＴ５にはそれ以上のテーブル参照はせず、その段階で特徴データｙｋに対する出力確率を得ることができる。つまり、この場合、「０１１０１１」の特徴データｙｋは区間Ｂ２２に存在することになり、この区間Ｂ２２に存在する特徴データに対してはすべて同じ出力確率値が得られることになる。このように、テーブル参照だけで特徴データｙｋに対する出力確率値を得ることができる。
【０１２４】
なお、この大きく分けた区間Ｂは多少の誤差が許容される区間とされているので、この区間Ｂに特徴データｙｋが存在した場合には、多少の誤差のある出力確率が得られるが、音声認識結果に大きな影響を与えるものではない。
【０１２５】
また、特徴データｙｋが「１００１００」である場合について考える。この場合、上位２ビットは「１０」であるので、この「１０」をkeyとしてテーブルＴ０を参照すると、次に参照すべきテーブル番号として「Ｔ２」、次に読み込むべきビット数として「４」を得ることができる。
【０１２６】
これにより、読み込んだ４ビット（上位２ビット「１０」に続く４ビット）の値が、「０１００」であるので、この読み込んだ４ビットの値「０１００」をkeyとしてテーブルＴ２を参照すると、次に参照すべきテーブル番号として「−１」が記述されているので、この段階でテーブル参照は終了し、このテーブルＴ２により特徴データｙｋに対する出力確率値を得ることができる。
【０１２７】
このように、特徴データｙｋの上位２ビットの「１０」は、この図６の例では、区間Ｃに相当し、ここでは、区間Ｃは特徴データｙｋに対して高精度な出力確率値を得ることが要求される区間としている。したがって、この区間Ｃにおいては、取り得る特徴データｙｋのすべてに対応して出力確率値を得ることができるようにしている。
【０１２８】
なお、区間Ｄについても前述の第１の方法で説明した手順に沿って出力確率を求めることができるので、ここでは、その説明は省略する。また、区間Ａにおいては、ある一定の出力確率値を出力する。
【０１２９】
以上は第１の方法によって特徴データｙｋに対する出力確率値を求める場合の一例について説明したが、第２の方法を用いても特徴データｙｋに対する出力確率値を求めることができることは勿論である。すなわち、この場合、図６における区間Ｂに特徴データｙｋが存在する場合には、その区間Ｂにおける出力確率曲線を直線近似して、特徴データｙｋに対する出力確率値を得るようにするが、その処理については、第２の方法の説明で述べた処理を適用できるので、ここではその説明については省略する。
【０１３０】
なお、ＨＭＭはそれぞれの状態ごとに出力確率の分布が異なるので、それぞれの状態ごとに、高精度な出力を必要とする区間の設定や多少の誤差を許容できる区間の設定、さらには、どの程度の分解能で出力確率を得るのかなどの設定を行う。
【０１３１】
また、本発明は混合連続分布型のＨＭＭにおいても適用することができる。図７は混合連続分布型ＨＭＭの出力確率分布の一例を示すもので、従来では、このような混合連続分布型ＨＭＭの出力確率分布において、ある時刻における特徴ベクトルのある次元ｋの特徴データｙｋに対する出力確率を関数によって計算で求める場合には、１つの分布ごとに計算を行ってその和を求めるというきわめて繁雑で計算量の多い演算を行う必要がある。
【０１３２】
本発明ではこの図７に示すように、混合連続分布型ＨＭＭの出力確率分布曲線において、特徴データの取り得る範囲について、たとえば、１６等分し、精度を要する区間Ｃ１からＣ５、多少の誤差が許容される区間Ｂ１からＢ９、一定値を出力する区間Ａ１，Ａ２というように分けた例である。
【０１３３】
このような混合連続分布型ＨＭＭの出力確率分布曲線においても前述した第１の方法および第２の方法を適用して特徴データｙｋに対する出力確率を得ることができる。この場合、特徴データｙｋの取り得る範囲について１６等分しているので、入力される特徴データｙｋがどの区間に存在するかを調べるには、上位４ビットを読み込むことで、その特徴データの存在する区間を知ることができる。
【０１３４】
そして、区間Ｃ１からＣ５のいずれかに特徴データｙｋが存在すれば、高精度な出力確率が得られるように、たとえば、その区間において取り得るすべての特徴データｙｋに対応した出力確率を得ることができるようにする。また、区間Ｂ１からＢ９のいずれかに特徴データｙｋが存在すれば、前述した第１の方法のようなそれぞれの区間ごとの出力確率を得るようにするか、または、第２の方法に述べたように、直線近似によって出力確率を得るようにする。また、区間Ａ１，Ａ２のいずれかに特徴データｙｋが存在する場合には、予め設定した一定値の出力確率を得るようにする。
【０１３５】
このように、混合連続分布型ＨＭＭにおいても、出力確率を求める演算処理を前述の第１の方法あるいは第２の方法を適用して行うことができる。第１の方法を適用する場合は、 この混合連続型ＨＭＭの出力確率分布に対応したテーブルを作成し、前述した説明に準じた処理を行うことで、テーブル参照のみで出力確率をえることができる。
【０１３６】
この第１の方法を適用した場合は、数回のテーブル参照だけで済み、しかも、そのテーブルは、精度が必要とされる特徴データｙｋに対してはその出力を高精度に得ることができ、多少の誤差が許容される特徴データｙｋに対してはその出力を許容される誤差範囲で得ることができるというように、特徴データｙｋに応じた分解能で出力を得ることができるようなテーブルとしているので、テーブルサイズも極力小さく抑えることができ、かつ、誤差の抑えられた高精度な出力確率を得ることができるので、これによって高い認識率を得ることができる。
【０１３７】
また、第２の方法を適用する場合は、前述したように、多少の誤差を許容できる区間Ｂ１〜Ｂ９においては、それらの区間の出力確率曲線を直線近似することによって出力確率を求めるようにする。
【０１３８】
この第２の方法を適用した場合であっても、近似値を得るための簡単な計算を追加するだけで済み、しかも、誤差の抑えられた高精度な出力確率を得ることができるので、これによって高い認識率を得ることができる。
【０１３９】
なお、本発明は以上説明した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で種々変形実施可能となるものである。たとえば、前述の実施の形態では、本発明をＨＭＭの出力確率を求める際に適用した例について説明したが、本発明は複雑なアルゴリズムを必要とする関数に与えることによって、その入力データに対する値を得る必要のあるデータ演算に広く適用することができるものである。
【０１４０】
また、ＨＭＭの出力確率は、関数演算によって求める場合、前述した（１）式によって求めることができるが、この（１）式をそのまま用いて計算すると、計算によって得られる値が小さくなりすぎてアンダーフローが起こる可能性がある。そこで、通常、（１）式を対数化して求めることがなされるが、本発明は、対数化した場合にも適用できることは勿論である。
【０１４１】
また、本発明は、以上説明した本発明を実現するための処理手順が記述された処理プログラムを作成し、その処理プログラムをフロッピィディスク、光ディスク、ハードディスクなどの記録媒体に記録させておくことができ、本発明はその処理プログラムが記録された記録媒体をも含むものである。また、ネットワークから当該処理プログラムを得るようにしてもよい。
【０１４２】
【発明の効果】
以上説明したように本発明によれば、入力データの取り得る範囲を、少なくとも、前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値をテーブル参照だけあるいは簡単な近似計算だけで取得できるようにしているので、従来のように、複雑な計算を行う必要もなく、また、出力値を得るためのデータ演算を行う際のメモリ領域の占有度を小さくすることができる。また、入力データに応じた分解能で出力を得ることができることから、精度が必要とされる入力データに対してはその出力を高精度に得ることができ、多少の誤差が許容される入力データに対してはその出力を許容される誤差範囲で得ることができ、これによって、その出力値を用いたそれ以降のデータ処理を高精度に行うことができる。
【０１４３】
したがって、本発明はＨＭＭにおける出力確率を求める演算などに適用することで特に大きな効果が得られ、これによれば、精度が必要とされる特徴データに対してはその出力確率を高精度に得ることができ、多少の誤差が許容される特徴データに対してはその出力確率を許容される誤差範囲で得ることができるというように、入力される特徴データに応じた分解能での出力確率を得ることができる。そして、その出力確率を得る処理は、階層構造に作成されたテーブルを順次参照するだけあるいは簡単な近似計算を行えばよいので、少ない演算量で高速に出力確率を得ることができ、かつ、精度が必要な部分に対しては高精度な出力確率値を得ることができるので、高い認識性能を得ることができる。
【図面の簡単な説明】
【図１】本発明の基本的な処理を説明するためのある関数曲線の例を示す図である。
【図２】本発明の基本的な処理を説明するためのフローチャートである。
【図３】図１の関数曲線に対して作成された階層構造のテーブル例を示す図である。
【図４】図１に示す関数曲線において、多少の誤差を許容する区間を直線近似によって入力データに対する出力を求める例を説明する図である。
【図５】図４に示す区間をさらに細分化してそれぞれの区間ごとに直線近似によって入力データに対する出力を求める例を説明する図である。
【図６】本発明をＨＭＭの出力確率を求める処理に適用する例について説明する図であり、ある状態におけるＨＭＭの出力確率分布を示す図である。
【図７】本発明を混合連続分布型ＨＭＭの出力確率を求める処理に適用する例について説明する図であり、ある状態における混合連続型ＨＭＭの出力確率分布を示す図である。
【図８】従来のスカラ量子化を用いた特徴データに対する出力確率を得る方法を説明する図である。
【符号の説明】
Ｔ０〜Ｔ６  テーブル番号
Ａ〜Ｄ  区間
【図１】
0003991629.tif 000003
【図２】
0003991629.tif 000004
【図３】
0003991629.tif 000005
【図４】
0003991629.tif 000006
【図５】
0003991629.tif 000007
【図６】
0003991629.tif 000008
【図７】
0003991629.tif 000009
【図８】
0003991629.tif 000010