米国特許情報 | 欧州特許情報 | 国際公開(PCT)情報 | Google の米国特許検索
 
     特許分類
A 農業
B 衣類
C 家具
D 医学
E スポ−ツ;娯楽
F 加工処理操作
G 机上付属具
H 装飾
I 車両
J 包装;運搬
L 化学;冶金
M 繊維;紙;印刷
N 固定構造物
O 機械工学
P 武器
Q 照明
R 測定; 光学
S 写真;映画
T 計算機;電気通信
U 核技術
V 電気素子
W 発電
X 楽器;音響


  ホーム -> 計算機;電気通信 -> セイコーエプソン株式会社

発明の名称 データ演算処理方法およびデータ演算処理プログラムを記録した記録媒体
発行国 日本国特許庁(JP)
公報種別 公開特許公報(A)
公開番号 特開2003−36253(P2003−36253A)
公開日 平成15年2月7日(2003.2.7)
出願番号 特願2001−223611(P2001−223611)
出願日 平成13年7月24日(2001.7.24)
代理人 【識別番号】100095728
【弁理士】
【氏名又は名称】上柳 雅誉 (外2名)
【テーマコード(参考)】
5B056
5D015
【Fターム(参考)】
5B056 AA06 BB00 BB53 HH05 
5D015 HH00 HH23
発明者 宮澤 康永 / 長谷川 浩
要約 課題
HMMの出力確率を求める計算のような複雑な関数を用いたデータ演算を演算量を削減して、しかも、入力データに対し必要な精度の出力を得る。

解決手段
入力データxの取り得る範囲を、入力データxに対してある一定値で置き換えても差し支えないような区間A、入力データxに対して多少の誤差が許容される区間B,D、入力データxに対し高精度な値を得る必要のある区間Cというように分けて、入力データxに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得る。具体的には、区間Cにおいては、その区間内で取り得る入力データxの値に対応した出力値を求めておき、区間B,Dにおいては、その区間対応(さらに細分化してもよい)の出力値を求めておき、区間Aにおいてはある一定値を求めておく。そして、これらの出力値はテーブル参照によって得ることができるようにする。
特許請求の範囲
【請求項1】 入力データをある関数に与えることによって、その入力データに対する出力値を得るデータ演算を簡略化して行うことを可能とするデータ演算処理方法であって、そのデータ演算処理方法は、前記入力データの取り得る範囲を、少なくとも、その入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得ることを特徴とするデータ演算処理方法。
【請求項2】 前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間は、2進法で表現された入力データの上位nビット(nは正の整数で、入力データのビット数Nとしたとき、n<N)のビットの組み合わせに対応して存在し、そのビットの組み合わせに対応する区間が、前記入力データに対する出力値を高精度に得る必要のある区間であるか、多少の誤差が許容される区間であるかを決めておくことを特徴とする請求項1記載のデータ演算処理方法。
【請求項3】 前記入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の値を出力値とする処理は、階層構造に作成されたテーブル群のテーブルを順次参照することによって行い、この階層構造に作成されたテーブルを順次参照する処理は、2進法で表現された入力データの前記上位nビットを読み込み、そのnビットのビット内容をkeyとして、前記階層構造のテーブル群のうちの先頭テーブルを参照し、その先頭テーブルにおいて、次に参照すべきテーブルの指示があればその参照すべきテーブル情報と前記上位nビットに続く次に読み込むべきビット数の指示があればその読み込みビット数を得て、当該参照すべきテーブルを前記読み込むべきビット数に対応する入力データのビット内容をkeyとして参照する処理を、次に参照すべきテーブルの指示のない終端テーブルまで行い、この終端テーブルの直前のテーブルで指示される読み込むべきビット数に対応する入力データのビット内容をkeyとして当該終端テーブルを参照することで、当該入力データに対する出力値を得ることを特徴とする請求項2記載のデータ演算処理方法。
【請求項4】 前記出力値を高精度に得る必要のある区間における入力データに対する出力値は、その区間において入力データの取り得る個々の入力データ値に対応した出力値とし、その出力値がその区間において取り得る入力データの個々の値に対応して記述された終端テーブルとして用意されることを特徴とする請求項1から3のいずれかに記載のデータ演算処理方法。
【請求項5】 前記多少の誤差が許容される区間における入力データに対する出力値は、当該多少の誤差が許容される区間ごとまたはその区間をさらに細分化した区間ごとの出力値とし、その出力値がそれぞれの区間に対応して記述された終端テーブルとして用意されることを特徴とする請求項1から3のいずれかに記載のデータ演算処理方法。
【請求項6】 前記多少の誤差が許容される区間における入力データに対する出力値は、その区間における関数曲線を近似して求めることを特徴とする請求項1または2記載のデータ演算処理方法。
【請求項7】 前記関数曲線を近似する方法として直線近似を用いることを特徴とする請求項6記載のデータ演算処理方法。
【請求項8】 前記入力データに対する出力値を高精度に得る必要のある区間と多少の誤差が許容される区間の他に、入力データに対して予め決められたある一定値をその区間の出力値とする区間を設けることを特徴とする請求項1から7のいずれかに記載のデータ演算処理方法。
【請求項9】 前記入力データをある関数に与えることによって、その入力データに対する出力値を所定のアルゴリズムに従って得るデータ演算を、HMMにおける出力確率を求める演算に用いることを特徴とする請求項1から8のいずれかに記載のデータ演算処理方法。
【請求項10】 入力データをある関数に与えることによって、その入力データに対する出力値を得るデータ演算を簡略化して行うことを可能とするデータ演算処理プログラムを記録した記録媒体であって、そのデータ演算処理プログラムは、前記入力データの取り得る範囲を、少なくとも、その入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得る手順が記述されてなることを特徴とするデータ演算処理プログラムを記録した記録媒体。
【請求項11】 前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間は、2進法で表現された入力データの上位nビット(nは正の整数で、入力データのビット数Nとしたとき、n<N)のビットの組み合わせに対応して存在し、そのビットの組み合わせに対応する区間が、前記入力データに対する出力値を高精度に得る必要のある区間であるか、多少の誤差が許容される区間であるかを決めておくことを特徴とする請求項10記載のデータ演算処理プログラムを記録した記録媒体。
【請求項12】 前記入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の値を出力値とする処理は、階層構造に作成されたテーブル群のテーブルを順次参照することによって行い、この階層構造に作成されたテーブルを順次参照する処理は、2進法で表現された入力データの前記上位nビットを読み込み、そのnビットのビット内容をkeyとして、前記階層構造のテーブル群のうちの先頭テーブルを参照し、その先頭テーブルにおいて、次に参照すべきテーブルの指示があればその参照すべきテーブル情報と前記上位nビットに続く次に読み込むべきビット数の指示があればその読み込みビット数を得て、当該参照すべきテーブルを前記読み込むべきビット数に対応する入力データのビット内容をkeyとして参照する処理を、次に参照すべきテーブルの指示のない終端テーブルまで行い、この終端テーブルの直前のテーブルで指示される読み込むべきビット数に対応する入力データのビット内容をkeyとして当該終端テーブルを参照することで、当該入力データに対する出力値を得ることを特徴とする請求項11記載のデータ演算処理プログラムを記録した記録媒体。
【請求項13】 前記出力値を高精度に得る必要のある区間における入力データに対する出力値は、その区間において入力データの取り得る個々の入力データ値に対応した出力値とし、その出力値がその区間において取り得る入力データの個々の値に対応して記述された終端テーブルとして用意されることを特徴とする請求項10から12のいずれかに記載のデータ演算処理プログラムを記録した記録媒体。
【請求項14】 前記多少の誤差が許容される区間における入力データに対する出力値は、当該多少の誤差が許容される区間ごとまたはその区間をさらに細分化した区間ごとの出力値とし、その出力値がそれぞれの区間に対応して記述された終端テーブルとして用意されることを特徴とする請求項10から12のいずれかに記載のデータ演算処理プログラムを記録した記録媒体。
【請求項15】 前記多少の誤差が許容される区間における入力データに対する出力値は、その区間における関数曲線を近似して求めることを特徴とする請求項10または11記載のデータ演算処理プログラムを記録した記録媒体。
【請求項16】 前記関数曲線の近似する方法として直線近似を用いることを特徴とする請求項15記載のデータ演算処理プログラムを記録した記録媒体。
【請求項17】 前記入力データに対する出力値を高精度に得る必要のある区間と多少の誤差が許容される区間の他に、入力データに対して予め決められたある一定値をその区間の出力値とする区間を設けることを特徴とする請求項10から16のいずれかに記載のデータ演算処理プログラムを記録した記録媒体。
【請求項18】 前記入力データをある関数に与えることによって、その入力データに対する出力値を所定のアルゴリズムに従って得るデータ演算を、HMMにおける出力確率を求める演算に用いることを特徴とする請求項10から17のいずれかに記載のデータ演算処理プログラムを記録した記録媒体。
発明の詳細な説明
【0001】
【発明の属する技術分野】本発明は入力データを複雑なアルゴリズムを有する関数に与えることによって、その入力データに対する出力値を得るようなデータ演算を行う際、そのデータ演算の簡略化を図ろうとするデータ演算処理方法に関し、特に、HMM(HiddenMarkov Model)の出力確率を求めるのに好適なデータ演算処理方法およびデータ演算処理プログラムを記録した記録媒体に関する。
【0002】
【従来の技術】たとえば、入力データをある複雑なアルゴリズムを必要とする関数に与えることによって、その入力データに対する出力値を得ることが情報技術などの技術分野では一般に行われている。その一つの例として、音声認識などで用いられるHMMの出力確率を得るアルゴリズムがある。
【0003】このHMMを用いた音声認識手法として連続分布型HMMを用いる方法が広く知られている。この連続分布型HMMを用いた音声認識は高い認識率を得ることができる反面、計算量が多いのが難点である。特にHMMにおけるそれぞれの状態における出力確率(状態出力確率)を求めるには多くの演算量を必要とし、それに伴って、演算を行うために多くのメモリ領域を必要とするなどの問題がある。
【0004】ここで、音声分析されて得られたある時刻における特徴ベクトルYについて、状態iから状態jへ遷移する時の出力確率をbij(Y)で表し、無相関正規分布に従うとすれば、 bij(Y)は下記の(1)式で表すことができる。
【0005】
【数1】

このとき、入力ベクトル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)というように表される。
【0006】なお、上述の(1)式において、kはある時刻における入力ベクトルYの成分の次元数を表し、1からnのいずれかの値をとる。また、σij(k)は状態iからjの場合のk次元における分散、μij(k)は状態iからjの場合のk次元における平均値を表す。
【0007】
【発明が解決しようとする課題】しかし、この(1)式は計算量がきわめて多いのが問題である。特に、小型、軽量、安価な製品においては、使用されるハードウエアに大きな制約があるため、(1)式のような複雑な計算を決められた時間内に行うのは不可能であるといっても過言ではない。
【0008】この問題を解決する手法として、たとえば、特開平9−6382のように、出力確率計算時にスカラ量子化を行う方法が提案されている。
【0009】図8はそのスカラ量子化について説明するもので、ある音素HMMにおけるある状態(状態iから状態j)の入力データ(特徴ベクトルのある次元k)に対する出力確率分布において、k次元の特徴データykは、この場合、コードC1,C2,・・・,CMのいずれかの値で近似される。この図8の例では、 k次元の特徴データykはその特徴データykの最近傍のコードCmに置き換えられ、そのコードCmをもとに、予め作成されたテーブルを参照することで、 k次元の特徴データykを出力する確率(出力確率)を得ることができる。
【0010】このように、スカラ量子化を行うことによってテーブル参照でk次元の特徴データの出力確率を得ることができ、前述した複雑な数式を用いて計算するのに比べれば、計算量を大幅に削減することができるが、テーブル参照によって得られる出力確率は、図8からもわかるように、本来の値に対して、Δεの誤差を生じることになる。この誤差Δεがそれ以降の認識処理に影響を与えて認識結果を劣化させる原因ともなる。
【0011】これを解決する手段として、テーブルサイズを大きくして量子化誤差をできるだけ小さくすることも考えられるが、テーブルサイズを大きくすると、そのテーブルを記憶させるためのメモリ(ROM)領域を確保する必要があり、大容量のメモリが必要となるといった問題もある。
【0012】また、スカラ量子化する方法は、確かに、前述した複雑な数式を用いて計算するのに比べれば、計算量を大幅に削減することができるが、このスカラ量子化による方法でも、入力された特徴データ(それぞれの次元ごとの特徴データ)がどのコードに近いかを調べるために、それぞれのコードとの差分を取って比較する演算が必要であり、その計算量は処理対象となる入力データ全体について考えるときわめて多いものとなる。
【0013】以上はHMMの音声認識などで用いられるHMMの出力確率を得るアルゴリズムについて説明したが、このような問題は、前述したように、入力データをある複雑なアルゴリズムを必要とする関数に与えることによって、その入力データに対する値を得る必要のあるデータ処理を行う場合に一般的に言えることである。
【0014】そこで本発明は、入力データをある関数に与えることによって、その入力データに対する値を得る必要のあるデータ演算を少ない演算量でしかも精度の必要な部分には高精度な出力値を得ることができるようすることを目的としている。
【0015】
【課題を解決するための手段】上述した目的を達成するために、本発明のデータ演算処理方法は、入力データをある関数に与えることによって、その入力データに対する出力値を得るデータ演算を簡略化するデータ演算処理方法であって、そのデータ演算処理方法は、前記入力データの取り得る範囲を、少なくとも、その入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得るようにしている。
【0016】このデータ演算処理方法において、前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間は、2進法で表現された入力データの上位nビット(nは正の整数で、入力データのビット数Nとしたとき、n<N)のビットの組み合わせに対応して存在し、そのビットの組み合わせに対応する区間が、前記入力データに対する出力値を高精度に得る必要のある区間であるか、多少の誤差が許容される区間であるかを決めておくようにする。
【0017】そして、前記入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得る処理は、階層構造に作成されたテーブル群のテーブルを順次参照することによって行い、この階層構造に作成されたテーブルを順次参照する処理は、2進法で表現された入力データの前記上位nビットを読み込み、そのnビットのビット内容をkeyとして、前記階層構造のテーブル群のうちの先頭テーブルを参照し、その先頭テーブルにおいて、次に参照すべきテーブルの指示があればその参照すべきテーブル情報と前記上位nビットに続く次に読み込むべきビット数の指示があればその読み込みビット数を得て、当該参照すべきテーブルを前記読み込むべきビット数に対応する入力データのビット内容をkeyとして参照する処理を、次に参照すべきテーブルの指示のない終端テーブルまで行い、この終端テーブルの直前のテーブルで指示される読み込むべきビット数に対応する入力データのビット内容をkeyとして当該終端テーブルを参照することで、当該入力データに対する出力値を得るようにする。
【0018】また、前記出力値を高精度に得る必要のある区間における入力データに対する出力値は、その区間において入力データの取り得る個々の入力データ値に対応した出力値とし、その出力値がその区間において取り得る入力データの個々の値に対応して記述された終端テーブルとして用意される。
【0019】また、前記多少の誤差が許容される区間における入力データに対する出力値は、当該多少の誤差が許容される区間ごとまたはその区間をさらに細分化した区間ごとの出力値とし、その出力値がそれぞれの区間に対応して記述された終端テーブルとして用意される。
【0020】また、多少の誤差が許容される区間における入力データに対する出力値は、その区間における関数曲線を近似して求めるようにすることも可能である。
【0021】なお、この関数曲線の近似する方法として直線近似を用いることが可能である。
【0022】また、前記入力データに対する出力値を高精度に得る必要のある区間と多少の誤差が許容される区間の他に、入力データに対して予め決められたある一定値をその区間の出力値とする区間を設けることも可能である。
【0023】また、前記入力データをある関数に与えることによって、その入力データに対する出力値を所定のアルゴリズムに従って得るデータ演算を、HMMにおける出力確率を求める演算に用いることができる。
【0024】また、本発明のデータ演算処理プログラムを記録した記録媒体は、入力データをある関数に与えることによって、その入力データに対する出力値を得るデータ演算を簡略化するデータ演算処理プログラムを記録した記録媒体であって、その演算処理プログラムは、そのデータ演算処理方法は、前記入力データの取り得る範囲を、少なくとも、その入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得るようにしている。
【0025】このデータ演算処理プログラムを記録した記録媒体において、前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間は、2進法で表現された入力データの上位nビット(nは正の整数で、入力データのビット数Nとしたとき、n<N)のビットの組み合わせに対応して存在し、そのビットの組み合わせに対応する区間が、前記入力データに対する出力値を高精度に得る必要のある区間であるか、多少の誤差が許容される区間であるかを決めておくようにする。
【0026】そして、前記入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得る処理は、階層構造に作成されたテーブル群のテーブルを順次参照することによって行い、この階層構造に作成されたテーブルを順次参照する処理は、2進法で表現された入力データの前記上位nビットを読み込み、そのnビットのビット内容をkeyとして、前記階層構造のテーブル群のうちの先頭テーブルを参照し、その先頭テーブルにおいて、次に参照すべきテーブルの指示があればその参照すべきテーブル情報と前記上位nビットに続く次に読み込むべきビット数の指示があればその読み込みビット数を得て、当該参照すべきテーブルを前記読み込むべきビット数に対応する入力データのビット内容をkeyとして参照する処理を、次に参照すべきテーブルの指示のない終端テーブルまで行い、この終端テーブルの直前のテーブルで指示される読み込むべきビット数に対応する入力データのビット内容をkeyとして当該終端テーブルを参照することで、当該入力データに対する出力値を得るようにする。
【0027】また、前記出力値を高精度に得る必要のある区間における入力データに対する出力値は、その区間において入力データの取り得る個々の入力データ値に対応した出力値とし、その出力値がその区間において取り得る入力データの個々の値に対応して記述された終端テーブルとして用意される。
【0028】また、前記多少の誤差が許容される区間における入力データに対する出力値は、当該多少の誤差が許容される区間ごとまたはその区間をさらに細分化した区間ごとの出力値とし、その出力値がそれぞれの区間に対応して記述された終端テーブルとして用意される。
【0029】また、多少の誤差が許容される区間における入力データに対する出力値は、その区間における関数曲線を近似して求めるようにすることも可能である。
【0030】なお、この関数曲線の近似する方法として直線近似を用いることが可能である。
【0031】また、前記入力データに対する出力値を高精度に得る必要のある区間と多少の誤差が許容される区間の他に、入力データに対して予め決められたある一定値をその区間の出力値とする区間を設けることも可能である。
【0032】また、前記入力データをある関数に与えることによって、その入力データに対する出力値を所定のアルゴリズムに従って得るデータ演算を、HMMにおける出力確率を求める演算に用いることができる。
【0033】このように本発明は、入力データの取り得る範囲を、少なくとも、前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値が取得できるようにしているので、出力値としてのデータを必要以上に持つ必要がなくなり、データを記憶させるためのメモリ領域の占有度を小さくすることができる。
【0034】また、入力データに応じた分解能で出力を得ることができることから、精度が必要とされる入力データに対してはその出力を高精度に得ることができ、多少の誤差が許容される入力データに対してはその出力を許容される誤差範囲で得ることができ、これによって、その出力値を用いたそれ以降のデータ処理を高精度に行うことができる。
【0035】また、入力データの上位nビットのビットの組み合わせに対応する区間が、前記入力データに対する出力値を高精度に得る必要のある区間であるか、多少の誤差が許容される区間であるかを決めておくことによって、入力データの上位nビットのビット内容により、その入力データがどの区間に存在するデータであるかを判定することができる。
【0036】そして、前記入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値を得る処理は、階層構造に作成されたテーブルを順次参照するだけでよいので、簡単で高速に入力データに対する出力値を得ることができる。
【0037】また、出力値を高精度に得る必要のある区間における入力データに対する出力値は、その区間において入力データの取り得る個々の入力データ値に対応した出力値とし、それをテーブルとして持つようにしているので、入力データに対し高精度な出力値を得ることができ、しかも、その出力値をテーブル参照だけで得ることができる。
【0038】また、多少の誤差が許容される区間における入力データに対する出力値は、当該多少の誤差が許容される区間ごとまたはその区間をさらに細分化した区間ごとの出力値としているので、この多少の誤差が許容される区間においては、区間ごとの代表値のみをデータとして持てばよいので、テーブルサイズの無駄を省くことができ、しかも、テーブル参照だけで、それぞれの区間に存在する入力データに対する出力値を得ることができるので、従来のスカラ量子化のように入力データがどのコードに近いかを見るための比較計算が不要となり計算量の削減が図れる。
【0039】また、このような多少の誤差が許容される区間における入力データに対する出力値は、その区間における関数曲線を近似して求めるようにしてもよく、これによっても、関数をそのまま計算するのに比べて計算量の削減が図れ、しかも、入力データに対し良好な精度を有した出力値を得ることができる。
【0040】なお、この関数曲線を近似する方法の一つとして直線近似があり、この直線近似法を用いることによって、演算量をより少なくすることができる。
【0041】また、入力データに対する出力値を高精度に得る必要のある区間と多少の誤差が許容される区間の他に、入力データに対して予め決められたある一定値をその区間の出力値とする区間を設けるようにしている。この区間は精度の要求されない区間であるため、ある一定値で置き換えるたとしても、それ以降の処理に特に問題がなく、これによって、より一層の演算量の削減を図ることができる。
【0042】また、本発明はHMMにおける出力確率を求める演算に適用することができ、これによれば、精度が必要とされる特徴データに対してはその出力確率を高精度に得ることができ、多少の誤差が許容される特徴データに対してはその出力確率を許容される誤差範囲で得ることができるというように、入力される特徴データに応じた分解能での出力確率を得ることができる。
【0043】そして、その出力確率を得る処理は、階層構造に作成されたテーブルを順次参照するだけあるいは簡単な近似計算で済む。これによって、少ない演算量で高速に出力確率を得ることができ、また、不必要な出力確率値を持たないので、メモリ領域の占有度を小さくすることができるなどの効果が得られ、さらに、精度が必要な部分に対しては高精度な出力確率値を得ることができるので、高い認識性能を得ることができる。
【0044】
【発明の実施の形態】以下、本発明の実施の形態について説明する。なお、この実施の形態で説明する内容は、本発明のデータ演算処理方法の説明であるとともに、データ演算処理プログラムを記録した記録媒体のデータ演算処理プログラムの内容についての説明を含むものである。
【0045】まず、図1により本発明のデータ演算方法の基本的な処理について説明する。この図1はある関数によって表される曲線を示すもので、この関数はある複雑なアルゴリズムによって入力データxに対する出力値yが得られるものであるとする。また、ここでは入力データxは6ビットで表現されるものとする。したがって、この関数の定義域は10進法で示せば、0から63とすることができる。
【0046】本発明は、ある入力データxに対する出力値yを少ない演算量で、しかも、精度の要求される部分に対しては高精度に得るかを課題とするもので、本発明では、入力データが関数の定義域のどこに存在する入力データかによって、その入力データに対する出力値の精度を変えるようにしている。
【0047】すなわち、入力データの取り得る範囲(関数の定義域)を、少なくとも、その入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、その入力データがどの区間に存在するかを判定し、判定された区間に対応した分解能の出力値を得るようにするものである。その方法として、本発明では、2つの方法(第1の方法と第2の方法)について説明する。
【0048】まず、第1の方法について説明する。この第1の方法は、テーブル参照のみによって入力データxに対する出力値yを得るものである。
【0049】大まかにいえば、あるデータ処理を行うための関数の定義域のうち、入力データxがこの入力データxに対する出力値として高精度な値を得る必要のある区間に存在する場合には、入力データxの値に対し高精度な出力値yを得ることができるようなテーブルを参照して、入力データxに対する出力値yを得るようにし、また、入力データxがこの入力データxの値に対する出力値として多少の誤差が許容される区間に存在する場合には、それに対応するテーブルを参照して、入力データxに対する出力値yを得るようにする。また、入力データxに対する出力値がある一定値として差し支えないような区間に存在する場合には、その区間に存在する入力データをある一定値で置き換えるようにする。
【0050】これを図1に当てはめて考えると、たとえば、入力データxの取り得る範囲において、区間Aはこの区間Aに存在する入力データxに対する出力値をある一定値として差し支えないような区間であるとし、区間Bは入力データxの値に対する出力値として多少の誤差が許容される区間であるとし、区間Cは入力データxに対する出力値として高精度な値を得る必要のある区間であるとし、区間Dも区間Bと同様に入力データxの値に対する出力値として多少の誤差が許容される区間であるとしている。
【0051】つまり、この実施の形態では、入力データxに対する出力値yの変化が急峻である部分を、入力データxに対する出力値として高精度な値を得る必要のある区間とし、入力データxに対するyの変化がそれ程急峻でない部分を、入力データxの値に対する出力値として多少の誤差が許容される区間であるとし、入力データxに対するyの変化が殆どない部分を、入力データxに対する出力値をある一定値として差し支えないような区間であるとしている。
【0052】以下、具体的な処理例について、図2のフローチャートと図3に示されるテーブルT0〜T6を用いて説明する。このテーブルT0〜T6は階層的な構造となっており、まず、階層の先頭に位置するテーブルT0を参照して、そのテーブルT0の内容の指示に基づいて、それよりあとの階層のテーブルを順次参照する。
【0053】なお、これらテーブルT0〜T6は、入力データxから読み込んだビット内容、次に参照すべきテーブル番号、次に読み込むべきビット数、入力データxに対して得られる出力値が記述されるデータ記述欄がある。これらテーブルT0〜T6の参照例については以下の処理手順の説明のなかで説明する。
【0054】ここでは、前述したように、入力データxは6ビットで表現されるデータであるとし、今、「011011」の入力データxが与えられたとする。
【0055】この「011011」の入力データxにおいて、ここでは上位2ビットを見て、その2ビットからその入力データxが定義域のどこに存在するかを判断する設定となっているものとする。
【0056】つまり、この場合、上位2ビットを用いているので、定義域(0〜63)を4等分した区間(図1における区間A,B,C,D)のどの区間に、その入力データxが存在するかを判定することができる。ここでは、まず、上位2ビットをkeyとしてテーブルT0を参照し、そのテーブルT0の内容に応じた処理を順次行って行く。
【0057】また、ここでは、入力データxの上位2ビットのビットの組み合わせ(「00」,「01」,「10」,「11」)と前述した区間A,B,C,Dの対応付けは、上位2ビット「00」を区間A、上位2ビット「01」を区間B、上位2ビット「10」を区間Cであるとし、上位2ビット「11」を区間Dとする。
【0058】まず、図2のフローチャートにおいて、テーブル番号と読み込みビット数を初期化し(ステップs1)、上述の「011011」の入力データにおいて、指定されたnビット(この場合は、上位2ビット)を読み込む(ステップs2)。このとき、読み込まれた上位2ビットは「01」であるから、その上位2ビット「01」をkeyとして図3に示すテーブルT0を参照すると、次に参照すべきテーブルを示すテーブル情報(テーブル番号)と、次に読み込むべきビット数を得ることができる。
【0059】すなわち、この場合、次に参照すべきテーブルのテーブル番号として「T1」、次に読み込むべきビット数(上位2ビットに続くビット数)として「1」が得られる。なお、この図3に示すそれぞれのテーブルT0〜T6において、テーブル番号の欄に「−1」が記述されている場合には、それよりあとの階層のテーブル参照は行わないことを示し、この場合、現在参照しているテーブルを終端テーブルとし、この終端テーブルによって入力データxに対する出力値を得ることができる。
【0060】このように、まず最初に、入力データの上位2ビット「01」を読み込んで、その上位2ビット「01」をkeyとしてテーブルT0を参照すると、次に参照すべきテーブル番号として「T1」、次に読み込むべきビット数として「1」を得ることができる。そして、この場合、入力データxは「011011」であり、テーブルT0の指示によって読み込んだ1ビット(上位2ビット「01」に続く1ビット)の値は、「1」であるので、この読み込んだ1ビットの値「1」をkeyとしてテーブルT1を参照すると、次に参照すべきテーブルのテーブル番号「T5」と、次に読み込むべきビット数「2」を得る。
【0061】つまり、この場合、図2のフローチャートにおては、テーブルT1を参照したとき、そのテーブルT1に記述された次に読み込むべきテーブル番号が「−1」であるか否かを判定するが(ステップs3)、ここでは、まだ、次に参照すべきテーブル番号が「−1」ではないので、テーブル参照は終わりではなく、次に参照すべきテーブル番号として「T5」、次に読み込むべきビット数として「2」を取得する(ステップs4)。
【0062】そして、ステップs2に戻って、今度は、ステップs4で取得した読み込むべきビット数だけ、入力データのビット(この場合、「011」に続く2ビット「01」)を読み込み、読み込んだ「01」をkeyとしてテーブルT5を参照すると、次に参照すべきテーブル番号として「−1」が記述されているので、それより後の階層のテーブル参照を行う必要の無いことがわかる(次に読み込むべきビット数は「0」となっている)。
【0063】したがって、このテーブルT5を終端テーブルとし、このテーブルT5によって入力データxに対する出力値を得ることができる。このテーブルT5によれば、その出力値として「4」が記述されており、この「4」を入力データxに対する出力値として得ることができる(ステップs5)。
【0064】以上の処理を図1に対応させて説明すると、まず、 「011011」の入力データxにおいて、上位2ビットが「01」であるので、この入力データはこの関数の定義域における区間Bに存在する入力データであることがわかる。なお、この区間Bは、この場合、入力データxに対する出力値は多少の誤差が許容される区間としている。
【0065】そして、この区間Bにおいては、テーブルT0によれば、上位2ビットに続くビット数として、1ビットを読み込むことになっているので、この区間Bをさらに2等分して区間B1とB2に分けて考えることができる。この場合、区間B1は上位2ビットに続く1ビットの値が「0」、区間B2は上位2ビットに続く1ビットの値が「1」に対応している。
【0066】上述の入力データx が「011011」の例では、上位2ビットに続く1ビットの値が「1」であるので、区間B2であり、この場合、テーブルT1によれば、さらに、そのあとに続く2ビットを読み込むことになっているので、区間B2をさらに4等分した区間B21,B22,B23,B24のどれかに入力データxが存在することになる。
【0067】この場合、テーブルT1の指示による読み込みビット数「2」に対応する入力データのビット内容は「01」(「011」に続く2ビット)であるので、「011011」の入力データxは区間B22に存在することになる。
【0068】そして、その読み込んだ2ビット「01」をkeyとしてテーブルT5を参照すれば、このテーブルT5にはそれ以上のテーブル参照はせず、その段階で入力データxに対して出力値を得るようになっている。ここで、このテーブルT5には入力データxに対する出力値として「4」が記述されているので、この入力データxに対しては「4」という出力値を得ることができる。
【0069】つまり、この場合、入力データ「011011」は区間B22に存在することになり、この区間B22に存在する入力データxに対してはすべて出力値として「4」が得られることになる。
【0070】このテーブルT5からもわかるように、区間B21,B22,B23,B24においては、それぞれの区間ごとに入力データxに対する値が予め求められていて、このテーブルT5によれば、区間B21に存在する入力データxに対しては出力値として「3」が得られ、区間B22に存在する入力データxに対しては出力値として「4」が得られ、区間B23に存在する入力データxに対してはこの場合も出力値として「4」が得られ、区間B24に存在する入力データxに対しては出力値として「5」が得られるというように、それぞれの区間ごとに出力値が求められている。
【0071】これらそれぞれの区間の出力値は、実際の計算値に対しては多少の誤差を生じる場合もあるが、この区間Bでは多少の誤差は許容されることになっているので、この出力値は実用に十分耐えうるものとなる。
【0072】また、上述の例で、もし、入力データの上位2ビットに続く1ビットの値が「0」であるとすれば、つまり、入力データxが「010011」であったとすれば、「0」をkeyとしてテーブルT1を参照することになる。この場合は、入力データxの上位2ビットに続く1ビットの値が「0」であるので、図1において、区間BにおけるB1に「010011」の入力データxが存在することになる。
【0073】また、この場合、このテーブルT1によれば、次に参照すべきテーブルはテーブルT4であり、読み込むビット数は1ビットであるので、この区間B1をさらに2等分した区間B11,B12のいずれかに「010011」の入力データxが存在することになる。この場合、テーブルT1の指示による読み込みビット数「1」に対応する入力データのビット内容は「0」(「010」に続く1ビット)であるので、「010011」の入力データxは区間B11に存在することになる。
【0074】そして、その「0」をkeyとしてテーブルT4を参照する。このテーブルT4によれば、次に続くテーブル番号は「−1」となっているので、それよりあとのテーブル参照は行わず、このテーブルT4を終端テーブルとして出力値を得る。この場合、出力値は「2」と記述されているので、その「2」を入力データ「010011」の出力値とする。
【0075】このように、「010011」の入力データxは区間B11に存在することになり、この区間B11に存在する入力データxに対してはすべて出力値として「2」が得られることになる。
【0076】このテーブルT4からもわかるように、区間B11,B12においては、それぞれの区間ごとに入力データxに対する値が予め求められていて、このテーブルT4によれば、区間B11に存在する入力データxに対しては出力値として「2」が得られ、区間B12に存在する入力データxに対しては出力値として「3」が得られるというように、それぞれの区間ごとに出力値が求められている。
【0077】これらそれぞれの区間B11,B12の出力値は、実際の計算値に対しては多少の誤差を生じる場合もあるが、この区間Bでは多少の誤差は許容されることになっているので、この出力値は実用に十分耐えうるものとなる。なお、区間B1は区間B2よりもさらに誤差が大きくなる可能性が高い。
【0078】次に、入力データxが「100100」である場合について考える。まず、上位2ビットを読み込むが、この場合、上位2ビットは「10」であるので、この「10」をkeyとしてテーブルT0を参照すると、次に参照すべきテーブル番号として「T2」、次に読み込むべきビット数として「4」を得ることができる。
【0079】これにより、読み込んだ4ビット(上位2ビット「10」に続く4ビット)の値が、「0100」であるので、この読み込んだ4ビットの値「0100」をkeyとしてテーブルT2を参照すると、次に参照すべきテーブル番号として「−1」が記述されているので、この段階でテーブル参照は終了し、このテーブルT2を終端テーブルとして、入力データxに対する出力値「9」を得ることができる。
【0080】このように、入力データxの上位2ビット「10」は、この図1の例では、区間Cに相当し、ここでは、区間Cは入力データxに対して高精度な出力値を得ることが要求される区間としている。この場合、区間C(入力データの取りうる範囲0〜63を4等分したうちの1つの区間)おいては、16通りの入力データxのすべてに対してデータを得ることができるようにしている。
【0081】次に、入力データxが「110101」である場合について考える。まず、上位2ビットを読み込むが、この場合、上位2ビットは「11」であるので、この「11」をkeyとしてテーブルT0を参照すると、次に参照すべきテーブル番号として「T3」、次に読み込むべきビット数として「1」を得ることができる。
【0082】これにより、読み込んだ1ビット(上位2ビット「11」に続く1ビット)の値が、「0」であるので、この読み込んだ1ビットの値「0」をkeyとしてテーブルT3を参照すると、次に参照すべきテーブル番号として「T6」、次に読み込むべきビット数「0」を得ることができる。
【0083】この場合、読み込むべきビット(上位ビット「110」に続くビット)が「1」であるので、この「1」をkeyとしてテーブルT6を参照すると、次に参照すべきテーブル番号として「−1」が記述されているので、それより後の階層のテーブル参照を行う必要の無いことがわかる。
【0084】したがって、このテーブルT6を終端テーブルとして、入力データxに対する値を得ることができる。このテーブルT6によれば、その値として「3」を得ることができ、この「3」が入力データxに対する出力値となる。
【0085】この入力データxが「110101」の処理を図1に対応させて説明すると、まず、 「110101」の入力データxにおいて、上位2ビットが「11」であるので、この入力データxは区間Dに存在する入力データであることがわかる。なお、この区間Dは、この場合、入力データxに対する出力値は多少の誤差が許容される区間としている。
【0086】そして、この区間Dにおいては上位2ビットに続くビット数として1ビットを参照することになっているので、この区間Dをさらに2等分して区間D1とD2に分けて考えることができる。
【0087】この場合、区間D1は上位2ビットに続く1ビットが「0」、区間B2は上位2ビットに続く1ビットが「1」に対応している。上述の例では、上位2ビットに続く1ビットが「0」であるので、区間D1であり、この場合、テーブルT3によれば、さらに、そのあとに続く1ビットを読み込むことになっているので、区間D1をさらに2分割した区間D11,D12にいずれかに入力データxが存在することになる。
【0088】そして、ここで読み込んだ1ビット(上位ビット「110」に続く1ビット)の値が「1」であるので、この入力データは区間D12に存在し、この「1」をkeyとしてテーブルT6を参照すると、次に参照すべきテーブル番号が「−1」となっているので、それよりあとのテーブル参照はせず、このテーブルT6を終端テーブルとし、この入力データxに対しては「3」という値を得ることができる。
【0089】つまり、区間D11,D12においては、それぞれの区間ごとに入力データxに対する値が予め求められていて、このテーブルT6によれば、区間D11であれば入力データxに対しては「4」が得られ、区間D12であれば入力データxに対しては「3」が得られるというようにそれぞれの区間ごとのデータが実際の計算値に対しては多少の誤差を許容する値として得られるようになっている。
【0090】また、上述の例で、もし、入力データxの上位2ビットに続く1ビットの値が「1」、つまり、入力データxが「111101」であるとすれば、テーブルT3において、次に参照すべきテーブルが「−1」となっているので、それ以上のテーブル参照はせず、このテーブルT3を終端テーブルとし、このテーブルT3により入力データxに対する出力値「2」を得ることができる。
【0091】この入力データの上位2ビットに続く1ビットの値が「1」というのは、図1において、区間Dを細分化して得られた区間D2に相当し、入力データxがこの区間D2内に存在したときは、それに対する値を一律に「2」としている。
【0092】次に、入力データxが「001010」である場合について考える。まず、上位2ビットを読み込むが、この場合、上位2ビットは「00」であるので、この「00」をkeyとしてテーブルT0を参照すると、次に参照すべきテーブル番号として「−1」が記述されているので、この場合は、それ以降のテーブル参照は行わずに、この先頭のテーブルT0を終端テーブルとし、そのまま入力データxに対する出力値「2」を得るようにしている。
【0093】このように上位ビットが「00」である場合には、図1における区間Aに入力データが存在する場合であり、ここでは、区間Aは、入力データxに対して一定の値を出力するような設定となっているので、この場合は、入力データxが区間Aに存在する場合には、一律に、予め設定された「2」を出力するようにしている。
【0094】以上はある関数を用いて入力データxに対する出力yを階層的な構造を有するテーブルを参照することにより、入力データxに応じた分解能の出力を得る方法について説明した。
【0095】この第1の方法によれば、複雑な関数式をそのまま計算することなくテーブル参照だけで入力データxに対する出力値yを求めることができ、しかも、精度が必要とされる入力データxに対してはその出力値を高精度に得ることができ、多少の誤差が許容される入力データxに対しては許容される誤差範囲での出力値を得ることができるというように、入力データxに応じた分解能で出力を得ることができるようにしているので、テーブルサイズの無駄を省くことができる。
【0096】また、この第1の方法は、一種のスカラ量子化とも言えるが、従来のスカラ量子化と異なる点は、従来のスカラ量子化は入力データに対する代表値を決める場合、入力データと代表値を比較してどの代表値に最も近いかを決める演算がそれぞれの入力データxごとに必要であったが、この第1の方法ではその必要はなく、入力データxに対して、多くても数回のテーブル参照を行うだけでその出力値を得ることができるので、比較のための引き算などの計算を不要とできることも大きな特徴の一つである。
【0097】次に第2の方法について説明する。この第2の方法は、多少の誤差が許容される区間(上述の第1の方法において説明した図1における区間Bなど)においては、その区間の関数曲線を近似して入力データに対する出力を求めるようにするというものである。その具体例について、前述の第1の方法で用いた図1および図3のテーブルを参照して以下に説明する。なお、ここでは、関数曲線を近似する方法として演算量の少ない直線近似を用いた例について説明する。
【0098】なお、ここでは、入力データxが区間C(高精度な出力値の要求される区間)に存在する場合には、前述と同様、テーブルT0とテーブルT2を用いてその入力データxに対する出力値を得るようするが、それ以外の区間に存在する場合には、関数曲線を直線近似して入力データに対する出力を求めるか、入力データxに対しある一定値を出力するものとする。
【0099】ここでは、説明を簡単にするために、入力データxが区間Bと区間Dに存在する場合には、その区間の関数曲線を直線近似して入力データxに対する出力を求め、入力データxが区間Aに存在する場合には、入力データxに対する出力はある一定値を出力するというような設定を行っておくものとする。
【0100】この第2に方法においても入力データxがどの区間に存在するかを判断する必要があるが、それは、前述したように、この実施の形態の例では、入力データxの上位2ビットを読み込むことによって判断できる。たとえば、入力データxが「011011」である場合には、上位2ビットが「01」であるので区間Bに存在する。
【0101】このように、入力データxが区間Bに存在する場合には、ここでは、その区間における関数曲線を直線近似して入力データに対する出力を求めることにしているので、図4に示すように、区間Bを直線L1で直線近似して、その直線Lの傾きgを求め、予め求められている代表値(たとえば、区間Bの開始点に対する出力を代表値ybとして予め求めておく)と直線Lの傾きgを用いることによって、その区間C内に存在する入力データxに対する出力値を求めることができる。
【0102】なお、この直線近似によって入力データxに対する出力を求める方法は本発明においては特に限定されるものではなく、種々の方法を用いることができる。入力データxが区間Dに存在する場合も同様にして求めることができる。
【0103】また、ここでは、区間Bおよび区間Dをそれぞれ1つの区間として、それら区間Bと区間Dをそれぞれ直線近似した例について説明したが、これらの区間Bと区間Dをそれぞれ細分化してその細分化されたそれぞれの区間において直線近似を行って入力データxに対する出力を求めるようにしてもよい。
【0104】たとえば、前述の第1の方法で説明したように、区間Bにおいては、区間B1と区間B2に2等分し、さらに、区間B2については区間B21,B22,B23,B24というように4等分している。このように、それぞれの区間を細分化して、それぞれ細分化された区間ごとにその区間の関数曲線を直線近似してもよい。
【0105】図5の例は、区間Bを区間B1と区間B2に2等分し、それぞれの区間B1,B2をそれぞれ直線L1,L2で直線近似した例であり、この場合、それぞれの区間B1,B2の代表値yb1,yb2と傾きg1,g2を求めておき、それら代表値yb1,yb2と傾きg1,g2を用いることによって、それぞれの区間B1,B2内に存在する入力データxに対する出力を求めることができる。
【0106】以上説明したようにこの第2の方法では、第1の方法と同様、複雑な関数式をそのまま計算することなくテーブル参照のみ、あるいは、テーブル参照に加えて近似値を求めるための簡単な計算だけで入力データxに対する出力yを求めることができる。
【0107】なお、この第2の方法では、関数曲線を近似する方法として、演算量の少ない直線近似を用いたが、直線近似以外の近似方法を用いてもよいことは勿論である。たとえば、より精度が必要であれば、直線近似法よりは多少演算量は増えるが、シンプソン法と呼ばれる近似法を用いることもできる。このシンプソン法による近似法は、直線近似に比べれば、確かに、演算量は多少増えるが、前述した従来の演算方法に比べれば演算量を削減でき、しかも、実用上、十分な精度を得ることが可能となる。
【0108】また、上述した第1の方法および第2の方法においては、関数曲線の変化が急峻な区間を高精度な出力を得る必要のある区間とし、変化がそれ程急峻でない区間は多少の誤差を許容できる区間として説明したが、これに限られるものではなく、たとえば、変化がそれ程急峻でない区間であっても高精度な出力を得る必要のある場合もあり、変化が急峻であっても多少の誤差を許容できる場合もあり、どの区間を高精度な出力を得るようにするか、どの区間は多少の誤差を許容できる区間とするかなどは任意に設定することができる。
【0109】以上、本発明の基本的な処理について説明したが、本発明は、音声認識などに用いられるHMMの出力確率を求める際の処理に適用することで好結果を得ることができる。
【0110】図6はある音素HMMにおけるある状態(状態iから状態j)の入力データ(音声分析されて得られたある時刻の特徴ベクトルのある次元の特徴データ)に対する出力確率分布を示すもので、これは、前述の図1に示す関数曲線に相当すると考えることができ、このような出力確率分布において、前述した第1の方法あるいは第2の方法を用いて、入力データ(ある次元kの特徴データyk)に対する出力確率を得ることができる。
【0111】ここでは、特徴データykを前述の第1の方法あるいは第2の方法と同様、6ビットで表されるデータとし、その特徴データの取り得る値の範囲(関数の定義域)を説明の都合上、図1と同様、区間A、区間B、区間C、区間Dの4つの区間に分けるものとする。
【0112】ここで、区間Aは出力確率分布の端部付近で出力確率の変化の殆どない区間、区間Bは出力確率の変化が比較的なだらかで特徴データの出現頻度もそれほどは多くない区間、区間Cは出力確率の変化が激しく、特徴データの出現頻度も高い区間(出力確率分布の平均μij(k)の前後の区間)、区間Dは区間Bと同じく出力確率の変化が比較的なだらかで特徴データの出現頻度もそれほどは多くない区間であるとする。
【0113】この図6における区間A,B,C,Dを図1の区間A,B,C,Dに対応付けるとすれば、図6における区間Aは図1の区間Aに、図6における区間Bは図1の区間Bに、図6における区間Cは図1の区間C、図6における区間Dは図1における区間Dにそれぞれ対応する区間であるといえる。
【0114】したがって、ここでは、入力データとしてのある次元kの特徴データkが区間Cに存在した場合には、高精度な出力確率が得られるようにし、また、特徴データykが区間Bまたは区間Dに存在した場合には、多少の誤差は許容できるがある程度の精度を持った出力確率を得られるようにし、特徴データykが区間Aに存在した場合には、予め決められたある一定値した出力確率を得るようにするというような区間ごとの設定を行う。
【0115】具体的な処理動作としては前述の第1の方法あるいは、第2の方法と同様に行うことができる。たとえば、ある時刻tの特徴ベクトルYtを構成するある次元(k次元)の特徴データykが前述の第1の方法あるいは第2の方法で用いた入力データxに相当するので、仮に、特徴データykが「011011」であったとすれば、前述したと同じ処理を実行することで、特徴ベクトルykに対する出力確率を得ることができる。
【0116】なお、本来はこのHMMの出力確率分布に対応したテーブルを作成し、そのテーブルに従って処理を行うのであるが、ここでは、便宜的に前述の第1の方法と同じテーブルを用いて説明を行うことにする。
【0117】すなわち、その「011011」の特徴データykにおいて、上位2ビットを読み込む。この場合、上位2ビットは「01」であるから、その上位2ビット「01」をkeyとして図3に示すテーブルT0を参照すると、次に参照すべきテーブルのテーブル番号として「T1」、次に読み込むべきビット数「1」を得る。
【0118】そして、読み込んだ1ビット(上位2ビット「01」に続く1ビット)の値「1」をkeyとしてテーブルT1により次に参照すべきテーブルT5を得るとともに、次に読み込むべきビット数「2」を得る。
【0119】そして、今度は、読み込んだ2ビット(この場合、「011」に続く2ビット「01」)をkeyとしてテーブルT5を参照すると、次に参照すべきテーブル番号として「−1」が記述されているので、この段階で特徴データykに対する出力確率値を得ることができる。
【0120】この処理を図6に対応させて説明すると、まず、 「011011」の値を有する特徴データykについて上位2ビットが「01」であるので、この特徴データykは区間B内に存在する入力データであることがわかる。なお、この区間Bにおいては、この場合、入力データxに対して求められる値は多少の誤差が許容される区間としている。
【0121】そして、この区間Bにおいては上位2ビットに続くビット数として、1ビットを読み込むことになっているので、この区間Bをさらに2等分して区間B1とB2に分けて考えることができる。この場合、区間B1は上位2ビットに続く1ビットの値が「0」、区間B2は上位2ビットに続く1ビットの値が「1」に対応している。
【0122】このように、特徴データykが「011011」の例では、上位2ビットに続く1ビットの値が「1」であるので、区間B2であり、この場合、テーブルT1によれば、さらに、そのあとに続く2ビットを読み込むことになっているので、区間B2をさらに4分割した区間B21,B22,B23,B24のどれかに特徴データykが存在することになる(この特徴データykは区間B22に存在する)。
【0123】そして、その読み込んだ2ビット「01」をkeyとしてテーブルT5を参照すればによれば、このテーブルT5にはそれ以上のテーブル参照はせず、その段階で特徴データykに対する出力確率を得ることができる。つまり、この場合、「011011」の特徴データykは区間B22に存在することになり、この区間B22に存在する特徴データに対してはすべて同じ出力確率値が得られることになる。このように、テーブル参照だけで特徴データykに対する出力確率値を得ることができる。
【0124】なお、この大きく分けた区間Bは多少の誤差が許容される区間とされているので、この区間Bに特徴データykが存在した場合には、多少の誤差のある出力確率が得られるが、音声認識結果に大きな影響を与えるものではない。
【0125】また、特徴データykが「100100」である場合について考える。この場合、上位2ビットは「10」であるので、この「10」をkeyとしてテーブルT0を参照すると、次に参照すべきテーブル番号として「T2」、次に読み込むべきビット数として「4」を得ることができる。
【0126】これにより、読み込んだ4ビット(上位2ビット「10」に続く4ビット)の値が、「0100」であるので、この読み込んだ4ビットの値「0100」をkeyとしてテーブルT2を参照すると、次に参照すべきテーブル番号として「−1」が記述されているので、この段階でテーブル参照は終了し、このテーブルT2により特徴データykに対する出力確率値を得ることができる。
【0127】このように、特徴データykの上位2ビットの「10」は、この図6の例では、区間Cに相当し、ここでは、区間Cは特徴データykに対して高精度な出力確率値を得ることが要求される区間としている。したがって、この区間Cにおいては、取り得る特徴データykのすべてに対応して出力確率値を得ることができるようにしている。
【0128】なお、区間Dについても前述の第1の方法で説明した手順に沿って出力確率を求めることができるので、ここでは、その説明は省略する。また、区間Aにおいては、ある一定の出力確率値を出力する。
【0129】以上は第1の方法によって特徴データykに対する出力確率値を求める場合の一例について説明したが、第2の方法を用いても特徴データykに対する出力確率値を求めることができることは勿論である。すなわち、この場合、図6における区間Bに特徴データykが存在する場合には、その区間Bにおける出力確率曲線を直線近似して、特徴データykに対する出力確率値を得るようにするが、その処理については、第2の方法の説明で述べた処理を適用できるので、ここではその説明については省略する。
【0130】なお、HMMはそれぞれの状態ごとに出力確率の分布が異なるので、それぞれの状態ごとに、高精度な出力を必要とする区間の設定や多少の誤差を許容できる区間の設定、さらには、どの程度の分解能で出力確率を得るのかなどの設定を行う。
【0131】また、本発明は混合連続分布型のHMMにおいても適用することができる。図7は混合連続分布型HMMの出力確率分布の一例を示すもので、従来では、このような混合連続分布型HMMの出力確率分布において、ある時刻における特徴ベクトルのある次元kの特徴データykに対する出力確率を関数によって計算で求める場合には、1つの分布ごとに計算を行ってその和を求めるというきわめて繁雑で計算量の多い演算を行う必要がある。
【0132】本発明ではこの図7に示すように、混合連続分布型HMMの出力確率分布曲線において、特徴データの取り得る範囲について、たとえば、16等分し、精度を要する区間C1からC5、多少の誤差が許容される区間B1からB9、一定値を出力する区間A1,A2というように分けた例である。
【0133】このような混合連続分布型HMMの出力確率分布曲線においても前述した第1の方法および第2の方法を適用して特徴データykに対する出力確率を得ることができる。この場合、特徴データykの取り得る範囲について16等分しているので、入力される特徴データykがどの区間に存在するかを調べるには、上位4ビットを読み込むことで、その特徴データの存在する区間を知ることができる。
【0134】そして、区間C1からC5のいずれかに特徴データykが存在すれば、高精度な出力確率が得られるように、たとえば、その区間において取り得るすべての特徴データykに対応した出力確率を得ることができるようにする。また、区間B1からB9のいずれかに特徴データykが存在すれば、前述した第1の方法のようなそれぞれの区間ごとの出力確率を得るようにするか、または、第2の方法に述べたように、直線近似によって出力確率を得るようにする。また、区間A1,A2のいずれかに特徴データykが存在する場合には、予め設定した一定値の出力確率を得るようにする。
【0135】このように、混合連続分布型HMMにおいても、出力確率を求める演算処理を前述の第1の方法あるいは第2の方法を適用して行うことができる。第1の方法を適用する場合は、 この混合連続型HMMの出力確率分布に対応したテーブルを作成し、前述した説明に準じた処理を行うことで、テーブル参照のみで出力確率をえることができる。
【0136】この第1の方法を適用した場合は、数回のテーブル参照だけで済み、しかも、そのテーブルは、精度が必要とされる特徴データykに対してはその出力を高精度に得ることができ、多少の誤差が許容される特徴データykに対してはその出力を許容される誤差範囲で得ることができるというように、特徴データykに応じた分解能で出力を得ることができるようなテーブルとしているので、テーブルサイズも極力小さく抑えることができ、かつ、誤差の抑えられた高精度な出力確率を得ることができるので、これによって高い認識率を得ることができる。
【0137】また、第2の方法を適用する場合は、前述したように、多少の誤差を許容できる区間B1〜B9においては、それらの区間の出力確率曲線を直線近似することによって出力確率を求めるようにする。
【0138】この第2の方法を適用した場合であっても、近似値を得るための簡単な計算を追加するだけで済み、しかも、誤差の抑えられた高精度な出力確率を得ることができるので、これによって高い認識率を得ることができる。
【0139】なお、本発明は以上説明した実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲で種々変形実施可能となるものである。たとえば、前述の実施の形態では、本発明をHMMの出力確率を求める際に適用した例について説明したが、本発明は複雑なアルゴリズムを必要とする関数に与えることによって、その入力データに対する値を得る必要のあるデータ演算に広く適用することができるものである。
【0140】また、HMMの出力確率は、関数演算によって求める場合、前述した(1)式によって求めることができるが、この(1)式をそのまま用いて計算すると、計算によって得られる値が小さくなりすぎてアンダーフローが起こる可能性がある。そこで、通常、(1)式を対数化して求めることがなされるが、本発明は、対数化した場合にも適用できることは勿論である。
【0141】また、本発明は、以上説明した本発明を実現するための処理手順が記述された処理プログラムを作成し、その処理プログラムをフロッピィディスク、光ディスク、ハードディスクなどの記録媒体に記録させておくことができ、本発明はその処理プログラムが記録された記録媒体をも含むものである。また、ネットワークから当該処理プログラムを得るようにしてもよい。
【0142】
【発明の効果】以上説明したように本発明によれば、入力データの取り得る範囲を、少なくとも、前記入力データに対する出力値を高精度に得る必要のある区間と、多少の誤差が許容される区間とに分けて、前記入力データに対し、その入力データがどの区間に存在するかを判定し、その判定された区間に対応した分解能の出力値をテーブル参照だけあるいは簡単な近似計算だけで取得できるようにしているので、従来のように、複雑な計算を行う必要もなく、また、出力値を得るためのデータ演算を行う際のメモリ領域の占有度を小さくすることができる。また、入力データに応じた分解能で出力を得ることができることから、精度が必要とされる入力データに対してはその出力を高精度に得ることができ、多少の誤差が許容される入力データに対してはその出力を許容される誤差範囲で得ることができ、これによって、その出力値を用いたそれ以降のデータ処理を高精度に行うことができる。
【0143】したがって、本発明はHMMにおける出力確率を求める演算などに適用することで特に大きな効果が得られ、これによれば、精度が必要とされる特徴データに対してはその出力確率を高精度に得ることができ、多少の誤差が許容される特徴データに対してはその出力確率を許容される誤差範囲で得ることができるというように、入力される特徴データに応じた分解能での出力確率を得ることができる。そして、その出力確率を得る処理は、階層構造に作成されたテーブルを順次参照するだけあるいは簡単な近似計算を行えばよいので、少ない演算量で高速に出力確率を得ることができ、かつ、精度が必要な部分に対しては高精度な出力確率値を得ることができるので、高い認識性能を得ることができる。




 

 


     NEWS
会社検索順位 特許の出願数の順位が発表

URL変更
平成6年
平成7年
平成8年
平成9年
平成10年
平成11年
平成12年
平成13年


 
   お問い合わせ info@patentjp.com patentjp.com   Copyright 2007-2013