(57)【特許請求の範囲】
【請求項１】
所定時間長のデジタル信号を、複数のブロックに分割する分割部と、
前記各ブロックのデジタル信号をそれぞれ周波数変換し、第１の変換係数群をブロック毎に生成する周波数変換部と、
前記周波数変換部で生成された第１の変換係数群を、周波数が高くなるにつれて帯域幅が広くなるような複数の小周波数帯域に分割する帯域分割部と、
前記小周波数帯域に属する前記第１の変換係数の絶対値の最大値を、前記小周波数帯域毎に検索し、検索された最大値を周波数順に並べることにより、最大値列を、前記ブロック毎に生成する最大値検索部と、
前記各ブロックの最大値列を、最大値列コードブックを用いてベクトル量子化し、求められたインデックスを、時系列順に並べることにより、最大値列インデックスのデータ列を生成する最大値列ベクトル量子化部と、
前記最大値列ベクトル量子化部で求めた前記各ブロックの最大値列のインデックスを前記最大値列コードブックを用いて逆量子化し、前記各ブロックのそれぞれの小周波数帯域に属する第１の変換係数群を、当該ブロックに対応する逆量子化値であって当該小周波数帯域の逆量子化値を用いて除算する除算部と、
前記除算部で除算された前記各ブロックの第１の変換係数群にそれぞれ含まれる同一周波数の変換係数を、時系列に並び替えることにより、第２の変換係数群を、周波数毎に生成する時系列並び替え部と、
前記各周波数の第２の変換係数群を、変換係数コードブックを用いてベクトル量子化し、求められたインデックスを、周波数順に並べることにより、変換係数インデックスのデータ列を生成する変換係数ベクトル量子化部と、
前記各周波数の第２の変換係数群の重要度に基づいて、前記変換係数インデックスのデータ列を圧縮し、前記各周波数の第２の変換係数群が符号化対象であるか否かを示すフラグに関する情報を生成するデータ圧縮部と、
前記最大値列ベクトル量子化部で生成された最大値列インデックスのデータ列と前記データ圧縮部で生成された前記フラグに関する情報と、前記圧縮されたデータ列とを符号化する符号化部と、
を備える符号化装置。
【請求項２】
前記符号化部により符号化されたデータの符号量が、目標符号量よりも小さいか否かの判定を、その判定が肯定されるまで繰り返す符号量判定部をさらに備え、
前記データ圧縮部は、
前記符号量判定部の判定が否定された場合に、前記重要度が小さい順に、第２の変換係数群を、符号化対象から削除することにより、前記変換係数インデックスのデータ列を圧縮して、前記フラグに関する情報を生成し、
前記符号化部は、
前記符号量判定部の判定が肯定されるまで、前記データ圧縮部によって圧縮された前記データ列と、生成された前記フラグに関する情報とを符号化することを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記データ圧縮部は、
前記符号化されるデータの符号量が目標符号量より少なく、かつ、その目標符号量に近い値となるまで、前記重要度が高い順に、前記符号化部の符号化対象となる周波数を選択し、
選択された周波数に対応する第２の変換係数群を符号化対象として、前記変換係数インデックスのデータ列を圧縮し、前記フラグに関する情報を生成することを特徴とする請求項１に記載の符号化装置。
【請求項４】
前記データ圧縮部は、
前記生成されたフラグを、周波数順に並べることによりフラグ列を形成し、
形成されたフラグ列に基づいて、そのフラグ列において同一の値が連続する連続数の数列を前記フラグに関する情報として生成することを特徴とする請求項１に記載の符号化装置。
【請求項５】
前記データ圧縮部は、
前記フラグ列において、同一の値が連続する連続数がその上限値に等しい場合には、前記数列において、その連続数と、次の連続数との間に、０を挿入することを特徴とする請求項４に記載の符号化装置。
【請求項６】
前記データ圧縮部は、
前記フラグ列が、１から開始される場合には、前記数列の先頭に０を挿入することを特徴とする請求項４又は５に記載の符号化装置。
【請求項７】
一連の複数の前記所定時間長のデジタル信号に関して前記符号化部によってそれぞれ符号化された符号化データの符号量の和が、全体の目標符号量よりも小さいか否かの判定を、その判定が肯定されるまで繰り返す全体符号量判定部と、
前記全体符号量判定部の判定が否定された場合に、前記重要度が全体で最小となる第２の変換係数群に対応する変換係数インデックスを、前記変換係数インデックスのデータ列から除外し、除外された第２の変換係数群に対応する前記フラグを符号化対象でないことを示す値に変更する調整部と、
前記変換係数インデックスが除外され、前記フラグが変更された前記所定時間長のデジタル信号に関するデータを再符号化する再符号化部と、をさらに備えることを特徴とする請求項１乃至６のいずれか一項に記載の符号化装置。
【請求項８】
所定時間長のデジタル信号を、複数のブロックに分割する分割工程と、
前記各ブロックのデジタル信号をそれぞれ周波数変換し、第１の変換係数群をブロック毎に生成する周波数変換工程と、
前記周波数変換工程で生成された第１の変換係数群を、周波数が高くなるにつれて帯域幅が広くなるような複数の小周波数帯域に分割する帯域分割工程と、
前記小周波数帯域に属する前記第１の変換係数の絶対値の最大値を、前記小周波数帯域毎に検索し、検索された最大値を周波数順に並べることにより、最大値列を、前記ブロック毎に生成する最大値検索工程と、
前記各ブロックの最大値列を、最大値列コードブックを用いてベクトル量子化し、求められたインデックスを、時系列順に並べることにより、最大値列インデックスのデータ列を生成する最大値列ベクトル量子化工程と、
前記最大値列ベクトル量子化工程で求めた前記各ブロックの最大値列のインデックスを前記最大値列コードブックを用いて逆量子化し、前記各ブロックのそれぞれの小周波数帯域に属する第１の変換係数群を、当該ブロックに対応する逆量子化値であって当該小周波数帯域の逆量子化値を用いて除算する除算工程と、
前記除算工程で除算された前記各ブロックの第１の変換係数群にそれぞれ含まれる同一周波数の変換係数を、時系列に並び替えることにより、第２の変換係数群を、周波数毎に生成する時系列並び替え工程と、
前記各周波数の第２の変換係数群を、変換係数コードブックを用いてベクトル量子化し、求められたインデックスを、周波数順に並べることにより、変換係数インデックスのデータ列を生成する変換係数ベクトル量子化工程と、
前記各周波数の第２の変換係数群の重要度に基づいて、前記変換係数インデックスのデータ列を圧縮し、前記各周波数の第２の変換係数群が符号化対象であるか否かを示すフラグに関する情報を生成するデータ圧縮工程と、
前記最大値列ベクトル量子化工程で生成された最大値列インデックスのデータ列と前記データ圧縮工程で生成された前記フラグに関する情報と、前記圧縮されたデータ列とを符号化する符号化工程と、
を含む符号化方法。
【請求項９】
所定時間長のデジタル信号を、複数のブロックに分割する分割手順と、
前記各ブロックのデジタル信号をそれぞれ周波数変換し、第１の変換係数群をブロック毎に生成する周波数変換手順と、
前記周波数変換手順で生成された第１の変換係数群を、周波数が高くなるにつれて帯域幅が広くなるような複数の小周波数帯域に分割する帯域分割手順と、
前記小周波数帯域に属する前記第１の変換係数の絶対値の最大値を、前記小周波数帯域毎に検索し、検索された最大値を周波数順に並べることにより、最大値列を、前記ブロック毎に生成する最大値検索手順と、
前記各ブロックの最大値列を、最大値列コードブックを用いてベクトル量子化し、求められたインデックスを、時系列順に並べることにより、最大値列インデックスのデータ列を生成する最大値列ベクトル量子化手順と、
前記最大値列ベクトル量子化手順で求めた前記各ブロックの最大値列のインデックスを前記最大値列コードブックを用いて逆量子化し、前記各ブロックのそれぞれの小周波数帯域に属する第１の変換係数群を、当該ブロックに対応する逆量子化値であって当該小周波数帯域の逆量子化値を用いて除算する除算手順と、
前記除算手順で除算された前記各ブロックの第１の変換係数群にそれぞれ含まれる同一周波数の変換係数を、時系列に並び替えることにより、第２の変換係数群を、周波数毎に生成する時系列並び替え手順と、
前記各周波数の第２の変換係数群を、変換係数コードブックを用いてベクトル量子化し、求められたインデックスを、周波数順に並べることにより、変換係数インデックスのデータ列を生成する変換係数ベクトル量子化手順と、
前記各周波数の第２の変換係数群の重要度に基づいて、前記変換係数インデックスのデータ列を圧縮し、前記各周波数の第２の変換係数群が符号化対象であるか否かを示すフラグに関する情報を生成するデータ圧縮手順と、
前記最大値列ベクトル量子化手順で生成された最大値列インデックスのデータ列と前記データ圧縮手順で生成された前記フラグに関する情報と、前記圧縮されたデータ列とを符号化する符号化手順と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デジタル信号を符号化する符号化装置、デジタル信号を符号化する符号化方法、及びデジタル信号処理を行うコンピュータにより実行させるプログラムに関する。
【背景技術】
【０００２】
人間の聴覚の特性に基づいて音声符号化を行い、この符号化データを復号する音声処理装置が開示されている（例えば、特許文献１乃至４参照）。
【０００３】
【特許文献１】特開２００５−１２８４０４号公報
【特許文献２】特開２００６−１１９３６３号公報
【特許文献３】特開２００６−２５９５１７号公報
【特許文献４】特開２００６−２６２２９５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
この種の音声処理装置は、電子辞書装置のような語学辞書において発音される単語の音声用としても利用される。語学辞書用の音声処理装置では、十分な音質を確保しつつ、16kbps程度のデータレートを確保しなければならない。
【０００５】
本発明は、このような事情に鑑みてなされたもので、データの質を確保しつつ、そのデータの符号化効率を向上させることができる符号化装置、符号化方法、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記目的を達成するために、本発明の符号化装置は、所定時間長のデジタル信号を、複数のブロックに分割する分割部と、前記各ブロックのデジタル信号をそれぞれ周波数変換し、第１の変換係数群をブロック毎に生成する周波数変換部と、前記周波数変換部で生成された第１の変換係数群を、周波数が高くなるにつれて帯域幅が広くなるような複数の小周波数帯域に分割する帯域分割部と、前記小周波数帯域に属する前記第１の変換係数の絶対値の最大値を、前記小周波数帯域毎に検索し、検索された最大値を周波数順に並べることにより、最大値列を、前記ブロック毎に生成する最大値検索部と、前記各ブロックの最大値列を、最大値列コードブックを用いてベクトル量子化し、求められたインデックスを、時系列順に並べることにより、最大値列インデックスのデータ列を生成する最大値列ベクトル量子化部と、前記最大値列ベクトル量子化部で求めた前記各ブロックの最大値列のインデックスを前記最大値列コードブックを用いて逆量子化し、前記各ブロックのそれぞれの小周波数帯域に属する第１の変換係数群を、当該ブロックに対応する逆量子化値であって当該小周波数帯域の逆量子化値を用いて除算する除算部と、前記除算部で除算された前記各ブロックの第１の変換係数群にそれぞれ含まれる同一周波数の変換係数を、時系列に並び替えることにより、第２の変換係数群を、周波数毎に生成する時系列並び替え部と、前記各周波数の第２の変換係数群を、変換係数コードブックを用いてベクトル量子化し、求められたインデックスを、周波数順に並べることにより、変換係数インデックスのデータ列を生成する変換係数ベクトル量子化部と、前記各周波数の第２の変換係数群の重要度に基づいて、前記変換係数インデックスのデータ列を圧縮し、前記各周波数の第２の変換係数群が符号化対象であるか否かを示すフラグに関する情報を生成するデータ圧縮部と、前記最大値列ベクトル量子化部で生成された最大値列インデックスのデータ列と前記データ圧縮部で生成された前記フラグに関する情報と、前記圧縮されたデータ列とを符号化する符号化部と、を備える。
【０００８】
また、前記符号化部により符号化されたデータの符号量が、目標符号量よりも小さいか否かの判定を、その判定が肯定されるまで繰り返す符号量判定部をさらに備え、前記データ圧縮部は、前記符号量判定部の判定が否定された場合に、前記重要度が小さい順に、第２の変換係数群を、符号化対象から削除することにより、前記変換係数インデックスのデータ列を圧縮して、前記フラグに関する情報を生成し、前記符号化部は、前記符号量判定部の判定が肯定されるまで、前記データ圧縮部によって圧縮された前記データ列と、生成された前記フラグに関する情報とを符号化することとしてもよい。
【０００９】
また、前記データ圧縮部は、前記符号化されるデータの符号量が目標符号量より少なく、かつ、その目標符号量に近い値となるまで、前記重要度が高い順に、前記符号化部の符号化対象となる周波数周波数を選択し、選択された周波数周波数に対応する第２の変換係数群を符号化対象として、前記変換係数インデックスのデータ列を圧縮し、前記フラグに関する情報を生成することとしてもよい。
【００１０】
また、前記データ圧縮部は、前記生成されたフラグを、周波数順に並べることによりフラグ列を形成し、形成されたフラグ列に基づいて、そのフラグ列において同一の値が連続する連続数の数列を前記フラグに関する情報として生成することとしてもよい。
【００１１】
この場合、前記データ圧縮部は、前記フラグ列において、同一の値が連続する連続数がその上限値に等しい場合には、前記数列において、その連続数と、次の連続数との間に、０を挿入することとしてもよい。
【００１２】
また、前記データ圧縮部は、前記フラグ列が、１から開始される場合には、前記数列の先頭に０を挿入することとしてもよい。
【００１３】
また、一連の複数の前記所定時間長のデジタル信号に関して前記符号化部によってそれぞれ符号化された符号化データの符号量の和が、全体の目標符号量よりも小さいか否かの判定を、その判定が肯定されるまで繰り返す全体符号量判定部と、前記全体符号量判定部の判定が否定された場合に、前記重要度が全体で最小となる第２の変換係数群に対応する変換係数インデックスを、前記変換係数インデックスのデータ列から除外し、除外された第２の変換係数群に対応する前記フラグを符号化対象でないことを示す値に変更する調整部と、前記変換係数インデックスが除外され、前記フラグが変更された前記所定時間長のデジタル信号に関するデータを再符号化する再符号化部と、をさらに備えることとしてもよい。
【発明の効果】
【００２０】
本発明によれば、データの質を確保しつつ、符号化効率を向上させることができる。
【発明を実施するための最良の形態】
【００２１】
≪第１の実施形態≫
次に、本発明の第１の実施形態について図面を参照して詳細に説明する。
【００２２】
図１には、本実施形態に係る音声処理装置１の概略的な構成が示されている。このような音声処理装置１としては、例えば、携帯電話機や、電子辞書のような端末装置が想定される。
【００２３】
音声処理装置１は、音声入出力装置１１と、記憶装置１２と、ＲＯＭ１３と、ＲＡＭ１４と、ＣＰＵ１５と、を備える。これらは、内部バスを介して接続される。
【００２４】
音声入出力装置１１は、入力された音声をデジタル信号に変換する。音声入出力装置１１は、例えば、入力された音声をサンプリング周波数１６ｋＨｚでサンプリングし、１６ビットで量子化することにより、デジタル信号Sound0を生成する。また、音声入出力装置１１は、デジタル信号が供給されると、このデジタル信号に対応する音声を出力する。
【００２５】
記憶装置１２には、音声入出力装置１１によって生成されたデジタル信号Sound0が符号化されたデータが格納される。記憶装置１２には、その符号化データを復号するのに必要なデータも格納される。これらのデータについては後述する。
【００２６】
ＲＯＭ１３には、ＣＰＵ１５によって実行される処理に必要なプログラムコードなどの各種データが格納されている。ＲＡＭ１４には、ＣＰＵ１５によって実行される処理に必要なデータが格納される。
【００２７】
ＣＰＵ１５は、ＲＯＭ１３に格納されたプログラムコードに従って処理を実行する。ＣＰＵ１５による処理の実行により、符号化部１６と復号部１７とが実現されている。
【００２８】
符号化部１６は、音声入出力装置１１によって変換されたデジタル信号の符号化を行う。符号化部１６は、図２に示されるように、ＤＣ除去部２１と、フレーム化部２２と、ＭＤＣＴ（Modified Discrete Cosine Transform, 修正離散コサイン変換）部２３と、正規化部２４と、帯域分割部２５と、最大値検索部２６と、最大値列ベクトル量子化（ＶＱ）部２７と、最大値除算部２８と、量子化部２９と、時間順並び替え部３０と、係数ベクトル量子化（ＶＱ）部３１と、エントロピ符号化部３２と、符号量比較部３３と、データ削除部３４と、コードブック５０、５１と、を備えている。
【００２９】
ＤＣ除去部２１は、図３に示されるように、音声入力装置１１が生成したサンプリング周期Ｔｓのデジタル信号Sound0から、直流（ＤＣ）成分Ｘdcを削除する。直流成分Ｘdcを削除するのは、直流成分Ｘdcが、音質とは無関係であるためである。ＤＣ除去部２１は、例えば、高域通過フィルタによって実現することができる。以下の式（１）には、高域通過フィルタの伝達関数Ｈ（ｚ）の一例が示されている。
【００３０】
【数１】
0004978539.tif 000002
ＤＣ除去部２１は、直流成分Ｘdcが除去されたデジタル信号Sound1を記憶装置１２に格納する。そして、ＤＣ除去部２１は、フレーム化部２２に処理開始を通知する。
【００３１】
この通知を受けて、フレーム化部２２は、記憶装置１２に格納されたデジタル信号Sound1を読み出してフレームに分割する。図４には、デジタル信号Sound1のフレーム分割により生成されたフレーム信号（所定時間長のデジタル信号）との関係が模式的に示されている。図４に示されるように、各フレーム信号は、直前のフレーム信号と、時間が一部重複している。この重複時間をＴとする。図４には、後述するＭＤＣＴの処理単位であるＭＤＣＴブロック（１ＭＤＣＴ）も示されている。各ＭＤＣＴブロックの時間長は２Ｔとなっている。すなわち、ＭＤＣＴブロックの重複時間は、その時間長の半分である。また、フレーム間の重複時間も、ＭＤＣＴブロックの時間長の半分である時間Ｔとなっている。このようにすれば、複数のフレーム（デジタル信号の全区間）に渡って、各ＭＤＣＴブロックの時間間隔は、一定となる。
【００３２】
なお、図４では、１フレームにつきＭＤＣＴブロックが４つとなっているが、以下では、１フレームにつき、Ｎ個（Ｎは、２以上の整数）のブロックが生成されるものとして説明する。フレーム化部２２は、フレーム分割により生成された複数のフレーム信号を、フレーム単位で、記憶装置１２に格納する。そして、フレーム化部２２は、ＭＤＣＴ部２３に処理開始を通知する。
【００３３】
この通知を受けて、分割部及び周波数変換部としてのＭＤＣＴ部２３は、記憶装置１２から読み出した各フレーム信号に対して、周波数変換を行う。より具体的には、ＭＤＣＴ部２３は、記憶装置１２から読み出したフレーム信号を、複数のＭＤＣＴブロックに分割し、そのブロック毎に周波数変換を行い、ＭＤＣＴ係数Ｘk（ｋ；周波数を示す符号）をブロック毎に算出する。ＭＤＣＴ部２３は、次の式（２）、式（３）を用いて、ＭＤＣＴ係数Ｘkを算出する。１回のＭＤＣＴで１つのＭＤＣＴブロックのＭＤＣＴ係数Ｘkが算出される。なお、ＭＤＣＴ係数Ｘkのタップ長Ｍは、５１２タップが理想的である。
【００３４】
【数２】
0004978539.tif 000003
ＭＤＣＴ部２３で生成された、各ＭＤＣＴブロックのＭＤＣＴ係数Ｘk（すなわち第１の変換係数群）は、記憶装置１２に格納される。ＭＤＣＴ部２３は、正規化部２４に処理開始を通知する。
【００３５】
この通知を受けて、正規化部２４は、各ＭＤＣＴブロックのＭＤＣＴ係数Ｘkを、記憶装置１２から読み出す。正規化部２４は、各ＭＤＣＴブロックのＭＤＣＴ係数Ｘkを、フレーム単位で、正規化する。正規化部２４は、ＭＤＣＴ係数Ｘkの最大値gainを取得して分離し、各ＭＤＣＴ係数Ｘkをこの最大値gainで除算することにより、正規化を行う。
【００３６】
より具体的には、正規化部２４は、以下の式（４）を用いて、フレーム内における、ＭＤＣＴ係数Ｘkの最大値gainを取得する。
【００３７】
【数３】
0004978539.tif 000004
図５（Ａ）には、各ブロックにおける補正係数Ｘkの最大値Ｘｍａｘiが示されている。この最大値Ｘｍａｘiが、ブロック間で比較され、最も大きいＸｍａｘiが、最終的な最大値gainとして求められる。
【００３８】
次に、正規化部２４は、以下の式（５）を用いてＭＤＣＴ係数の正規化を行う。
【００３９】
【数４】
0004978539.tif 000005
【００４０】
図５（Ｂ）には、正規化されたＭＤＣＴ係数Ｘｎkの一例が示されている。この正規化により、ＭＤＣＴ係数は、例えば、１６ビットから８ビット程度に量子化される。正規化部２４は、ＭＤＣＴ係数Ｘｎkを、ブロック毎にまとめて、フレーム単位で、記憶装置１２に格納する。また、正規化部２４は、最大値gainを記憶装置１２に格納する。そして、正規化部２４は、帯域分割部２５に処理開始を通知する。
【００４１】
この通知を受けて、帯域分割部２５は、図５（Ｂ）に示されるように、記憶装置１２から読み出したＭＤＣＴ係数Ｘｎkの全周波数帯域を、ブロック毎に、Ｐ個（Ｐ：２以上の整数）の分割帯域ｂ_ｐ（ｐ；分割帯域の番号）に対数的に分割する（区分けする）。帯域分割部２５は、人間の聴覚の特性に合わせて、低域（低周波数帯域）ほど狭く、高域（高周波数帯域）ほど広くなるように、対数的に周波数帯域を分割する。これにより、その分割帯域ｂ＿ｐは、聴覚の特性に即したものとなる。分割帯域の分割数Ｐは、例えば、１６程度であるのが望ましい。
【００４２】
周波数帯域を分割すると、帯域分割部２５は、最大値検索部２６に処理開始を通知する。
【００４３】
この通知を受けて、最大値検索部２６は、図６（Ａ）に示されるように、各周波数帯域ｂ＿ｐに属する、ＭＤＣＴ係数Ｘｎkの絶対値の最大値を検索し、各周波数帯域ｂ＿ｐのその最大値ｅｎｖ_ｐを、ブロック毎に取得する。そして、最大値検索部２６は、図６（Ｂ）に示されるように、これらの最大値ｅｎｖ_ｐの集合から成る最大値列ｅｎｖ［ｐ］（ｐ＝１〜Ｐ）を、ブロック毎に生成する。最大値検索部２６は、ＭＤＣＴ係数Ｘｎk及び最大値列ｅｎｖ［ｐ］（ｐ＝１〜Ｐ）を、ブロック毎にまとめて、フレーム単位で、記憶装置１２に格納する。最大値検索部２６は、最大値列ベクトル量子化部２７に処理開始を通知する。
【００４４】
この通知を受けて、最大値列ベクトル量子化部２７は、記憶装置１２から読み出した最大値列ｅｎｖ［ｐ］を、ブロック毎にベクトル量子化する。このベクトル量子化には、ＲＯＭ１３に格納されているコードブック５０が用いられる。図７（Ａ）には、コードブック５０が示されている。図７（Ａ）に示されるように、コードブック５０には、最大値列ｅｎｖ［ｐ］の次元Ｐと同じ次元ＰのべクトルＶj（ｊ＝１〜ｑ）が、ｑ個登録されている。最大値列ベクトル量子化部２７は、このコードブック５０を参照して、以下の式（６）の値ｅjが最小となるインデックスｊの値を、ブロック毎に求める。
【００４５】
【数５】
0004978539.tif 000006
図７（Ｂ）では、各ブロックの最大値列ｅｎｖ［ｐ］が、ｅｎｖ［ｐ］1〜ｅｎｖ[ｐ]Nとして示されている。最大値列ベクトル量子化部２７は、求められたｅｎｖ［ｐ］1〜ｅｎｖ[ｐ]Nにそれぞれ対応するインデックスｊを、時系列順に並べることにより、図７（Ｂ）に示されるような最大値列インデックスのデータ列ｉｎｄｅｘ１［ｉ］（ｉ＝１〜Ｎ）を生成する。データ列ｉｎｄｅｘ１［ｉ］は、記憶装置１２に格納される。そして、最大値列ベクトル量子化部２７は、最大値除算部２８に処理開始を通知する。
【００４６】
この通知を受けて、最大値除算部２８は、ＭＤＣＴ係数Ｘｎkと、データ列ｉｎｄｅｘ１［ｉ］を、記憶装置１２から読み出す。そして、最大値除算部２８は、各ブロックのそれぞれの分割帯域に属するＭＤＣＴ係数Ｘｎkを、そのブロックのインデックスｉｎｄｅｘ１［ｉ］に対応するコードブック５０の各要素の値（すなわち逆量子化値）であって、その分割帯域に対応する逆量子化値を用いて除算する。これにより、ＭＤＣＴ係数Ｘｅk（ｋ＝１〜Ｍ／２−１）が、ブロック毎に得られる。図８には、この除算により生成された、あるブロックのＭＤＣＴ係数Ｘｅkの一例が示されている。最大値除算部２８は、ＭＤＣＴ係数Ｘｅkを、ブロック毎にまとめて、フレーム単位で、記憶装置１２に格納する。そして、最大値除算部２８は、量子化部２９に処理開始を通知する。
【００４７】
この通知を受けて、量子化部２９は、記憶装置１２から読み出したＭＤＣＴ係数Ｘｅkを、分割帯域ｂ＿ｐ毎に予め設定されている精度（ビット数）で量子化する。図９（Ａ）、図９（Ｂ）には、量子化の様子が示されている。量子化部２９は、図９（Ａ）に示されるＭＤＣＴ係数Ｘｅkを量子化した結果として、図９（Ｂ）に示されるＭＤＣＴ係数Ｘｑkを取得する。量子化部２９は、取得されたＭＤＣＴ係数Ｘｑkを、記憶装置１２に格納する。そして、量子化部２９は、時間順並び替え部３０に処理開始を通知する。
【００４８】
この通知を受けて、時系列並び替え部としての時間順並び替え部３０は、１フレーム内の複数のＭＤＣＴブロック各々のＭＤＣＴ係数群（すなわち第１の変換係数群）に含まれるＭＤＣＴ係数Ｘｑkを、記憶装置１２から読み出す。そして、時間順並び替え部３０は、ＭＤＣＴ係数Ｘｑkを、同一周波数のグループに再グループ化し、再グループ化されたＭＤＣＴ係数群（すなわち第２の変換係数群）について、ＭＤＣＴ係数Ｘｑkを時間順に並び替える。図１０（Ａ）、図１０（Ｂ）には、この並び替えの様子が示されている。図１０（Ａ）に示されるように、ｉ（ｉ＝１〜Ｎ）番目のブロック目のＭＤＣＴ係数Ｘｑkを、補正係数Ｘｑk,iとする。図１０（Ｂ）に示されるように、補正係数Ｘｑk,iは、同一周波数のＭＤＣＴ係数群にグループ化され、時系列順に並び替えられている。ここで、同一周波数の変換係数群の各ＭＤＣＴ係数Ｘｑk,iを各要素とするベクトルを、係数ベクトルＦk（ｋ＝１〜Ｍ／２−１）とする。時間順並び替え部３０は、この係数ベクトルＦkを、記憶装置１２に格納する。そして、時間順並び替え部３０は、係数ベクトル量子化部３１に処理開始を通知する。
【００４９】
この通知を受けて、係数ベクトル量子化部３１は、記憶装置１２から読み出した係数ベクトルＦkを、ベクトル量子化する。このベクトル量子化には、ＲＯＭ１３に格納されたコードブック５１が用いられる。図１１（Ａ）には、コードブック５１が示されている。図１１（Ａ）に示されるように、コードブック５１には、係数ベクトルＦkの次元Ｎと同じ次元Ｎの代表ベクトルＷjが、ｓ個登録されている。係数ベクトル量子化部３１は、このコードブック５１を参照して、次の式（７）の値が最小となるインデックスｊの値を、周波数（要するにｋ）毎に求める。
【００５０】
【数６】
0004978539.tif 000007
これにより、図１１（Ｂ）に示されるように、周波数毎に、係数ベクトルＦkに最も近いベクトルのインデックス値ｉｎｄｅｘ２［ｋ］（ｋ＝１〜Ｍ／２−１）が求められる。係数ベクトル量子化部３１は、ｉｎｄｅｘ２［ｋ］（ｋ＝１〜Ｍ／２−１）を、記憶装置１２に格納する。そして、係数ベクトル量子化部３１は、エントロピ符号化部３２に処理開始を通知する。
【００５１】
この通知を受けて、エントロピ符号化部３２は、最大値gainと、最大値列のインデックスのデータ列ｉｎｄｅｘ１［１］〜ｉｎｄｅｘ１［Ｎ］と、ＭＤＣＴ係数群のインデックスのデータ列ｉｎｄｅｘ２［ｋ］〜ｉｎｄｅｘ２［Ｋ］（初期段階では、Ｋ＝Ｍ／２−１）と、後述する符号数列Ｃtとを、記憶装置１２から読み出す。そして、エントロピ符号化部３２は、レンジコーダ、ハフマンコード等のエントロピ符号化方法を用いて、図示しないコード表を用いて、読み込まれたデータをエントロピ符号化し、符号化データを生成する。
【００５２】
図１２には、エントロピ符号化部３２によって符号化されるデータが示されている。図１２に示されるように、エントロピ符号化部３２によって符号化されるデータとして、符号数列Ｃtがある。符号数列Ｃtは、存在フラグＦＬＧkが符号化されたものである。存在フラグＦＬＧkとは、図１３に示されるように、各周波数のＭＤＣＴ係数群が符号化対象であるか否かを示すフラグである。存在フラグＦＬＧkが１であれば、対応する周波数のＭＤＣＴ係数群は符号化対象であり、存在フラグＦＬＧkが０であれば、その周波数のＭＤＣＴ係数群は符号化対象ではない。初期段階では、すべての周波数のＭＤＣＴ係数群が符号化の対象となっているため、図１３に示されるように、存在フラグＦＬＧkには、全周波数で１が設定されるようになる。すなわち、存在フラグＦＬＧkの初期値は、すべて１である。
【００５３】
このように、符号化フラグＦＬＧkのフラグ列（以下、適宜、フラグ列ＦＬＧkと略述する）は、０と１とからなる数列である。このフラグ列ＦＬＧkを、０と１の連続する数で表現することにより、符号化したものが符号数列Ｃtである。図１４（Ａ）、図１４（Ｂ）には、符号数列Ｃtの一例が示されている。図１４（Ａ）に示されるように、存在フラグ列ＦＬＧkにおいて、０と１が連続する数が、順番に、２、２、１、３、３、１、１である場合、符号数列Ｃtは、｛２、２、１、３、３、１、１｝となる。
【００５４】
また、図１４（Ｂ）に示されるように、フラグ列ＦＬＧkにおいて、同一の値が連続する連続数がその上限値に等しい場合には、符号数列Ｃtにおいて、その連続数と、次の連続数との間に、０が挿入される。
【００５５】
また、図１４（Ｂ）に示されるように、フラグ列ＦＬＧkが、１から開始される場合には、符号数列Ｃtの先頭に０が挿入される。
【００５６】
前述のように、初期段階では、存在フラグＦＬＧkは、全て１であるため、符号数列Ｃtの初期値も一意に決まっている。記憶装置１２には、予め、存在フラグＦＬＧkを全て１としたときの符号数列Ｃtの初期値が格納されている。エントロピ符号化部３２は、初回の符号化では、符号数列Ｃtの初期値を読み出して、それをエントロピ符号化する。
【００５７】
エントロピ符号化部３２は、符号化されたデータを、記憶装置１２に記憶する。そして、エントロピ符号化部３２は、符号量比較部３３に対して、処理開始を通知する。
【００５８】
この通知を受けて、符号量比較部３３は、記憶装置１２に格納された符号データを読み出し、そのデータの符号量と目標符号量とを比較する。この目標符号量は、十分な音質を確保しつつ、１６ｋｂｐｓ程度のデータレートを確保するために予め設定されている。
【００５９】
符号量比較部３３は、合計符号量と目標符号量とを比較し、合計符号量が目標符号量以下であるか否かを判定する。符号量比較部３３は、その判定が否定された場合、その旨をデータ削除部３４に通知する。
【００６０】
この通知を受けて、データ削除部３４は、符号化されるデータの一部を削除する。まず、データ削除部３４は、周波数毎に、ＭＤＣＴ係数群、すなわち各係数ベクトルＦkに対応するＭＤＣＴ係数群の重要度（音質に影響を及ぼす度合い）を算出する。
【００６１】
重要度を算出する最も単純な方法には、周波数毎に合計エネルギｇkを算出する方法がある。周波数毎の合計エネルギｇkは、次の式（８）によって表される。
【００６２】
【数７】
0004978539.tif 000008
【００６３】
なお、データ削除部３４は、エネルギｇkに、周波数に依存した重み係数を乗算するようにしても良い。例えば、データ削除部３４は、５００Ｈｚ未満の周波数帯域に属するＭＤＣＴ係数には、１．３を乗算し、５００以上３５００Ｈｚ未満の周波数帯域に属するＭＤＣＴ係数には、１．１を乗算し、３５００Ｈｚ以上の周波数帯の補正係数には、１．０を乗算することができる。すなわち、低域の重みを大きくすることができる。
【００６４】
次に、データ削除部３４は、図１５に示されるように、エネルギｇkが最小である周波数に対応する要素を、ｉｎｄｅｘ２［ｋ］から、削除することにより、ｉｎｄｅｘ２［ｋ］を圧縮する。さらに、データ削除部３４は、エネルギｇkの値が０である周波数に対応する存在フラグＦＬＧkを０に設定する。
【００６５】
さらに、データ削除部３４は、変更された存在フラグＦＬＧkに基づいて、上述した方法を用いて符号数列Ｃtを生成する。このデータ削除部３４によるデータ削除により、値が０となる存在フラグＦＬＧkが増えて、０の連続数が増加し、符号数列Ｃtの符号長は短くなる。データ削除部３４は、圧縮されたｉｎｄｅｘ２［ｋ］と符号数列Ｃtとを記憶装置１２に格納する。そして、データ削除部３４は、エントロピ符号化部３２に処理開始を通知する。
【００６６】
そして、エントロピ符号化部３２は、図１２に示されるデータを記憶装置１２から読み出して、改めてエントロピ符号化を行い、符号化されたデータを、記憶装置１２に記憶する。そして、エントロピ符号化部３２は、符号量比較部３３に処理開始を通知する。
【００６７】
符号量比較部３３は、符号化データの符号量と目標符号量とを再び比較する。このようにして、符号量比較部３３における判定が肯定されるまで、データ削除部３４におけるデータ削除と、エントロピ符号化部３２におけるエントロピ符号化が繰り返される。この繰り返しの過程で、図１５に示されるように、エネルギgkの小さい順に、ＭＤＣＴ係数群が、符号化対象から除外され、ｉｎｄｅｘ２［ｋ］の要素数Ｋ（Ｋ＜Ｍ／２−１）が減り、符号数列Ｃtが減っていくようになり、結果的に、符号化されるデータの符号量が小さくなっていく。
【００６８】
符号量が目標符号量以下となり、符号量比較部３３における判定が肯定されると、そのときの符号化データが、符号列として記憶装置１２に格納される。
【００６９】
次に、復号部１７について説明する。復号部１７は、記憶装置１２から符号化データを読み出して符号化データを復号し、デジタル音声信号を生成する。復号部１７は、図１６に示されるように、エントロピ復号部４１と、係数逆ベクトル量子化（ＶＱ）部４２と、周波数並び替え部４３と、逆量子化部４４と、最大値列逆ベクトル量子化（ＶＱ）部４５と、最大値乗算部４６と、ゲイン合成部４７と、ＩＭＤＣＴ部４８と、コードブック５０、５１とを備える。
【００７０】
エントロピ復号部４１は、記憶装置１２から読み出された符号化データのエントロピ復号を行い、図１２に示される各種データを取得する。これらのデータは、記憶装置１２に格納される。エントロピ復号部４１は、係数逆ベクトル量子化（ＶＱ）部４２に、処理開始を通知する。
【００７１】
この通知を受けて、係数逆ベクトル量子化（ＶＱ）部４２は、符号数列Ｃtと、ｉｎｄｅｘ２［ｋ］（ｋ＝１〜Ｋ）とに基づいて、コードブック５１を参照して、逆ベクトル量子化を行い、ＭＤＣＴ係数Ｘｑkを生成する。より具体的には、係数逆ＶＱ部４２は、まず、図１７に示されるように、符号数列Ｃtに基づいて、存在フラグＦＬＧkを復号する。復号では、存在フラグＦＬＧkが１になっているところに、ｉｎｄｅｘ２［ｋ］（ｋ＝１〜Ｋ）の各要素が対応する。したがって、係数逆ベクトル量子化（ＶＱ）部４２は、復号された存在フラグＦＬＧkを参照し、存在フラグＦＬＧkが０になっている周波数では、係数ベクトルＦkを０ベクトルとし、存在フラグＦＬＧkが１になっている周波数では、ｉｎｄｅｘ２［ｋ］に対応するコードブック５１の係数ベクトルを、ｋの順に、係数ベクトルＦkとして設定する。
【００７２】
このようにして、係数逆ベクトル量子化（ＶＱ）部４２は、すべての周波数におけるＭＤＣＴ係数群Ｆkを生成する。図１７には、このようにして生成されたＭＤＣＴ係数群Ｆkの一例が模式的に示されている。ＭＤＣＴ係数群Ｆkは、すべての要素が０の係数群か、コードブック５１内の係数ベクトルＷ1〜Ｗsに対応する係数群かのいずれかとなる。ＭＤＣＴ係数群Ｆkの１つ１つの要素が、ＭＤＣＴ係数Ｘｑk,iである。係数逆ベクトル量子化（ＶＱ）部４２は、ＭＤＣＴ係数Ｘｑk,iを、記憶装置１２に格納する。そして、係数逆ベクトル量子化（ＶＱ）部４２は、周波数並び換え部４３に処理開始を通知する。
【００７３】
この通知を受けて、周波数並び換え部４３は、記憶装置１２に格納されていたＭＤＣＴ係数Ｘｑk,iを、各ブロックのＭＤＣＴ係数群、すなわち周波数方向に並び替え、記憶装置１２に格納する。そして、周波数並び換え部４３は、逆量子化部４４に処理開始を通知する。
【００７４】
この通知を受けて、逆量子化部４４は、記憶装置１２から読み出された各ブロックのＭＤＣＴ係数Ｘｑkに対し、分割帯域ｂ＿ｐ毎に予め設定された精度で逆量子化を行い、ＭＤＣＴ係数Ｘｅkをブロック毎に生成する。逆量子化部４４は、取得されたＭＤＣＴ係数Ｘｅkを、記憶装置１２に格納し、最大値列逆ベクトル量子化（ＶＱ）部４５に処理開始を通知する。
【００７５】
この通知を受けて、最大値列逆ベクトル量子化（ＶＱ）部４５は、コードブック５０を参照して、復号され記憶装置１２に格納されている最大値列のデータ列ｉｎｄｅｘ１［ｉ］に基づいてベクトル逆量子化を行い、最大値列ｅｎｖ［ｐ］Nを取得する。最大値列ｅｎｖ［ｐ］Nは、記憶装置１２に格納される。最大値列逆ベクトル量子化（ＶＱ）部４５は、最大値乗算部４６に処理開始を通知する。
【００７６】
この通知を受けて、最大値乗算部４６は、その分割帯域ｂ＿ｐに属するＭＤＣＴ係数Ｘｅkを抽出し、抽出されたＭＤＣＴ係数Ｘｅkと、ｅｎｖ［ｐ］に格納された最大値ｅｎｖ＿ｐとを乗算する。この乗算により、各ブロックのＭＤＣＴ係数Ｘｎkが取得される。最大値乗算部４６は、取得された各ブロックのＭＤＣＴ係数Ｘｎkを記憶装置１２に格納し、ゲイン合成部４７に処理開始を通知する。
【００７７】
この通知を受けて、ゲイン合成部４７は、記憶装置１２から読み出された各ブロックのＭＤＣＴ係数Ｘｎkに、復号された最大値gainを乗算し、各ブロックのＭＤＣＴ係数Ｘkを取得する。ゲイン合成部４７は、取得されＭＤＣＴ係数Ｘkを記憶装置１２に格納するとともに、ＩＭＤＣＴ部４８に処理開始を通知する。
【００７８】
ＩＭＤＣＴ部４８は、記憶装置１２から読み出されたＭＤＣＴ係数Ｘkに対して、ブロック毎に逆ＭＤＣＴを行う。ＩＭＤＣＴ部４８は、さらに、この逆ＭＤＣＴにより得られた各ブロックのデジタル信号を合成して、デジタル音声信号Sound1を復元する。復元されたデジタル音声信号Sound1は、音声入出力装置１１に送られ、再生される。
【００７９】
次に、本実施形態に係る音声処理装置１の動作について説明する。符号化部１６における符号化動作では、まず、図１８に示されるように、ＤＣ削除部２１において直流成分Ｘdcが削除されたデジタル信号が、ＭＤＣＴ部２３においてＮ個のブロック信号に分割される。１ブロック当たりのサンプル数はＭである。
【００８０】
その後、ＭＤＣＴ部２３においてブロック毎にＭＤＣＴが行われる。図１９には、このときの符号量が、模式的に示されている。この時点で、１つの変換係数のビット長が１６ビットであるとすると、フレーム単位の符号量は、１６×Ｎ（ブロック数）×Ｍ／２−１（１ブロックあたりの変換係数の数）となっている。
【００８１】
その後、正規化部２４において、ＭＤＣＴ係数の正規化が行われる。正規化が行われると、すべてのＭＤＣＴ係数のデータ長は、例えば、１６ビットから８ビットに短縮され、図２０に示されるように、１フレームあたりの符号量は、１／２に短縮される。
【００８２】
次に、図２１に示されるように、帯域分割部２５において、周波数帯域がＰ個に分割され、それぞれの分割帯域における最大値ｅｎｖ［１］〜ｅｎｖ［Ｐ］が検索される。そして、図２２に示されるように、最大値列ＶＱ部２７において、求められた最大値列にｅｎｖ［１］〜ｅｎｖ［Ｐ］に対するベクトル量子化が行われ、コードブック５０を参照して、最大値列のデータ列ｉｎｄｅｘ１［ｉ］（ｉ＝１〜Ｎ）が生成される。
【００８３】
次に、最大値除算部２８において、最大値ｅｎｖ［１］〜ｅｎｖ［Ｐ］を用いて、ＭＤＣＴ係数の除算が行われる。図２３では、ｉｎｄｅｘ１［ｉ］に対応するコードブック５０のベクトルの各要素（逆量子化値）を用いて、各分割帯域に属するＭＤＣＴ係数が除算される様子が模式的に示されている。この除算により、ＭＤＣＴ係数のビット数はさらに小さくなる。
【００８４】
次に、量子化部２９におけるＭＤＣＴ係数の量子化後、図２４に示されるように、時間順並び替え部３０におけるＭＤＣＴ係数の並び替えが行われる。なお、量子化では、低域になればなるほど、ＭＤＣＴ変換係数のビット数は増加するようになるが、図２４では、図面の錯綜を防止するために、周波数全域にわたって、ＭＤＣＴ変換係数のビット数が同じであるものとしている。そして、図２５に示されるように、係数ＶＱ部３１において、コードブック５１を参照して、ＭＤＣＴ係数のベクトル量子化が行われ、ｉｎｄｅｘ２［ｋ］が求められる。そして、図２６に示されるように、データ削除部３４においてエネルギｇkが算出され、そのエネルギｇkが小さい順にＭＤＣＴ係数群が削除され、ｉｎｄｅｘ２［ｋ］が圧縮され、フラグＦＬＧkが変更され、符号数列Ｃtが圧縮される。
【００８５】
そして、図２７に示されるように、エントロピ符号化部３２において、ｇａｉｎ、ｉｎｄｅｘ１［ｉ］、ｉｎｄｅｘ２［ｋ］、Ｃtが符号化されるようになる。エネルギが小さい順に周波数に対応するＭＤＣＴ係数群が削除されればされるほど、ｉｎｄｅｘ２［ｋ］、符号数列Ｃtのデータ長は短くなり、データ圧縮率が向上する。
【００８６】
次に、復号部１７における復号の際には、図２８に示されるように、符号数列ＣtからフラグＦＬＧkが復号される。そして、フラグＦＬＧkと、圧縮されたｉｎｄｅｘ２［ｋ］とに基づいて、ｉｎｄｅｘ２［ｋ］が復元される。そして、復元されたｉｎｄｅｘ２［ｋ］に基づいて、コードブック５１を参照して、各周波数のＭＤＣＴ係数群が復元される。一方、ｉｎｄｅｘ１［ｉ］に基づいて、最大値列ｅｎｖ［ｐ］（ｅｎｖ＿ｐ）が復元される。そして、分割帯域ごとに、復号されたＭＤＣＴ係数群と、最大値ｅｎｖ＿ｐとが乗算されて、ＭＤＣＴ係数Ｘｑkが復元される。そして、ＭＤＣＴ係数Ｘｎkが、最大値ｇａｉｎと乗算されて、ＭＤＣＴ係数Ｘkが復元される。復元されたＭＤＣＴ係数Ｘkを、逆ＭＤＣＴすることにより、各ブロックの音声信号が復元され、これらの音声信号がフレーム単位の音声信号に合成される。
【００８７】
このように、上述のように符号化されたデータは、復号部１７で復号されることにより、１６ビットで量子化され、周波数１６ｋＨｚでサンプリングされた元の音声信号に復元される。この結果、音声処理装置１によって再生される音声の音質は、学習用途に好適なものとなる。
【００８８】
以上述べたように、本実施形態によれば、エネルギの小さい順にＭＤＣＴ係数群のデータを削除する。このようにすれば、音質に影響しないデータを優先的に削除することができるようになるので、音質を低下させることなく、符号化効率を高めることができるようになる。
【００８９】
≪第２の実施形態≫
次に、本発明の第２の実施形態について説明する。本実施形態では、符号化部１６の構成が、上記第１の実施形態に係る符号化部１６の構成と異なっている。
【００９０】
図２９に示されるように、本実施形態に係る符号化部１６は、データ削除部３４の代わりに符号化周波数選択部３５を備えている。また、本実施形態に係る符号化部１６では、符号量比較部３３が設けられておらず、この比較結果によるループも設けられていない。
【００９１】
符号化周波数選択部３５は、エントロピ符号化部３２における符号化対象となる周波数を選択する。符号化周波数選択部３５は、周波数毎に重要度を算出し、この重要度に基づいて、符号化対象となる周波数を選択する。
【００９２】
より具体的には、符号化周波数選択部３５は、上記式（８）に従ってエネルギｇkを算出し、このエネルギｇkが高いほど、この周波数の重要度が高いと判定する。そして、符号化周波数選択部３５は、重要度の高い順に、符号化対象の周波数を選択する。
【００９３】
なお、符号化周波数選択部３５は、エネルギｇkに、周波数に依存した重み係数を乗算するようにしてもよい。例えば、符号化周波数選択部３５は、５００Ｈｚ未満の周波数帯域の周波数のＭＤＣＴ係数には、１．３を乗算し、５００以上３５００Ｈｚ未満の周波数帯域の周波数のＭＤＣＴ係数には、１．１を乗算し、３５００Ｈｚ以上の周波数帯域の周波数のＭＤＣＴ係数には、１．０を乗算するようにしてもよい。
【００９４】
符号化周波数選択部３５は、符号化データの符号量が目標符号量に達したか否かを判別し、符号化データの符号量が目標符号量に達するまで、符号化する周波数を選択する。符号化周波数選択部３５は、選択された周波数のＭＤＣＴ係数群についてのベクトル量子化により得られるインデックスを、周波数順に並び替えることにより、ｉｎｄｅｘ２［ｋ］を生成する。また、符号化周波数選択部３５は、選択された周波数のＭＤＣＴ係数群に対応するフラグＦＬＧkを１に設定し、残りのフラグＦＬＧkを０に設定する。そして、符号化周波数選択部３５は、生成されたフラグＦＬＧkを符号数列Ｃtに符号化する。符号化周波数選択部３５は、ｉｎｄｅｘ２［ｋ］及び符号数列Ｃtを記憶装置１２に格納する。そして、符号化周波数選択部３５は、エントロピ符号化部３２に処理開始を通知する。
【００９５】
エントロピ符号化部３２では、上記第１の実施形態と同様に、図１２に示されるデータを符号化して、符号化データを生成する。
【００９６】
以上述べたように、本実施形態のように、重要度の低い方からデータを削除するのではなく、重要度の高い方から選択した方が、目標符号量に達するまでに符号化されるデータ量を、少なくすることができるので、符号化に要する時間を短縮することができるようになる。
【００９７】
≪第３の実施形態≫
次に、本発明の第３の実施形態について説明する。本実施形態に係る音声処理装置の構成は、上記各実施形態に係る音声処理装置の構成と同じであるので、詳細な説明を省略する。
【００９８】
本実施形態では、音声データの圧縮がフレーム単位で行われるだけでなく、複数のフレームにまたがって、音声データの圧縮が行われる。図３０には、本実施形態に係る音声処理装置の符号化動作のフローチャートが示されている。まず、ＣＰＵ１５は、ステップ２０１に示されるように、符号化部１６において、上記各実施形態で説明したように、フレーム毎にデジタル音声信号の符号化を行う。ここで、目標符号量は、フレーム毎に変更することができる。次のステップ２０３では、ＣＰＵ１５は、全フレームが符号化されたか否かを判定する。この判定が否定されれば、ＣＰＵ１５は、ステップ２０１に戻る。このようにして、全フレームの符号化が行われる。
【００９９】
ステップ２０３における判定が肯定されると、ＣＰＵ１５は、ステップ２０５に進む。ステップ２０５では、ＣＰＵ１５は、全フレームの符号量の和を算出する。次のステップ２０７では、ＣＰＵ１５は、符号量の和が、全体の目標符号量以下であるか否かを判定する。この判定が肯定されれば、ＣＰＵ１５は、符号化処理を終了する。一方、この判定が否定されれば、ＣＰＵ１５は、ステップ２０９に進む。
【０１００】
ステップ２０９では、ＣＰＵ１５は、重要度が最小であるＭＤＣＴ係数群を、全フレームから検索する。例えば、図３１に示されるように、フレーム１では、５つのＭＤＣＴ係数群が符号化対象となっており、フレーム２では、４つのＭＤＣＴ係数群が符号化対象となっており、フレーム３では、４つのＭＤＣＴ係数群が符号化対象となっているものとする。また、ｉ番目のフレームの周波数ｋのエネルギをｇi,kとする。この場合、ＣＰＵ１５は、すべてのＭＤＣＴ係数群を、エネルギｇi,kの低い順に並べ替え、エネルギｇi,kの最小の変換係数群を検索する。図３１の例では、フレーム１のＭＤＣＴ係数群Ｆ9のエネルギｇ1,9が最小となっている。
【０１０１】
次のステップ２１１では、ＣＰＵ１５は、エネルギｇi,kが最小のＭＤＣＴ係数群を、符号化対象から除外する。図３１の例では、フレーム１の変換係数群Ｆ9が、符号化対象から除外されるようになる。次のステップ２１３では、ＣＰＵ１５は、ＭＤＣＴ係数群が符号化対象から除外されたフレーム全体を再符号化する。図３１の例では、フレーム１に関するデータが再符号化されるようになる。
【０１０２】
ステップ２１３を行った後は、ＣＰＵ１５は、ステップ２０５に戻り、全フレームの符号量の和の算出（ステップ２０５）、全体の目標符号量との比較（ステップ２０７）を行う。このようにして、ステップ２０７における判定が肯定されるまで、ステップ２０５→２０７→２０９→２１１→２１３が繰り返される。このようにして、複数のフレームの符号化量が、全体の目標符号化量に抑えられる。
【０１０３】
なお、上記ステップ２１１では、ＭＤＣＴ係数群を１つずつ除外したが、一度に複数除外するようにしてもよい。
【０１０４】
本実施形態では、ステップ２０７が、全体符号量判定部に対応し、ステップ２０９、２１１が、調整部に対応し、ステップ２１３が、再符号化部に対応する。本実施形態によれば、複数のフレーム全体でのデータ圧縮が可能となる。このため、音質を維持するために、データ圧縮率を低くせざるをえないフレームは、データ圧縮率を低くしても、データ圧縮率を高めても音質にさほど影響のないフレームのデータ圧縮率を高めて、全体のデータ圧縮率を向上させることができる。
【０１０５】
例えば、各フレームの目標符号量を、１６〜２０ｋｂｐｓとし、全体の目標符号量を１２ｋｂｐｓとする。このようにすれば、フレームによっては、音質を低下させないために符号量を２０ｋｂｐｓ程度とし、データ圧縮率を高めても音質に影響しない他のフレームでのデータ圧縮を高め、全体として符号量を１２ｋｂｐｓ以下とすることができるようになる。この結果、音質を確保しつつ、そのデータの符号化効率を向上させることができる。
【０１０６】
以上詳細に説明したように、上記各実施形態によれば、時間順並び替え部３０により、ＭＤＣＴ係数を、周波数毎にグループ化し、エネルギの小さいグループを除去している。これにより、音質を損ねることなく符号化効率を高めることができる。さらに、周波数毎にまとめられたＭＤＣＴ係数群をベクトル量子化しているので、それらをスカラ量子化するよりも、データ圧縮率を高めることができる。この結果、音質を損なうことなく、符号化効率を高めることができる。
【０１０７】
また、上記各実施形態によれば、最大値列ＶＱ部２７において、最大値列インデックスのデータ列をベクトル量子化しているので、それらをスカラ量子化するよりも、データ圧縮率を高めることができる。この結果、音質を損なうことなく、符号化効率を高めることができる。
【０１０８】
上記各実施形態に係る符号化動作を行うことにより、１６ＫＨｚサンプリングの音声信号が、学習用途音質を維持したまま、１２ｋｂｐｓ程度に圧縮可能となる。
【０１０９】
また、上記各実施形態によれば、データ削除部３４又は符号化周波数選択部３５において、フラグ列ＦＬＧkが、そのフラグ列ＦＬＧkにおいて同一の値が連続する連続数の数列Ｃtに変換される。これにより、可逆な状態を保ったまま、データ圧縮率をさらに高めることができる。この結果、音質を損なうことなく、符号化効率を高めることができる。
【０１１０】
また、上記各実施形態によれば、データ削除部３４又は符号化周波数選択部３５では、フラグ列ＦＬＧkにおいて、同一の値が連続する連続数がその上限値に等しい場合には、符号数列Ｃtにおいて、その連続数と次の連続数との間に、０が挿入される。このように、連続数の上限値を設けるようにすれば、フラグ列ＦＬＧkの連続数の出現パターンが、どのようなものであっても、符号数列によるデータ長を、等しく短くすることができるようになる。
【０１１１】
また、上記各実施形態によれば、データ削除部３４又は符号化周波数選択部３５では、フラグ列ＦＬＧkが、１から開始される場合には、符号数列Ｃtの先頭に０が挿入される。このようにすれば、フラグ列ＦＬＧkに対する可逆なデータ圧縮が可能となる。
【０１１２】
なお、人間の聴覚の特性上、音声信号の音質を高めるためには、低音域に関わる符号化量をできるだけ多くし、高音域に関わる符号化量を相対的に少なくするのが望ましい。そこで、上記各実施形態では、量子化部におけるビット数や、エネルギｇkに乗ずる重みなどを低音域で多くした。このような観点からすると、ＭＤＣＴ係数のベクトル量子化に用いるコードブックを、低音域のものと高音域のものと２つ用意し、低音域のコードブックは、ベクトルの数ｑを多くし、高音域のコードブックは、ベクトルの数ｑを相対的に少なくするようにしてもよい。
【０１１３】
なお、上記各実施形態では、周波数変換としてＭＤＣＴを適用した。しかし、周波数変換方法としては、ＭＤＣＴに限られるものではなく、ＤＣＴを採用することもできる。
【０１１４】
また、上記各実施形態では、プログラムが、それぞれメモリ等に予め記憶されているものとして説明した。しかし、上述の処理を実行させるためのプログラムを、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disk Read-Only Memory）、ＤＶＤ（Digital Versatile Disk）、ＭＯ（Magneto Optical disk）などのコンピュータ読み取り可能な記録媒体に格納して配布し、これを別のコンピュータにインストールし、上述の手段として動作させ、あるいは、上述の工程を実行させてもよい。
【０１１５】
さらに、インターネット上のサーバ装置が有するディスク装置等にプログラムを格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するものとしてもよい。
【０１１６】
なお、本発明は、上記実施形態に限定されず、種々の変形及び応用が可能である。上述のハードウェア構成やブロック構成、フローチャートは例示であって、限定されるものではない。例えば、上記各実施形態では、音声処理装置として、携帯電話や電子辞書を想定して説明した。しかしながら、ＰＨＳ（Personal Handyphone System）や、ＰＤＡ（Personal Digital Assistants）、あるいは一般的なパーソナルコンピュータにも、本発明を容易に適用することができる。すなわち、上記実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。
【図面の簡単な説明】
【０１１７】
【図１】本発明の第１の実施形態に係る音声処理装置１の概略的な構成を示すブロック図である。
【図２】図１の符号化部の構成を示すブロック図である。
【図３】デジタル信号の直流成分除去の一例を示す図である。
【図４】フレーム分割の一例を示す図である。
【図５】図５（Ａ）は、各ブロックの変換係数の最大値の一例を示す図であり、図５（Ｂ）は、分割帯域を示す図である。
【図６】図６（Ａ）は、最大値の一例を示す図であり、図６（Ｂ）は、最大値列の一例を示す図である。
【図７】図７（Ａ）は、最大値列のコードブックの一例を示す図であり、図７（Ｂ）は、最大値列インデックスのデータ列の一例を示す図である。
【図８】最大値による除算の一例を示す図である。
【図９】図９（Ａ）は、量子化前のＭＤＣＴ係数の一例を示す図であり、図９（Ｂ）は、量子化後のＭＤＣＴ係数の一例を示す図である。
【図１０】図１０（Ａ）は、並べ替え前のＭＤＣＴ係数群の一例を示す図であり、図１０（Ｂ）は、並べ替え後のＭＤＣＴ係数群の一例を示す図である。
【図１１】図１１（Ａ）は、ＭＤＣＴ係数コードブックの一例を示す図であり、図１１（Ｂ）は、ベクトル量子化により求められるＭＤＣＴ係数インデックスのデータ列の一例を示す図である。
【図１２】符号化対象のデータの一例を示す図である。
【図１３】重要度により生成されるＭＤＣＴ係数インデックスのデータ列及びフラグ列の一例を示す図である。
【図１４】図１４（Ａ）及び図１４（Ｂ）は、フラグ列に基づく符号数列の生成方法の一例を示す図である。
【図１５】データ削除の一例を示す図である。
【図１６】図１の復号部の構成を示すブロック図である。
【図１７】ＭＤＣＴ係数の逆ベクトル量子化の一例を模式的に示す図である。
【図１８】ブロック分割時のデータの変化を模式的に示す図である。
【図１９】ＭＤＣＴ時のデータの変化を模式的に示す図である。
【図２０】正規化時のデータの変化を模式的に示す図である。
【図２１】帯域分割及び最大値検索時のデータの変化を模式的に示す図である。
【図２２】最大値列ベクトル量子化時のデータの変化を模式的に示す図である。
【図２３】最大値除算時のデータの変化を模式的に示す図である。
【図２４】時間順並び替え時のデータの変化を模式的に示す図である。
【図２５】ＭＤＣＴ係数のベクトル量子化時のデータの変化を模式的に示す図である。
【図２６】データ圧縮時のデータの変化を模式的に示す図である。
【図２７】符号化時のデータの変化を模式的に示す図である。
【図２８】復号動作におけるデータの変化を模式的に示す図である。
【図２９】本発明の第２の実施形態に係る符号化部の構成を示すブロック図である。
【図３０】本発明の第３の実施形態に係る符号化動作のフローチャートである。
【図３１】フレーム間のデータ圧縮の一例を示す図である。
【符号の説明】
【０１１８】
１  音声処理装置
１１  音声入出力装置
１２  記憶装置
１３  ＲＯＭ
１４  ＲＡＭ
１５  ＣＰＵ
１６  符号化部
１７  復号部
２１  ＤＣ除去部
２２  フレーム化部
２３  ＭＤＣＴ部
２４  正規化部
２５  帯域分割部
２６  最大値検索部
２７  最大値列ベクトル量子化部
２８  最大値除算部
２９  量子化部
３０  時間順並び替え部
３１  係数ベクトル量子化部
３２  エントロピ符号化部
３３  符号量比較部
３４  データ削除部
３５  符号化周波数選択部
４１  エントロピ復号部
４２  係数逆ベクトル量子化部
４３  周波数並び替え部
４４  逆量子化部
４５  最大値列逆ベクトル量子化部
４６  最大値乗算部
４７  ゲイン合成部
４８  ＩＭＤＣＴ部
５０、５１  コードブック
【図１】
0004978539.tif 000009
【図２】
0004978539.tif 000010
【図３】
0004978539.tif 000011
【図４】
0004978539.tif 000012
【図５】
0004978539.tif 000013
【図６】
0004978539.tif 000014
【図７】
0004978539.tif 000015
【図８】
0004978539.tif 000016
【図９】
0004978539.tif 000017
【図１０】
0004978539.tif 000018
【図１１】
0004978539.tif 000019
【図１２】
0004978539.tif 000020
【図１３】
0004978539.tif 000021
【図１４】
0004978539.tif 000022
【図１５】
0004978539.tif 000023
【図１６】
0004978539.tif 000024
【図１７】
0004978539.tif 000025
【図１８】
0004978539.tif 000026
【図１９】
0004978539.tif 000027
【図２０】
0004978539.tif 000028
【図２１】
0004978539.tif 000029
【図２２】
0004978539.tif 000030
【図２３】
0004978539.tif 000031
【図２４】
0004978539.tif 000032
【図２５】
0004978539.tif 000033
【図２６】
0004978539.tif 000034
【図２７】
0004978539.tif 000035
【図２８】
0004978539.tif 000036
【図２９】
0004978539.tif 000037
【図３０】
0004978539.tif 000038
【図３１】
0004978539.tif 000039