(57)【要約】【課題】  聴覚特性を考慮して、音質を維持しつつ軽快かつ高速に音声の符号化及び復号を行う。【解決手段】  符号化装置に入力された音声は、ＭＤＣＴ係数から構成されるスペクトルに変換される。まず、中区画帯域毎に、ＭＤＣＴ係数と与えられたビット数との比較により決定されたシフトビット数ぶんだけ、ＭＤＣＴ係数が右ビットシフトされる。次に、ＭＤＣＴ係数は大区画帯域毎に異なる精度で再量子化され、前記シフトビット数とともに符号化される。復号側では、逆再量子化、前記シフトビット数ぶんだけ左ビットシフトすることによるＭＤＣＴ係数の復元、及び、逆ＭＤＣＴによる実時間領域への変換、により、音声信号が復元される。【選択図】図６
2008089999.tif 000002
【特許請求の範囲】
【請求項１】
デジタル音声信号について、所定帯域幅を有する小区画帯域毎の量子化成分の値を求める離散スペクトル変換手段と、
聴覚特性に合わせて予め設定された所定の数の連続する前記小区画帯域から構成される各中区画帯域であって且つその中区画帯域に属する各量子化成分の値を表すために聴覚特性に合わせて予め設定された所定のビット数が割り当てられている各中区画帯域について、その中区画帯域に属する量子化成分の値のうちの最大値を検索する最大値検索手段と、
前記各中区画帯域について、前記最大値検索手段で検索された最大値を表すための必要ビット数が、その中区画帯域に割り当てられた前記所定のビット数を超えるか否かを判別する判別手段と、
前記判別手段により前記中区画帯域において前記必要ビット数が前記所定のビット数を超えると判別された場合に、前記最大値に除算を施して前記所定のビット数で表し得る値を超えないようにするための除数であり且つ２の累乗のうち最小の数である除数を求め、該中区画帯域に属する前記量子化成分の各値を該除数で除算し、前記判別手段により前記中区画帯域において前記必要ビット数が前記所定のビット数を超えないと判別された場合に、該中区画帯域に属する前記量子化成分の各値を維持する除算手段と、
聴覚特性に合わせて予め設定された所定の数の連続する前記中区画帯域から構成される大区画帯域に属する前記除算手段で処理済の量子化成分の値を、聴覚特性に合わせて予め該大区画帯域に割り当てられた精度にて量子化し直して再量子化済成分に変換する再量子化手段と、
前記除数と前記再量子化済成分とを符号化して出力する符号化手段と、
を備える音声符号化装置。
【請求項２】
前記中区画帯域の中心周波数が小さいほど、該中区画帯域に多くの前記所定のビット数を割り当てる割り当てビット数決定手段をさらに備える、
請求項１に記載の音声符号化装置。
【請求項３】
前記中区画帯域に低域から順に中区画識別用整数を割り当て、前記中区画帯域の中心周波数の対数が、前記中区画識別用整数に線型的に依存するように前記中区画帯域を構成する中区画帯域構成手段をさらに備える、
請求項１又は２に記載の音声符号化装置。
【請求項４】
前記大区画帯域の中心周波数が小さいほど、該大区画帯域における前記再量子化手段による量子化し直しの前記精度が高くなるように、各大区画帯域の前記精度を決定する再量子化精度決定手段をさらに備える、
請求項１乃至３の何れか１項に記載の音声符号化装置。
【請求項５】
前記再量子化手段は、
前記除算手段で処理済みの量子化済成分の値を、その対数を量子化することによって前記再量子化成分に変換する、
ことを特徴とする請求項１乃至４の何れか１項に記載の音声符号化装置。
【請求項６】
前記大区画帯域に低域から順に大区画識別用整数を割り当て、前記大区画帯域の中心周波数の対数が、前記大区画識別用整数に線型的に依存するように前記大区画帯域を構成する第１の大区画帯域構成手段をさらに備える、
請求項１乃至５の何れか１項に記載の音声符号化装置。
【請求項７】
低域の大区画帯域と中域の大区画帯域と高域の大区画帯域とを構成し、前記中域の大区画帯域と前記高域の大区画帯域との境界の周波数が、前記離散スペクトル変換手段が扱い得る周波数の上限値の半分の値となるようにするとともに、１乃至３の前記中区画帯域により前記低域の大区画帯域を構成する第２の大区画帯域構成手段をさらに備える、
請求項１乃至５の何れか１項に記載の音声符号化装置。
【請求項８】
単数又は複数の前記小区画帯域から構成されるエントロピ符号化用帯域毎に、それに属する前記量子化成分の絶対値の２乗の和を求め、該和に所定の係数を乗じた値を該エントロピ符号化用帯域の重要度とする重要度決定手段をさらに備え、
前記符号化手段は、符号長を所定の符号長以下にしつつ、前記重要度が大きい前記エントロピ符号化用帯域の前記再量子化成分を優先してエントロピ符号化する、
ことを特徴とする請求項１乃至７の何れか１項に記載の音声符号化装置。
【請求項９】
前記重要度決定手段は、前記和に、前記エントロピ符号化用帯域の中心周波数が低いほど大きな数を乗じた値を該エントロピ符号化用帯域の重要度とする、
ことを特徴とする請求項８に記載の音声符号化装置。
【請求項１０】
前記離散スペクトル変換手段は、
ＭＤＣＴ（Modified Discrete Cosine Transform）を用いる、
ことを特徴とする請求項１乃至９の何れか１項に記載の音声符号化装置。
【請求項１１】
音声信号の量子化スペクトルを、聴覚特性にあわせた第１の帯域分割方法により生成された帯域別に、２の累乗である除数で除した結果、生成される第１の変形スペクトルデータを、さらに第２の帯域分割方法により生成された帯域別に、聴覚特性に合わせた精度で再量子化した結果生成される第２の変形スペクトルデータと、前記除数と、が所定の符号化方法により符号化されたデータを受信する受信手段と、
前記符号化されたデータから、前記所定の符号化方法に対応する復号方法により、前記第２の変形スペクトルデータと、前記除数と、を復号する復号手段と、
復号された前記第２の変形スペクトルデータから、前記第１の変形スペクトルデータを復元する逆再量子化手段と、
復元された前記第１の変形スペクトルデータをビットシフトして、復号された前記除数を乗じることにより、前記量子化スペクトルを復元する乗算ビットシフト手段と、
復元された前記量子化スペクトルから前記音声信号を復元する離散スペクトル逆変換手段と、
を備える音声復号装置。
【請求項１２】
デジタル音声信号について、所定帯域幅を有する小区画帯域毎の量子化成分の値を求める離散スペクトル変換ステップと、
聴覚特性に合わせて予め設定された所定の数の連続する前記小区画帯域から構成される各中区画帯域であって且つその中区画帯域に属する各量子化成分の値を表すために聴覚特性に合わせて予め設定された所定のビット数が割り当てられている各中区画帯域について、その中区画帯域に属する量子化成分の値のうちの最大値を検索する最大値検索ステップと、
前記各中区画帯域について、前記最大値検索ステップで検索された最大値を表すための必要ビット数が、その中区画帯域に割り当てられた前記所定のビット数を超えるか否かを判別する判別ステップと、
前記判別ステップにより前記中区画帯域において前記必要ビット数が前記所定のビット数を超えると判別された場合に、前記最大値に除算を施して前記所定のビット数で表し得る値を超えないようにするための除数であり且つ２の累乗のうち最小の数である除数を求め、該中区画帯域に属する前記量子化成分の各値を該除数で除算し、前記判別ステップにより前記中区画帯域において前記必要ビット数が前記所定のビット数を超えないと判別された場合に、該中区画帯域に属する前記量子化成分の各値を維持する除算ステップと、
聴覚特性に合わせて予め設定された所定の数の連続する前記中区画帯域から構成される大区画帯域に属する前記除算ステップで処理済の量子化成分の値を、聴覚特性に合わせて予め該大区画帯域に割り当てられた精度にて量子化し直して再量子化済成分に変換する再量子化ステップと、
前記除数と前記再量子化済成分とを符号化して出力する符号化ステップと、
から構成される音声符号化方法。
【請求項１３】
音声信号の量子化スペクトルを、聴覚特性にあわせた第１の帯域分割方法により生成された帯域別に、２の累乗である除数で除した結果生成される第１の変形スペクトルデータを、さらに第２の帯域分割方法により生成された帯域別に、聴覚特性に合わせた精度で再量子化した結果、生成される第２の変形スペクトルデータと、前記除数と、が所定の符号化方法により符号化されたデータを受信する受信ステップと、
前記符号化されたデータから、前記所定の符号化方法に対応する復号方法により、前記第２の変形スペクトルデータと、前記除数と、を復号する復号ステップと、
復号された前記第２の変形スペクトルデータから、前記第１の変形スペクトルデータを復元する逆再量子化ステップと、
復元された前記第１の変形スペクトルデータをビットシフトして、復号された前記除数を乗じることにより、前記量子化スペクトルを復元する乗算ビットシフトステップと、
復元された前記量子化スペクトルから前記音声信号を復元する離散スペクトル逆変換ステップと、
から構成される音声復号方法。
【請求項１４】
コンピュータに、
デジタル音声信号について、所定帯域幅を有する小区画帯域毎の量子化成分の値を求める離散スペクトル変換ステップと、
聴覚特性に合わせて予め設定された所定の数の連続する前記小区画帯域から構成される各中区画帯域であって且つその中区画帯域に属する各量子化成分の値を表すために聴覚特性に合わせて予め設定された所定のビット数が割り当てられている各中区画帯域について、その中区画帯域に属する量子化成分の値のうちの最大値を検索する最大値検索ステップと、
前記各中区画帯域について、前記最大値検索ステップで検索された最大値を表すための必要ビット数が、その中区画帯域に割り当てられた前記所定のビット数を超えるか否かを判別する判別ステップと、
前記判別ステップにより前記中区画帯域において前記必要ビット数が前記所定のビット数を超えると判別された場合に、前記最大値に除算を施して前記所定のビット数で表し得る値を超えないようにするための除数であり且つ２の累乗のうち最小の数である除数を求め、該中区画帯域に属する前記量子化成分の各値を該除数で除算し、前記判別ステップにより前記中区画帯域において前記必要ビット数が前記所定のビット数を超えないと判別された場合に、該中区画帯域に属する前記量子化成分の各値を維持する除算ステップと、
聴覚特性に合わせて予め設定された所定の数の連続する前記中区画帯域から構成される大区画帯域に属する前記除算ステップで処理済の量子化成分の値を、聴覚特性に合わせて予め該大区画帯域に割り当てられた精度にて量子化し直して再量子化済成分に変換する再量子化ステップと、
前記除数と前記再量子化済成分とを符号化して出力する符号化ステップと、
を実行させるコンピュータプログラム。
【請求項１５】
コンピュータに、
音声信号の量子化スペクトルを、聴覚特性にあわせた第１の帯域分割方法により生成された帯域別に、２の累乗である除数で除した結果、生成される第１の変形スペクトルデータを、さらに第２の帯域分割方法により生成された帯域別に、聴覚特性に合わせた精度で再量子化した結果生成される第２の変形スペクトルデータと、前記除数と、が所定の符号化方法により符号化されたデータを受信する受信ステップと、
前記符号化されたデータから、前記所定の符号化方法に対応する復号方法により、前記第２の変形スペクトルデータと、前記除数と、を復号する復号ステップと、
復号された前記第２の変形スペクトルデータから、前記第１の変形スペクトルデータを復元する逆再量子化ステップと、
復元された前記第１の変形スペクトルデータをビットシフトして、復号された前記除数を乗じることにより、前記量子化スペクトルを復元する乗算ビットシフトステップと、
復元された前記量子化スペクトルから前記音声信号を復元する離散スペクトル逆変換ステップと、
を実行させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、聴覚の特性を考慮した音声圧縮復元を実行する際に必要となる、音声符号化装置、音声復号装置、音声符号化方法、音声復号方法、及び、プログラムに関する。
【背景技術】
【０００２】
通信容量が限られている状況下でなされる音声通信においては、できるだけ少ないデータによりできるだけ高品質の声音が復元可能となるように、音声符号化及び音声復号に工夫が必要となる。
【０００３】
かかる工夫のひとつの方向として、人間の聴覚の特性を有効に利用することが挙げられる。
【０００４】
聴覚の特性を考慮した音声符号化方法としては、音声信号をスペクトルに変換した後、聴覚の特性から導かれる臨界帯域を考慮しつつ、該スペクトルを複数のサブバンドに分割する方法が知られている（例えば、特許文献１及び非特許文献１参照）。
【０００５】
かかる方法においては、上述のサブバンド毎に、信号値、マスキング量、雑音等が勘案され、符号化に必要なビット数が算出された後、符号化が行われる。
【特許文献１】特開平７−４６１３７号公報
【非特許文献１】JIS規格番号JISX4323”ディジタル記録媒体のための動画信号及び付随する音響信号の1.5Mbit/s符号化−第3部  音響”、p. 96［online］、［平成１８年８月７日検索］、インターネット（URL：http://www.jisc.go.jp/app/pager?id=22028）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、かかる方法においては、符号化に必要なビット数の算出の手順が複雑であり、多くの計算ステップが必要となる。これは、例えばひとつには、マスキング量の算出が容易ではないためである。
【０００７】
よって、かかる方法を採用すると、符号化装置等の内部のＣＰＵ等の演算装置の処理負担が大きくなってしまい、処理速度の低下を招き得る。すると例えば、携帯電話等の用途において、リアルタイムで相互通話を行うのが困難になる。それを避けるためには、符号化装置等に、やむを得ず、特別に高性能の演算装置を搭載せざるを得ない。
【０００８】
そこで、聴覚特性を考慮した音声符号化及び復号方法を採用しつつ、演算装置として一般的なものが搭載された符号化及び符号装置であって、事実上のリアルタイム通話等が実用上問題のない音質で行われる符号化及び復号装置が必要とされている。
【０００９】
本発明は、上記実情に鑑みてなされたものである。すなわち、通信容量が制約されている状況において、一般的な演算装置を用いることを前提にしつつ、音声符号化にあたっては、聴覚特性を考慮した階層化された帯域別信号処理による高速化が図られ、音声復号にあたっては、実用上問題のない品質の音声を高速で復元できるようにした、音声符号化装置、音声復号装置、音声符号化方法、音声復号方法、及び、プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、この発明の第１の観点に係る音声符号化装置は、
デジタル音声信号について、所定帯域幅を有する小区画帯域毎の量子化成分の値を求める離散スペクトル変換手段と、
聴覚特性に合わせて予め設定された所定の数の連続する前記小区画帯域から構成される各中区画帯域であって且つその中区画帯域に属する各量子化成分の値を表すために聴覚特性に合わせて予め設定された所定のビット数が割り当てられている各中区画帯域について、その中区画帯域に属する量子化成分の値のうちの最大値を検索する最大値検索手段と、
前記各中区画帯域について、前記最大値検索手段で検索された最大値を表すための必要ビット数が、その中区画帯域に割り当てられた前記所定のビット数を超えるか否かを判別する判別手段と、
前記判別手段により前記中区画帯域において前記必要ビット数が前記所定のビット数を超えると判別された場合に、前記最大値に除算を施して前記所定のビット数で表し得る値を超えないようにするための除数であり且つ２の累乗のうち最小の数である除数を求め、該中区画帯域に属する前記量子化成分の各値を該除数で除算し、前記判別手段により前記中区画帯域において前記必要ビット数が前記所定のビット数を超えないと判別された場合に、該中区画帯域に属する前記量子化成分の各値を維持する除算手段と、
聴覚特性に合わせて予め設定された所定の数の連続する前記中区画帯域から構成される大区画帯域に属する前記除算手段で処理済の量子化成分の値を、聴覚特性に合わせて予め該大区画帯域に割り当てられた精度にて量子化し直して再量子化済成分に変換する再量子化手段と、
前記除数と前記再量子化済成分とを符号化して出力する符号化手段と、
を備える。
【００１１】
除数が2の累乗に限定されるため、電子計算機においては、除算といっても単純な右シフト演算だけで済む。これは、処理の高速化に資する。
【００１２】
前記中区画帯域の中心周波数が小さいほど、該中区画帯域に多くの前記所定のビット数を割り当てる割り当てビット数決定手段をさらに備える、ことが望ましい。
【００１３】
人間の聴覚には、低周波音であるほど、音量の大小に敏感である、という特性がある。よって、かかるビット数決定手段をさらに備えることは、聴覚特性を考慮した音声符号化装置にふさわしい。
【００１４】
前記中区画帯域に低域から順に中区画識別用整数を割り当て、前記中区画帯域の中心周波数の対数が、前記中区画識別用整数に線型的に依存するように前記中区画帯域を構成する中区画帯域構成手段をさらに備える、ことが望ましい。
【００１５】
人間の聴覚には、低周波音であるほど、周波数のわずかな差にも敏感であり、その感度は、周波数に対して対数的に変化する、という特性がある。よって、かかる中区画帯域構成手段をさらに備えることは、聴覚特性を考慮した音声符号化装置にふさわしい。
【００１６】
前記大区画帯域の中心周波数が小さいほど、該大区画帯域における前記再量子化手段による量子化し直しの前記精度が高くなるように、各大区画帯域の前記精度を決定する再量子化精度決定手段をさらに備える、ことが望ましい。
【００１７】
上述のとおり、人間の聴覚には、低周波音であるほど、音量の大小に敏感である、という特性があるためである。
【００１８】
前記再量子化手段は、前記除算手段で処理済みの量子化済成分の値を、その対数を量子化することによって前記再量子化成分に変換する、ことが望ましい。
【００１９】
人間の聴覚には、小さい音であるほど、音量のわずかな差にも敏感であり、その感度は、音量に対して対数的に変化するためである。
【００２０】
前記大区画帯域に低域から順に大区画識別用整数を割り当て、前記大区画帯域の中心周波数の対数が、前記大区画識別用整数に線型的に依存するように前記大区画帯域を構成する第１の大区画帯域構成手段をさらに備えてもよい。
【００２１】
上述の通り、人間の聴覚には、低周波音であるほど、周波数のわずかな差にも敏感であり、その感度は、周波数に対して対数的に変化する、という特性がある。よって、かかる第１の大区画帯域構成手段をさらに備えることは、聴覚特性を考慮した音声符号化装置として適切であるといえる。
【００２２】
あるいは、低域の大区画帯域と中域の大区画帯域と高域の大区画帯域とを構成し、前記中域の大区画帯域と前記高域の大区画帯域との境界の周波数が、前記離散スペクトル変換手段が扱い得る周波数の上限値の半分の値となるようにするとともに、１乃至３の前記中区画帯域により前記低域の大区画帯域を構成する第２の大区画帯域構成手段をさらに備えてもよい。
【００２３】
大区画帯域を３つしか設けないことにより、エントロピ符号化による圧縮率が高くなることが期待でき、通信容量の制約を満たす上で有利である。
【００２４】
単数又は複数の前記小区画帯域から構成されるエントロピ符号化用帯域毎に、それに属する前記量子化成分の絶対値の２乗の和を求め、該和に所定の係数を乗じた値を該エントロピ符号化用帯域の重要度とする重要度決定手段をさらに備え、前記符号化手段は、符号長を所定の符号長以下にしつつ、前記重要度が大きい前記エントロピ符号化用帯域の前記再量子化成分を優先してエントロピ符号化してもよい。
【００２５】
符号化方法としてエントロピ符号化方法を用いることは、情報圧縮率が一定の符号化方法に比べて、高圧縮率が達成できることがある点で、有利である。一方でエントロピ符号化方法は、場合によっては、情報圧縮率が一定の符号化方法に比べて、圧縮率が劣ることもある。しかしその場合も、音声スペクトルのうち、上述のように大きなエネルギーを有する帯域の再量子化成分を優先してエントロピ符号化すれば、復号したときに該音声スペクトルの概形は復元し得ることが期待される。よって、総合的にみると、上述のような、音声スペクトルの重要部分を特定した上で符号化方法としてエントロピ符号化方法を採用することには、利点がある。
【００２６】
前記重要度決定手段は、前記和に、前記エントロピ符号化用帯域の中心周波数が低いほど大きな数を乗じた値を該エントロピ符号化用帯域の重要度としてもよい。
【００２７】
上述のように、人間の聴覚は、低周波音に対して敏感である。よって、前記重要度を決定する際に、スペクトルのエネルギーそのままの値よりも、音声スペクトルの低周波側ほど重み付けをした値を用いる方が、聴覚特性からすれば適切な優先順位付けができるとも考えられる。
【００２８】
前記離散スペクトル変換手段は、例えば、ＭＤＣＴ（Modified Discrete Cosine Transform）を用いる。
【００２９】
上記目的を達成するために、この発明の第２の観点に係る音声復号装置は、
音声信号の量子化スペクトルを、聴覚特性にあわせた第１の帯域分割方法により生成された帯域別に、２の累乗である除数で除した結果、生成される第１の変形スペクトルデータを、さらに第２の帯域分割方法により生成された帯域別に、聴覚特性に合わせた精度で再量子化した結果生成される第２の変形スペクトルデータと、前記除数と、が所定の符号化方法により符号化されたデータを受信する受信手段と、
前記符号化されたデータから、前記所定の符号化方法に対応する復号方法により、前記第２の変形スペクトルデータと、前記除数と、を復号する復号手段と、
復号された前記第２の変形スペクトルデータから、前記第１の変形スペクトルデータを復元する逆再量子化手段と、
復元された前記第１の変形スペクトルデータをビットシフトして、復号された前記除数を乗じることにより、前記量子化スペクトルを復元する乗算ビットシフト手段と、
復元された前記量子化スペクトルから前記音声信号を復元する離散スペクトル逆変換手段と、
を備える。
【００３０】
上記目的を達成するために、この発明の第３の観点に係る音声符号化方法は、
デジタル音声信号について、所定帯域幅を有する小区画帯域毎の量子化成分の値を求める離散スペクトル変換ステップと、
聴覚特性に合わせて予め設定された所定の数の連続する前記小区画帯域から構成される各中区画帯域であって且つその中区画帯域に属する各量子化成分の値を表すために聴覚特性に合わせて予め設定された所定のビット数が割り当てられている各中区画帯域について、その中区画帯域に属する量子化成分の値のうちの最大値を検索する最大値検索ステップと、
前記各中区画帯域について、前記最大値検索ステップで検索された最大値を表すための必要ビット数が、その中区画帯域に割り当てられた前記所定のビット数を超えるか否かを判別する判別ステップと、
前記判別ステップにより前記中区画帯域において前記必要ビット数が前記所定のビット数を超えると判別された場合に、前記最大値に除算を施して前記所定のビット数で表し得る値を超えないようにするための除数であり且つ２の累乗のうち最小の数である除数を求め、該中区画帯域に属する前記量子化成分の各値を該除数で除算し、前記判別ステップにより前記中区画帯域において前記必要ビット数が前記所定のビット数を超えないと判別された場合に、該中区画帯域に属する前記量子化成分の各値を維持する除算ステップと、
聴覚特性に合わせて予め設定された所定の数の連続する前記中区画帯域から構成される大区画帯域に属する前記除算ステップで処理済の量子化成分の値を、聴覚特性に合わせて予め該大区画帯域に割り当てられた精度にて量子化し直して再量子化済成分に変換する再量子化ステップと、
前記除数と前記再量子化済成分とを符号化して出力する符号化ステップと、
から構成される。
【００３１】
上記目的を達成するために、この発明の第４の観点に係る音声復号方法は、
音声信号の量子化スペクトルを、聴覚特性にあわせた第１の帯域分割方法により生成された帯域別に、２の累乗である除数で除した結果生成される第１の変形スペクトルデータを、さらに第２の帯域分割方法により生成された帯域別に、聴覚特性に合わせた精度で再量子化した結果、生成される第２の変形スペクトルデータと、前記除数と、が所定の符号化方法により符号化されたデータを受信する受信ステップと、
前記符号化されたデータから、前記所定の符号化方法に対応する復号方法により、前記第２の変形スペクトルデータと、前記除数と、を復号する復号ステップと、
復号された前記第２の変形スペクトルデータから、前記第１の変形スペクトルデータを復元する逆再量子化ステップと、
復元された前記第１の変形スペクトルデータをビットシフトして、復号された前記除数を乗じることにより、前記量子化スペクトルを復元する乗算ビットシフトステップと、
復元された前記量子化スペクトルから前記音声信号を復元する離散スペクトル逆変換ステップと、
から構成される。
【００３２】
上記目的を達成するために、この発明の第５の観点に係るコンピュータプログラムは、
コンピュータに、
デジタル音声信号について、所定帯域幅を有する小区画帯域毎の量子化成分の値を求める離散スペクトル変換ステップと、
聴覚特性に合わせて予め設定された所定の数の連続する前記小区画帯域から構成される各中区画帯域であって且つその中区画帯域に属する各量子化成分の値を表すために聴覚特性に合わせて予め設定された所定のビット数が割り当てられている各中区画帯域について、その中区画帯域に属する量子化成分の値のうちの最大値を検索する最大値検索ステップと、
前記各中区画帯域について、前記最大値検索ステップで検索された最大値を表すための必要ビット数が、その中区画帯域に割り当てられた前記所定のビット数を超えるか否かを判別する判別ステップと、
前記判別ステップにより前記中区画帯域において前記必要ビット数が前記所定のビット数を超えると判別された場合に、前記最大値に除算を施して前記所定のビット数で表し得る値を超えないようにするための除数であり且つ２の累乗のうち最小の数である除数を求め、該中区画帯域に属する前記量子化成分の各値を該除数で除算し、前記判別ステップにより前記中区画帯域において前記必要ビット数が前記所定のビット数を超えないと判別された場合に、該中区画帯域に属する前記量子化成分の各値を維持する除算ステップと、
聴覚特性に合わせて予め設定された所定の数の連続する前記中区画帯域から構成される大区画帯域に属する前記除算ステップで処理済の量子化成分の値を、聴覚特性に合わせて予め該大区画帯域に割り当てられた精度にて量子化し直して再量子化済成分に変換する再量子化ステップと、
前記除数と前記再量子化済成分とを符号化して出力する符号化ステップと、
を実行させる。
【００３３】
上記目的を達成するために、この発明の第６の観点に係るコンピュータプログラムは、
コンピュータに、
音声信号の量子化スペクトルを、聴覚特性にあわせた第１の帯域分割方法により生成された帯域別に、２の累乗である除数で除した結果、生成される第１の変形スペクトルデータを、さらに第２の帯域分割方法により生成された帯域別に、聴覚特性に合わせた精度で再量子化した結果生成される第２の変形スペクトルデータと、前記除数と、が所定の符号化方法により符号化されたデータを受信する受信ステップと、
前記符号化されたデータから、前記所定の符号化方法に対応する復号方法により、前記第２の変形スペクトルデータと、前記除数と、を復号する復号ステップと、
復号された前記第２の変形スペクトルデータから、前記第１の変形スペクトルデータを復元する逆再量子化ステップと、
復元された前記第１の変形スペクトルデータをビットシフトして、復号された前記除数を乗じることにより、前記量子化スペクトルを復元する乗算ビットシフトステップと、
復元された前記量子化スペクトルから前記音声信号を復元する離散スペクトル逆変換ステップと、
を実行させる。
【発明の効果】
【００３４】
本発明によれば、聴覚特性が考慮された上で音声信号が階層的な複数種類の帯域毎に処理される。よって、高音質を確保しつつも、音声信号を高速かつ軽快に符号化及び復号することが可能となる。
【発明を実施するための最良の形態】
【００３５】
以下、本発明の実施の形態に係る音声符号化装置及び音声復号装置について詳細に説明する。
【００３６】
なお、ユーザにとっての利便性を確保する観点から、音声符号化装置と音声復号装置とは、単一の装置に統合されているものとする。
【００３７】
（実施形態１）
図１に、本実施形態に係る音声符号化兼復号装置９１１１を示す。該装置としては、例えば、携帯電話機が想定される。
【００３８】
音声符号化兼復号装置９１１１は、ＣＰＵ９１２１と、ＲＯＭ（Read Only Memory）９１２３と、記憶部９１２５と、音声処理部９１４１と、無線通信部９１６１と、操作キー入力内容処理部９１７１と、を備え、これらは、システムバス９１８１で相互に接続されている。システムバス９１８１は、命令やデータを転送するための伝送経路である。
【００３９】
ＲＯＭ９１２３には、音声符号化及び復号のための動作プログラムが格納されている。
【００４０】
記憶部９１２５は、ＲＡＭ（Random Access Memory）９１３１と、ハードディスク９１３３と、から構成されて、デジタル音声信号、ＭＤＣＴ係数、シフトビット数、符号、及び、後述の小区画・中区画・大区画毎の特徴量、等を記憶する。
【００４１】
音声符号化兼復号装置９１１１は、マイクロフォン９１５１と、スピーカ９１５３と、アンテナ９１６３と、操作キー９１７３と、をさらに備える。
【００４２】
マイクロフォン９１５１は、送信側及び符号化側のユーザの音声を収集し、音声処理部９１４１に引き渡す。スピーカ９１５３は、音声処理部９１４１から引き渡された復元音声を、受信側及び復号側のユーザに対して、発する。アンテナ９１６３は、無線通信部９１６１から無線信号として引き渡された符号を受信側及び復号側の装置９１１１に送信したり、符号化及び送信側の装置９１１１から送信された無線信号を受信して無線通信部９１６１に引き渡したりする。操作キー９１７３は、あらかじめ与えられている初期設定値、例えば、信号処理のための各種帯域の境界周波数を、ユーザ自らの判断で変更するときや、符号化側及び送信側のユーザが、通話の相手方である受信側及び復号側の装置９１１１を特定したりするときに、ユーザの意図を装置９１１１に伝達するために用いられる。
【００４３】
音声処理部９１４１、無線通信部９１６１、操作キー入力内容処理部９１７１は、システムバス９１８１を介してＣＰＵ９１２１の制御下にある。
【００４４】
マイクロフォン９１５１に入力された音声は、音声処理部９１４１の内部のＡ／Ｄコンバータ（図示せず）による、例えば１６ＫＨｚサンプリング及び１６ビット量子化により、デジタル音声信号に変換される。
【００４５】
かかるデジタル信号は、音声処理部９１４１により、圧縮の処理単位であるフレームに時分割されつつ、順次記憶部９１２５に送られる。
【００４６】
後述のとおり、ひとつのフレームの信号はひとまとまりのものとして、記憶部９１２５への格納、ＣＰＵ９１２１による周波数領域への変換、無線通信部９１６１への伝達、アンテナ９１６３による無線送信、といった過程を経る。
【００４７】
例えば、記憶部９１２５に存在するあるフレームの信号が、ＣＰＵ９１２１による処理を施されて無線通信部９１６１へ伝達され終わったとする。すると、記憶部９１２５からは、該フレームの信号に関わるデータは記憶部９１２５から削除される。そして、記憶部９１２５には、音声処理部９１４１から次のフレームの信号が引き渡される。
【００４８】
このように、音声信号が入力され続ける限り、空きプロセスが生じることなく、次から次へとフレーム単位での信号処理が進行する。
【００４９】
このような鎖状の処理方法を採ることにより、携帯電話として必要な、音声信号のリアルタイム処理が可能になる。
【００５０】
以下では、理解を容易にするために、音声が１フレームぶんの時間に渡ってのみ、マイクロフォン９１５１に入力されたと仮定して、説明する。
【００５１】
１フレームがM個の信号値から構成されるとして、マイクロフォン９１５１に入力された音声信号が、音声処理部９１４１によってデジタル信号x0、・・・、xM-1に変換され記憶部９１２５に引き渡されたとする。装置９１１１内部の各構成要素間のデータ移動は、ＣＰＵ９１２１の指示に従ってシステムバス９１８１を用いて行われる。ＣＰＵ９１２１の指示は、ＲＯＭ９１２３に格納された動作プログラムに従って発せられる。
【００５２】
記憶部９１２５に格納された信号x0、・・・、xM-1は、ＣＰＵ９１２１の汎用レジスタ（図示せず。）のひとつにロードされる。実時間領域の信号である信号x0、・・・、xM-1は、ＣＰＵ９１２１により周波数領域の信号X0、・・・、XM/2-1に変換され、汎用レジスタに格納される。変換方法は、実時間領域の信号を周波数領域の信号へと変換するものであれば任意の方法であってよいが、変換後の数値に虚部が生じないため扱いが容易となることから、ＭＤＣＴ（Modified Discrete Cosine Transform）を採用するのが好適である。
【００５３】
なお、実時間領域のM個の信号値が、上述のように周波数領域ではM/2個の周波数係数値に対応するのは、周波数変換にMDCTを用いたからである。他の周波数変換方法の場合、実時間領域におけるデータ数と周波数領域におけるデータ数とが、2：1の比になるとは限らないが、その場合は、周波数係数の最終値に付された数字を適宜読み替えれば、以下の説明はそのままあてはまる。
【００５４】
図２（ａ）は、こうして生成されたＭＤＣＴ係数を模式的に表したものである。図２（ｂ）は、その一部を拡大したものである。ＭＤＣＴは離散的周波数変換の一種であるから、周波数軸を区切ることによって生じるM/2個の小区画帯域毎に、ひとつの信号値が割り当てられることになる。図に示すように、低周波数側から数えてk+1番目の小区画帯域には番号kが与えられ、信号値Xkが割り当てられる（ただし、0≦k≦M/2-1である。）。この信号値XkはＭＤＣＴ係数と呼ばれる。
【００５５】
有限の時間長を有する時間区画１つにつき１回のＭＤＣＴを行うわけであるが、かかる時間区画をＭＤＣＴブロックと呼ぶ。また、ＭＤＣＴブロックひとつに含まれる信号値の数をＭＤＣＴの次数という。ＭＤＣＴの次数としては、例えば５１２が好適である。
【００５６】
フレームは音声圧縮の処理単位であるから、ＭＤＣＴブロックの時間長は１個のフレームの時間長を超えてはならない。一方、１個のフレームは複数のＭＤＣＴを含んでもよく、例えば、１個のフレームが３乃至４個のＭＤＣＴブロックを含むのが好適である。
【００５７】
ただし、ここでは、発明の本質のみを抽出して理解を容易にするために、フレーム１個がＭＤＣＴブロック１個と１対１の対応をしているとする。つまり、１個のフレームがそのまま１個のＭＤＣＴブロックに対応しているとする。すると、図２以降のＭＤＣＴ係数の模式図においては、フレーム１個にM個の実時間信号値が含まれていることから、ＭＤＣＴブロックの次数はMであることになる。
【００５８】
なお、図２以降では、ＭＤＣＴ係数は全て正の値をとるかのように描かれているが、これは理解を容易にするためにすぎない。実際のＭＤＣＴ係数は負の値をとることもある。上述のように、図２以降のＭＤＣＴ係数に関する図は、あくまでも説明のための模式図である。
【００５９】
ＣＰＵ９１２１は、汎用レジスタに格納されているＭＤＣＴ係数Xk（0≦k≦M/2-1）について、後の処理を円滑に行うために、各ＭＤＣＴ係数を識別するための記号を付け替える。該付け替えは、ＣＰＵ９１２１が、ＲＯＭ９１２３から読み出した動作プログラムに従って行う。具体的には、次のように、各ＭＤＣＴ係数を２個の記号で識別し直す。
【００６０】
まず、図２（ｃ）に示すように、周波数領域全体を、ωMaxRANGE個の中区画帯域に分割し、低周波数側から1、2、・・・、ωMaxRANGEのように番号を付けて各帯域を区別する。
【００６１】
ＭＤＣＴ係数の識別のための新たな記号のひとつは、この番号である。
【００６２】
各中区画帯域の中心周波数の対数が、該番号に線型的に依存するように、中区画帯域による周波数領域の分割が行われる。換言すると、ＣＰＵ９１２１がＲＯＭ９１２３から読み出す動作プログラムには、かかる分割が行われるような命令が含まれている。かかる分割によれば、高周波領域の中区画帯域ほど、帯域幅が広くなる。図２（ｃ）にはその様子が模式的に示されている。
【００６３】
このように対数を基準に分割を行う理由は、人間の聴覚における周波数の違いに対する感度が、高周波成分ほど対数的に鈍くなるためである。そこで、限られた通信容量でできる限り有効な音声信号伝達を行うためには、低周波成分については、再生音質の確保のために詳しく再現し得るようにする一方で、高周波成分については、おおまかな情報だけ伝達することにして、情報量が全体として少なくなるようにするのが適切である。
【００６４】
例えば、マイクロフォン９１５１に入力された音声が音声処理部９１４１においてサンプリング周波数16ｋＨｚでデジタル信号に変換された場合には、ＲＯＭ９１２３に格納されている動作プログラムにおいて、中区画帯域を11個設けることとし、中区画帯域の境界を187.5Ｈｚ、437.5Ｈｚ、687.5Ｈｚ、937.5Ｈｚ、1312.5Ｈｚ、1687.5Ｈｚ、2312.5Ｈｚ、3250Ｈｚ、4625Ｈｚ、6500Ｈｚ、のように設定しておくのが好適である。
【００６５】
次に、各ＭＤＣＴ係数が、その属する中区画帯域のうち低周波側から数えて何番目のものであるか、が決定される。ωRANGE（1≦ωRANGE≦ωMaxRANGE）という番号が付された中区画帯域にはq(ωRANGE)個のＭＤＣＴ係数が含まれるとする。
【００６６】
すると、全てのＭＤＣＴ係数は、どの中区画帯域に属するかということと、中区画帯域の中で低周波数側から数えて何番目の係数であるかということと、を表す２つの記号により、区別することができる。すなわち、これまで図２（ｂ）に示すように全周波数に渡って1乃至M/2-1という番号で区別されていたＭＤＣＴ係数は、新たに、ωRANGE番目の中区画帯域（1≦ωRANGE≦ωMaxRANGE)に属する、X(ωRANGE、1)、・・・、X(ωRANGE、ｑ(ωRANGE))、という形で記述されることにより、相互に区別されることになる。この様子は、図２（ｃ）の一部を拡大した図２（ｄ）により、示される。
【００６７】
ＣＰＵ９１２１は、こうして識別し直されたＭＤＣＴ係数X(ωRANGE、1)、・・・、X(ωRANGE、ｑ(ωRANGE))（1≦ωRANGE≦ωMaxRANGE）を、記憶部９１２５に格納する。
【００６８】
続いて、各中区画帯域におけるＭＤＣＴ係数の最大値の検索、情報量削減のためのシフトビット数の決定、及び、該シフトビット数だけビットシフトされた後のＭＤＣＴ係数の計算、が行われる。この様子を、図３に示すフローチャートにより示す。さらに、理解を容易にするために、図４に、一例を模式的に示す。以下では図３及び図４を参照しつつ説明する。
【００６９】
ＣＰＵ９１２１は、内蔵のカウンタ用レジスタ（図示せず。）を、中区画帯域の識別のための変数であるωRANGEを格納するために用いる。
【００７０】
ωRANGEの初期値は1とする（図３のステップＳ９３１１）。後にωRANGEの値は1ずつインクリメントされ（ステップＳ９３３３）、繰り返し処理が行われる。その結果、低域から高域の順に、全周波数領域に渡る処理が行われる。
【００７１】
上述のとおり、記憶部９１２５には、中区画帯域における処理のために識別し直されたＭＤＣＴ係数が既に格納されている。そこで、ＣＰＵ９１２１は、記憶部９１２５から、かかるＭＤＣＴ係数X(ωRANGE、1)、・・・、X(ωRANGE、ｑ(ωRANGE))を、汎用レジスタにロードする（ステップＳ９３１３）。
【００７２】
次に、ＣＰＵ９１２１は、ロードしたＭＤＣＴ係数のうち、最大のものを検索する（ステップＳ９３１５）。すなわち、低周波側から数えてωRANGE番目の中区画帯域における、ＭＤＣＴ係数の最大値を求める。該最大値をXMAX(ωRANGE)と表記することにする。
【００７３】
例えば図４（ａ）のようにＭＤＣＴ係数が並び、７つの中区画帯域に分割されている場合、XMAX(1)〜XMAX(7)は、横方向の点線で示される値である。
【００７４】
ＲＯＭ９１２３に格納されている、ＣＰＵ９１２１を動作させるためのプログラムには、中区画帯域毎に、該中区画帯域に含まれるＭＤＣＴ係数を表現するために使用し得るビット数があらかじめ設定されている。番号ωRANGEで識別される中区画帯域に設定されたビット数をGivenBit(ωRANGE)とする。
【００７５】
GivenBit(ωRANGE)は、ωRANGEが大きいほど小さい値に設定しておく。これは、人間の聴覚における音声の大きさに対する感度が、音声が高周波であるほど鈍くなる、という事実を考慮したためである。つまり、できるだけ音質を低下させずに音声信号の情報量を圧縮するためには、聴覚が音量差に敏感な低周波領域については多くのビット数を与えて精密な近似を行う一方、鈍感な高周波領域については少ないビット数を与えて粗い近似を行うのが有効だからである。
【００７６】
例えば、図４（ｂ）の太い横線で示すように、高周波側である5番目〜7番目の中区画帯域については、低周波側である1番目〜4番目の中区画帯域について割り当てられたビット数よりも、ひとつ少ないビット数を割り当てるように、設定される。
【００７７】
なお、1ビット少なく割り当てられたということは、表現し得る数値が1/2になったということである。このことは、図４（ｂ）の場合であれば、２つの中抜き矢印が示す長さが等しいことに対応する。装置９１１１はある種の電子計算機であるから、その内部では、数値は全て2進数で表現される。よって、ビット数が1個、2個、・・・、に増加すれば、表現し得る数値は、２の1乗倍、2の2乗倍、・・・、のように増加する。
【００７８】
ＣＰＵ９１２１は、ωRANGEが格納されているカウンタ用レジスタとは別のカウンタ用レジスタに、一時記憶用の変数TmpBitを格納することとし、初期値として、TmpBit＝GivenBit(ωRANGE)とする（図３のステップＳ９３１７）。
【００７９】
かかる変数TmpBitを用意するのは、次の理由による。すなわち、番号ωRANGEの中区画帯域におけるＭＤＣＴ係数の最大値XMAX(ωRANGE)が、該中区画帯域についてあらかじめ設定されているビット数であるGivenBit（ωRANGE)で表現し得るか否かを判別し、表現し得ない場合には、どれだけのビット数があれば表現し得るかを、決定するためである。
【００８０】
具体的には、XMAX(ωRANGE)が、２TmpBitよりも大きいか否かを判別する（ステップＳ９３１９）。２の乗数を用いるのは、２進数どうしの比較を行うからである。
【００８１】
なお、厳密には、ＭＤＣＴ係数の正負を表すためのビット数が1個必要となる。しかし、このことは、発明の本質には関係がないので、ここでは、理解を容易にするために、上述したように、ＭＤＣＴ係数が負になることはないと仮定する。
【００８２】
XMAX(ωRANGE)が、２TmpBitよりも大きいのであれば（ステップＳ９３１９；Ｙｅｓ）、XMAX(ωRANGE)はTmpBit個のビットでは表せないといえる。そこで、TmpBitを1増加し（ステップS９３２１）、かかるTmpBit個のビットであればどうなるか、比較（ステップS９３１９）をやり直す。
【００８３】
XMAX(ωRANGE)がTmpBit個のビットで表すことができるようになる（ステップS９３１９；Ｎｏ）まで、TmpBitの1ずつの増加（ステップS９３２１）が繰り返される。
【００８４】
XMAX(ωRANGE)が２TmpBit以下になったら（ステップS９３１９；Ｎｏ）、ＣＰＵ９１２１は、TmpBitからGivenBit(ωRANGE)を減算することにより、ShiftBit(ωRANGE)を求める（ステップＳ９３２３）。ShiftBit(ωRANGE)は、ωRANGE番目の中区画帯域の全てのＭＤＣＴ係数をどの程度縮小すれば、与えられたビット数であるGivenBit(ωRANGE)で表現し得る数値に収まるか、ということを意味する。つまり縮小のために必要なシフトビット数がShiftBit(ωRANGE)である。
【００８５】
例えば図４（ｂ）の場合、ωRANGE＝1〜4のときと、ωRANGE＝７のときには、太い横線が点線の横線よりも上側にある。これは、かかる中区画帯域においては、ＭＤＣＴ係数がGivenBit(ωRANGE)個のビットにより表し得ることを意味する。よって、かかる中区画帯域においては、図３のステップＳ９３２１を経ることなくステップＳ９３２３に至る。TmpBitの値は、ステップＳ９３１７で与えた初期値であるGivenBit(ωRANGE)のままであるから、ステップＳ９３２３においては、ShiftBit(ωRANGE)＝0となる。すなわち、ＭＤＣＴ係数の縮小の必要はない。
【００８６】
一方、図４（ｂ）の、ωRANGEが５及び６のときは、点線の横線が太い横線を越えている。よって、図３のステップＳ９３１９における1回目の比較の結果は、Ｙｅｓになり、ステップＳ９３２１に進む。図４（ｂ）の場合、ωRANGE＝5とωRANGE＝6のいずれの中区画帯域においても、点線の横線は、太い横線をわずかに超えているに過ぎない。よって、図３のステップＳ９３２１において、TmpBitを1増加して表現し得る数値を2倍にすれば、これらの帯域における全てのＭＤＣＴ係数は全て表現可能になる。よって、2度目の判別（ステップＳ９３１９）の結果はＮｏとなり、ステップＳ９３２３に進む。該ステップでは、TmpBitが初期値より1だけ増加していることから、ShiftBit(ωRANGE)＝1となる。
【００８７】
ＣＰＵ９１２１は、このようにして得られたShiftBit(ωRANGE)をすぐ次のステップにおいて使用するために汎用レジスタに保持しておくとともに、記憶部９１２５に格納する（ステップＳ９３２５）。記憶部９１２５に格納する理由は、中区画帯域毎にShiftBit(ωRANGE)がいかなる値であるかという情報は、復号装置における音声復元に必要となるため、後に符号化して送信しなければならないからである。
【００８８】
ＣＰＵ９１２１は、ステップＳ９３１３においてロードしたＭＤＣＴ係数X(ωRANGE、1)、・・・、X(ωRANGE、ｑ(ωRANGE))と、ステップＳ９３２３で求めたシフトビット数ShiftBit(ωRANGE)と、から、ビットシフト済ＭＤＣＴ係数
XBS(ωRANGE、1)
＝X(ωRANGE、1)
÷｛2＾ShiftBit(ωRANGE)｝、
・・・、
XBS(ωRANGE、ｑ(ωRANGE))
＝X(ωRANGE、ｑ(ωRANGE))
÷｛2＾ShiftBit(ωRANGE)｝
を求める（ステップＳ９３２７）。ただし、記号＾は、累乗を表す。ビットシフト済ＭＤＣＴ係数とは、あらかじめ設定され与えられたビットであるGivenBit(ωRANGE)個のビットで表現し得る範囲内に収まるよう調整されたＭＤＣＴ係数であるといえる。
【００８９】
例えば、図４の（ｂ）及び（ｃ）に示すように、与えられたビット数にはじめから収まっている1番〜4番及び7番の中区画帯域におけるＭＤＣＴ係数については、かかる中区画帯域におけるシフトビット数ShiftBit(ωRANGE)が0であることから、2の0乗による除算によりビットシフト済ＭＤＣＴ係数が求まる。もっとも、2の0乗は1であるから、実質的には、ＭＤＣＴ係数の値をそのままビットシフト済ＭＤＣＴ係数としてよい。
【００９０】
一方、5番と6番の中区画帯域では、上述のように、与えられたビット数の範囲内に収めるために必要なビットシフト数ShiftBit(ωRANGE)が１であるから、かかる中区画帯域におけるＭＤＣＴ係数を2の1乗すなわち2で除して、ビットシフト済ＭＤＣＴ係数を計算する。図４（ｃ）の２つの中抜き矢印で示すとおり、ＭＤＣＴ係数を2で除した結果、ビットシフト後にＭＤＣＴ係数は半分の値になる。
【００９１】
こうして、図４（ｂ）では、与えられたビット数ではＭＤＣＴ係数を表現できない帯域があったのに対し、図４（ｃ）では、少なくとも見かけ上は、ＭＤＣＴ係数が、全ての周波数領域に渡って、与えられたビット数で表現できる範囲に収まる。つまり図４（ｂ）では、点線の横線が一部の帯域で太い横線を越えていたのに対して、図４（ｃ）では、全ての周波数領域に渡って、点線の横線は太い横線よりも下側に収まっている。
【００９２】
ところで、図３のステップＳ９３２７においては、除算が行われる。ただし、この除算は、2の累乗による除算であるため、ＣＰＵ９１２１は実際には、２進数についての右シフト演算を行うだけで済む。
【００９３】
ある数値を、与えられたビット数で表現できるよう除算により減少させるためだけであれば、除数は任意の数値であってもよい。しかし、本実施形態においては、除数を２の累乗に限定している。これにより、除算に必要なビット操作が右シフト演算に限られる。このことは、演算の高速化、あるいは、ＣＰＵの処理負担の軽減に資する。その結果、音声符号化兼復号装置９１１１の全体としての動作のパフォーマンスが向上する。
【００９４】
ＣＰＵ９１２１は、求めたビットシフト済ＭＤＣＴ係数XBS(ωRANGE、1)、・・・、XBS(ωRANGE、ｑ(ωRANGE))を、記憶部９１２５に格納する（ステップＳ９３２９）。
【００９５】
全ての帯域についての処理が終わったか否かを判別し（ステップＳ９３３１）、終わったのであれば（ステップＳ９３３１；Ｙｅｓ）、終了する。まだ終わっていないのであれば（ステップＳ９３３１；Ｎｏ）、次の帯域について処理するためにωRANGEを1インクリメントしてから（ステップＳ９３３３）、ステップＳ９３１３に戻る。
【００９６】
ここまでの処理においては、一部又は全部の中区画帯域についての右ビットシフト演算が含まれているものの、基本的には、音声の大きさを、空気中を伝播する音波の振幅の大きさに比例する量であるとして、扱っていた。これは、マイクロフォン９１５１が、空気中の波動としての音を忠実に捉える装置であることに起因する。
【００９７】
しかし、人間の聴覚は、程度の差はあれ、どの周波数の音声についても、音としての大きさに対しては、対数的な感度を有する。すなわち、人間の聴覚は、小さな音どうしのわずかな音量の違いには敏感である一方、大きな音どうしの音量の違いには鈍感である。
【００９８】
人間の聴覚のかかる特性と、本実施形態に係る装置９１１１における音声情報の圧縮という要請と、に鑑みれば、マイクロフォン９１５１が音波のエネルギーに対して線型的な感度を有しているからといって、小さな音も大きな音も一律の細かさで量子化したままにしておくのは、非効率的である。
【００９９】
そこで、音声符号化兼復号装置９１１１は、音声信号を符号化する前に、音声信号に対して対数的な量子化を施す。つまり、小さい値ほど細かく、大きな値ほど粗く量子化する。
【０１００】
なお、音声処理部９１４１におけるＡ／Ｄ変換の際に、音声信号はいったん量子化されている。かかる量子化と区別するために、ここで説明する量子化のことを、再量子化と呼ぶことにする。
【０１０１】
以下では、再量子化の手順について、図５の模式図を参照して説明する。
【０１０２】
図５（ａ）は、図３のステップＳ９３２９において記憶部９１２５に格納された、図４（ｃ）に示されたビットシフト済ＭＤＣＴ係数について、その対数をとったものであるとする。
【０１０３】
対数をとったり、後述の再量子化をしたりする処理は、ＣＰＵ９１２５が、ＲＯＭ９１２３に格納された動作プログラムに従って、内蔵のレジスタと記憶部９１２５の間でのデータの授受を行ったり、レジスタに格納された値に対して適宜必要な演算を施したりすることによって、進められるものとする。
【０１０４】
前述のように、人間の聴覚は、小さい音の音量のわずかな違いに敏感である一方、大きな音の音量の違いには鈍感である。これは、確かに、あらゆる周波数領域についていえることである。よって、図５（ａ）のように、対数をとる意義がある。しかし、帯域によって、上述の敏感・鈍感の程度には、差がある。すなわち、同程度の大きさを有する２つの音の違いに対して、人間の聴覚は、高周波の音ほど、感度が鈍い。このことから、人間にとっての音質をできるだけ損なわずに音声信号の情報量を減少させるためには、低周波数領域における再量子化は細かく行う一方、高周波数量域における再量子化は相対的に粗く行うことが適切である。その際、ある程度の幅を有する複数の帯域への分割を行って、個々の帯域内では再量子化の精度を統一することが、情報量の減少のためには望ましい。再量子化の精度をあまりに小刻みの周波数毎に変化させることは煩雑であり、情報量の増加につながるから、避けるべきである。
【０１０５】
さらに、上述の、２つの音の違いに対する感度の周波数依存性は、高周波になるほど、対数的に鈍くなることが知られている。換言すれば、２つの音の違いに対する感度を縦軸に、周波数の対数を横軸にとってグラフを作成すると、周波数が高いほど、感度が線型的に低下する。
【０１０６】
このことから、再量子化の精度を変化させる区切りとなる周波数は、周波数軸上で対数的に分布することが望ましい。
【０１０７】
ところで、既に、中区画帯域の境界は、周波数軸上で対数的に分布している。そこで、中区画帯域を、そのまま再量子化のための帯域としても利用することも考えられる。
【０１０８】
以降のエントロピ符号化の圧縮効率向上のためには、再量子化結果の値に偏りが生じる方が好ましい。
【０１０９】
そこで、再量子化の精度変化のための帯域としては、中区画帯域と同様に対数的な周波数分割を採用しつつ、中区画帯域よりも大まかに分割したものを用いるのが適切である。そこで、以下では、再量子化の精度を変えるために設定される帯域のことを、大区画帯域と呼ぶことにする。単数又は連続する複数の中区画帯域を、ひとつの大区画帯域とするのが簡便である。
【０１１０】
大区画帯域としては、例えば、全周波数領域を５つ程度に分けることも考えられる。
【０１１１】
しかし、大区画領域を３つしか設けない場合でも、それより多数の大区画領域を設けた場合に比べて、人間の聴覚にとっての音質は、ほとんど変化しない。よって、本実施形態では、低域大区画、中域大区画、高域大区画、という３つの大区画帯域を設けることとする。
【０１１２】
大区画帯域が３つしかないため、大区画帯域の境界はたったの２つになってしまう。よって、上述のように周波数軸上に対数的に区切りを設ける方針を尊重しつつ、次のように、かかる２つの境界周波数を決定することにする。すなわち、周波数の上限値の半分の周波数を、中域大区画と高域大区画との境界とする。つまり、全周波数領域は、低域大区画と中域大区画とを合わせた部分と、高域大区画の部分とで、半分ずつに分割されることになる。なお、当然のことながら、解析的には、周波数に上限値はない。ここでいう上限値とは、音声処理部９１４１において採用されるサンプリング周波数に基づいて決定される有限の値、例えば、ナイキスト周波数である。
【０１１３】
低域大区画については、低域側から数えて1番目の中区画帯域だけで構成するか、又は、1番目と2番目、あるいはせいぜい1〜3番目の中区画帯域により構成する。これにより、低域大区画と中域大区画の境界も決定され、３つの大区画領域それぞれの端点が決定される。
【０１１４】
低域大区画を1個〜3個という少ない個数の中区画帯域により構成することにしたのは、音声信号の特徴は低域部に顕著に現れるため、低域部を精密に再量子化することが有意義である一方、かかる精密な再量子化を要する帯域をあまりに広くしてしまうと、音声信号の情報量を減少させるという要請に反するからである。
【０１１５】
以上の大区画帯域による分割の方法及び再量子化を、図５を例に説明する。図５（ａ）の場合、周波数領域は、番号1〜番号7の、合計7個の中区画帯域に分割されている。
【０１１６】
まず、中域大区画と高域大区画の境界は、上述したように、周波数領域を半分に分けるという観点から決定される。また、これも上述したように、単数又は連続する複数の中区画帯域を大区画帯域とすること、すなわち、ひとつの中区画帯域が複数の大区画帯域に属することがないようにすることも必要である。これらのことから、5番目の中区画帯域と6番目の中区画帯域との境界を、中域大区画と高域大区画の境界とすることが妥当である。こうして、高域大区画は、6番目及び7番目の中区画帯域から構成されることになる。
【０１１７】
次に、低域大区画と中域大区画の境界は、上述したように、番号1の中区画帯域と番号2の中区画帯域の境界か、番号2の中区画帯域と番号3の中区画帯域の境界か、番号3の中区画帯域と番号4の中区画帯域の境界か、のいずれかになる。このうち、番号3と番号4の中区画帯域の境界を採用すると、低域大区画の幅と中域大区画の幅とが同程度となってしまい、低周波数領域の成分を重点的に精度よく再量子化するという趣旨にそぐわない。よって、番号1と番号2の境界か、番号2と番号3の境界のいずれかが妥当である。いずれであってもよいが、ここでは、前者を採用することにする。こうして、低域大区画は1番目の中区画帯域のみから構成され、中域大区画は2番目〜5番目の中区画帯域から構成されることになる。
【０１１８】
再量子化の精度は、具体的には、各大区画帯域に与えられるビット数で決定される。例えば、中域大区画の再量子化の精度は、高域大区画の再量子化の精度よりも1ビットに相当するぶんだけ高く、低域大区画の再量子化の精度は、中域大区画の再量子化の精度よりもさらに1ビットに相当するぶんだけ高いとする。かかる場合、再量子化のための目盛線は、図５（ｂ）において点線の横線で示すものになる。精度を1ビットぶん高くするということは、同じ量を2倍の値で表現するということであるから、精度が2倍になったことに相当する。図５（ｂ）においても、このことが示されている。すなわち、中域大区画の目盛線は、高域大区画の目盛線より2倍密になっており、低域大区画の目盛線は、中域大区画の目盛線よりもさらに2倍密になっている。
【０１１９】
再量子化も含め、量子化とは、量子化の対象となる量を、所定の離散値に近似することである。ここでは、対数表示されているビットシフト済ＭＤＣＴ係数を、例えば切り捨てにより、目盛線のいずれかに合わせることが行われる。この様子を示したのが図５（ｃ）である。高域大区画においては、目盛の間隔が広い、すなわち、再量子化の精度が粗いため、図５（ｂ）に現れていた細かな変化は、図５（ｃ）においては、かなり平坦化されている。一方、低域大区画と中域大区画においては、再量子化の精度が比較的高いので、図５（ｂ）に現れていた変化が、図５（ｃ）に示す再量子化後もかなり保存されている。
【０１２０】
これらの帯域分割方法や再量子化のビット数は、ＣＰＵ９１２１がＲＯＭ９１２３から読み出す動作プログラムの中に記述されている。図５に対応してＣＰＵ９１２１が行う動作は、記憶部９１２５に格納されているビットシフト済ＭＤＣＴ係数を取り出し、その対数をとり、所定の大区画帯域ごとに所定の精度で再量子化して、その結果を記憶部９１２５に格納する、という動作である。
【０１２１】
ＣＰＵ９１２１は、以上のようにして得られた、スペクトルに関する情報を、所定の符号化方法により符号に変換し、無線通信部９１６１に引き渡す。無線通信部９１６１は、アンテナ９１６３を通じて、該符号を、無線信号に載せて、受信機として機能する別の装置９１１１に送信する。
【０１２２】
図６（ａ）に、符号化装置及び送信装置として動作する場合の、音声符号化兼復号装置９１１１の動作を、フローチャートにして示す。
【０１２３】
人間が発した音声は、マイクロフォン９１５１により収集され、音声処理部９１４１に引き渡されてＡ／Ｄ変換を施され、デジタル音声信号になる（ステップＳ９６１１）。実時間領域の信号である該デジタル音声信号は、ＭＤＣＴ係数の算出により、周波数領域へと変換され、スペクトルデータになる（ステップＳ９６１３）。該スペクトルデータは複数の中区画帯域に分割され（ステップＳ９６１５）、各中区画帯域毎にＭＤＣＴ係数の最大値が検索される（ステップＳ９６１７）。
【０１２４】
各中区画帯域には、人間の聴覚特性に合わせて、所定のビット数が分配されている。かかるビット数と、上述のＭＤＣＴ係数の最大値と、が比較され、該最大値が、あらかじめ分配されているビット数に収まるために必要なシフトビット数が決定される（ステップＳ９６１９）。
【０１２５】
なお、上述の所定のビット数は、基本的には、ＲＯＭ９１２３に格納された動作プログラムの中に記述済みである。
【０１２６】
しかし、例えばユーザ自身が通話を聞き取り易いものにする等の目的により、自ら操作キー９１７３を用いて変更できるようにしてもよい。その場合は、ＲＯＭ９１２３に格納された動作プログラムは記憶部９１２５から上述の所定のビット数を読み出すように記述され、該ビット数はユーザによる操作キー９１７３を通じての指示により書き換えられるようにする。
【０１２７】
他にも、中区画帯域の境界、大区画帯域の境界、再量子化の精度といった量は、基本的には、ＲＯＭ９１２３に格納された動作プログラムの中に記述済みであるけれども、上述のビット数と同様に、ユーザの指示により書き換え可能であってもよい。
【０１２８】
ステップＳ９６１９において決定されたシフトビット数に基づいて、ビットシフト済ＭＤＣＴ係数が算出される（ステップＳ９６２１）。かかる算出には除算が行われるが、除数が２の累乗に限られていることから、電子計算機においては右ビットシフト演算を行えば足りる。これは計算の高速化又はＣＰＵ９１２１の演算負担の軽減に資する。
【０１２９】
得られたビットシフト済ＭＤＣＴ係数はその対数に変換され（ステップＳ９６２３）、所定の大区画帯域毎に（ステップＳ９６２５）、所定の精度で再量子化される（ステップＳ９６２７）。
【０１３０】
ビットシフトされ再量子化されたＭＤＣＴ係数と、シフトビット数と、が符号化される（ステップＳ９６２９）。符号化された情報は、受信装置又は復号装置として動作する、別の音声符号化兼復号装置９１１１に、無線通信等の手段により送信される。
【０１３１】
一方、受信装置又は復号装置として動作する場合の音声符号化兼復号装置９１１１は、概ね、上述の符号化及び送信の手順と逆の手順により、音声信号を復元する。
【０１３２】
装置９１１１は、受信装置又は復号装置として動作する場合は、別の装置９１１１が符号化装置又は送信装置として動作した結果無線通信等の手段により送信した情報を、アンテナ９１６３により収集する。無線通信部９１６１は、アンテナ９１６３が収集した情報を、記憶部９１２５に格納する。
【０１３３】
この時点で、記憶部９１２５には、ビットシフトされ再量子化されたＭＤＣＴ係数と、シフトビット数と、が、所定の符号化方法により符号に変換されたものが格納されている。
【０１３４】
図６（ｂ）に示すフローチャートを参照しつつ、この後に装置９１１１が行う動作を説明する。かかる動作は、ＲＯＭ９１２３に格納された動作プログラムに従い、ＣＰＵ９１２１が行う。また、ＣＰＵ９１２１と、記憶部９１２５との間では、適宜データのやりとりがなされる。
【０１３５】
符号化側の装置９１１１において用いられた符号化方法と対をなす復号方法が用いられることにより、ビットシフトされ再量子化されたＭＤＣＴ係数と、シフトビット数と、が復号される。
【０１３６】
符号化の前に、ＭＤＣＴ係数の対数は大区画帯域毎に異なる精度にて対数化された。よって、復号側である装置９１１１においては、周波数領域は所定の大区画帯域に分割され（ステップＳ９６４３）、ビットシフト済ＭＤＣＴ係数の対数が、該大区画帯域毎に所定の精度にて復元される（ステップＳ９６４５）。該対数は元に戻される結果、ビットシフト済ＭＤＣＴ係数が復元される（ステップＳ９６４７）。
【０１３７】
周波数領域は複数の所定の中区画帯域に分割される（ステップＳ９６４９）。各中区画帯域については、送信側の装置９１１１から、シフトビット数が伝達されている。かかるシフトビット数を用いて、ＭＤＣＴ係数が復元される（ステップＳ９６５１）。復元は乗算によるが、乗数が２の累乗に限定されていることから、ＣＰＵ９１２１が実際に行うのは左シフト演算である。1回の乗算が1回の左シフト演算だけで済むことは、計算の高速化又はＣＰＵ９１２１の負担軽減に役立つ。
【０１３８】
こうして全ての周波数領域についてＭＤＣＴ係数が復元された、すなわち、スペクトルが復元された。かかるスペクトルは、逆ＭＤＣＴ変換により、実時間領域のデジタル音声信号に変換される（ステップＳ９６５３）。該デジタル音声信号は、音声処理部９１４１にてＤ／Ａ変換を施され（ステップＳ９６５５）、アナログ音声信号となり、スピーカ９１５３を通じて発せられる。こうして、音声信号の復元が完了する。
【０１３９】
（実施形態２）
以下では、本発明の実施形態２に係る音声符号化兼復号装置について述べる。装置の概要は、実施形態１に係る音声符号化兼復号装置９１１１と同様である。ただし、記憶部９１２５は、実時間領域における振幅制圧用シフトビット数、符号化用帯域毎の特徴量、符号長、をさらに記憶する。
【０１４０】
まず、音声符号化及び送信装置として動作する装置９１１１について説明する。実施形態１の場合と同様に、マイクロフォン９１５１によって収集されたアナログ音声信号は、音声処理部９１４１によりＡ／Ｄ変換を施され、図７（ａ）に示すようなデジタル音声信号となる。デジタル音声信号としては、例えば、サンプリング周波数16ｋＨｚ、量子化ビット数16のものが挙げられる。該デジタル音声信号は、記憶部９１２５に引き渡される。記憶部９１２５に記憶されたデジタル音声信号は、マイクロフォン９１５１等の特性のために、図７（ａ）に示すように、音声再生には不要な直流成分XDCを含む。かかる直流成分XDCは、既知の高域通過フィルタ等により、除去される。
【０１４１】
直流成分が除去されたデジタル音声信号は、圧縮の処理単位であるフレームに分割される。１つのフレームには３〜４個のＭＤＣＴブロックが含まれるのが好適であるが、ここでは、理解を容易にするために、実施形態１の場合と同様に、１つのフレームが１つのＭＤＣＴブロックのみを含むものとする。
【０１４２】
デジタル音声信号をフレームに分割するということは、装置９１１１内の動作としては、次のようなものである。すなわち、最初に単なる時系列として記憶部９１２５に格納されているデジタル入力信号のひとつひとつに、その信号が属するフレーム番号と、その信号がフレームの中で何番目の信号であるかを示す数字と、を、ＣＰＵ９１２１が割り当てる動作である。
【０１４３】
この動作をはじめ、ＣＰＵ９１２１が行う動作は、ＲＯＭ９１２３に格納された動作プログラムに記述されている。ＣＰＵ９１２１は、ＲＯＭ９１２３から該動作プログラムを読み出し、それに基づいて各種演算等を行う。
【０１４４】
各フレームがM個の入力信号サンプルを含むとする。入力信号サンプルは、図７（ｂ）に示すように、かかるフレームへの分割の後、第0フレームに属する最初のサンプルであるxAC(fm＝0、0)、第0フレームに属する2番目のサンプルであるxAC(fm＝0、1)、・・・、第0フレームに属する最後のサンプルであるxAC(fm＝0、M−1)、第1フレームに属する最初のサンプルであるxAC(fm＝1、0)、・・・、第1フレームに属する最後のサンプルであるxAC(fm＝1、M−1)、・・・のように識別される。図７（ｂ）には、例として、xAC(fm＝0、0)が記されている。
【０１４５】
なお、入力信号全体としては、図7（ａ）を直流成分xDCのぶんだけずらしたものが図7（ｂ）である。
【０１４６】
次に、フレーム毎に、入力信号のダイナミックレンジの調整が行われる。これは、フレーム中に含まれる最大振幅を所定のビット数に収まるように制圧することにより、送信すべき情報量を減らすためである。
【０１４７】
かかる制圧の要否をフレーム毎に決定するために、各フレームにおいて、該フレーム中の入力信号の最大振幅を求める。すなわち、第0フレーム中の最大振幅｜xMAX(fm＝0)｜、第1フレーム中の最大振幅｜xMAX(fm＝1)｜、第2フレーム中の最大振幅｜xMAX(fm＝2)｜、・・・を求める。
【０１４８】
上述の所定のビット数をGivenBitACとすると、図７（ｂ）に示すように、制圧の目標値すなわち許容される振幅は、図の塗りつぶした両矢印で示された２本の太い横線の範囲内である。すなわち、±2GivenBitAC−1以内の大きさの入力信号までが許容される。なお、ここで指数に「−1」が付加されるのは、正負の区別に1ビット必要なためである。制圧の目標値としては、例えば、10ビットが好適である。
【０１４９】
各フレームにおける最大振幅は、図７（ｂ）では、白抜きの両矢印で示された各フレーム２本ずつの点線の横線の範囲である。図の場合、第0及び第2フレームでは、最大振幅が許容振幅以下であるため、入力信号を制圧する必要がない。一方、第1フレームでは、最大振幅が許容振幅を超えているため、入力信号を制圧する必要がある。
【０１５０】
かかる制圧の方法としては、フレーム中の入力信号を、2の累乗で除して最大振幅を許容振幅以内とすることが好適である。２の累乗による除算は、ＣＰＵ９１２１にとっては、単なる右シフト演算であるため、高速かつ低負担にて行うことができるからである。ただし、入力信号をいたずらに小さくすることは、後に復号装置にて復元される音声の音質を損なうので、上述の除算において除数として用いる数は、２の累乗であって、最大振幅を許容振幅以内とすることができる数のうち、最小のものとする。
【０１５１】
例えば図７（ｂ）の場合、制圧対象である第1フレームにおいては、入力信号を、図７（ｃ）のように、半分にする、すなわち2の1乗で割れば十分である。すなわち、第1フレームの振幅制圧用シフトビット数は、1となる。
【０１５２】
事実上ビットシフトしなかった第0及び第2フレームについても、便宜上、20すなわち1による除算が行われたと考えて、振幅制圧用シフトビット数を0として扱う。こうして、直流成分の除去及び制圧の終わった入力信号は、第0フレームに属する最初のサンプルであるxBS、AC(fm＝0、0)、第0フレームに属する2番目のサンプルであるxBS、AC(fm＝0、1)、・・・、第0フレームに属する最後のサンプルであるxBS、AC(fm＝0、M−1)、第1フレームに属する最初のサンプルであるxBS、AC(fm＝1、0)、・・・、第1フレームに属する最後のサンプルであるxBS、AC(fm＝1、M−1)、・・・のように識別される。
【０１５３】
かかるダイナミックレンジの調整の詳細な手順を、図８に示すフローチャートを参照しつつ、説明する。元の入力信号は、既知の高域通過フィルタに通されることにより、直流成分が既に削除されており、記憶部９１２５には、直流信号除去済入力信号が既に格納されているものとする。つまり、既に、図７（ｂ）の状態にあるものとする。
【０１５４】
ＣＰＵ９１２１は、フレーム識別変数fmを格納するためのカウンタ用レジスタを用意し、初期値としてfm＝0とする（ステップＳ９８１１）。
【０１５５】
ＣＰＵ９１２１は、記憶部９１２５から直流成分除去済入力信号xAC(fm、0)、・・・、xAC(fm、M−1)を汎用レジスタにロードし（ステップＳ９８１３）、これらの値の絶対値どうし、すなわち、｜xAC(fm、0)｜、・・・、｜xAC(fm、M−1)｜、を比較し、フレーム内サンプルの絶対値の最大値である｜xMAX(fm)｜を求める（ステップS９８１５）。
【０１５６】
ＣＰＵ９１２１は、フレーム識別変数格納用のカウンタ用レジスタとは別のカウンタ用レジスタに、一時記憶用の変数TmpBitを格納することとし、初期値をTmpBit＝GivenBitAC−1とする（ステップＳ９８１７）。初期値は、制圧目標値を２進数で表した場合のビット数に相当する。
【０１５７】
次に、ＣＰＵ９１２１は、ステップＳ９８１９において、｜xMAX(fm)｜が２TmpBitよりも大きいか否かを判別する。大きい場合は（ステップＳ９８１９；Ｙｅｓ）、TmpBitを1増加して、再びステップ９８１９の比較を行う。このようにすればいずれは｜xMAX(fm)｜が２TmpBit以下になるので（ステップＳ９８１９；Ｎｏ）、ステップＳ９８２３に進んでShiftBit(fm)＝TmpBit−GivenBitAC＋１という計算により、制圧のためのビットシフト数であるShiftBit(fm)を求め、記憶部９１２５に格納する（ステップＳ９８２５）。
【０１５８】
例えば、フレーム内の入力信号の振幅が最初から制圧目標範囲に収まっていれば、図７（ｂ）の第0又は第2フレームの場合のように、｜xMAX(fm)｜≦２GivenBitAC−1であるから、ステップS９８１９の最初の判別ですぐにステップＳ９８２３に進み、ShiftBit(fm)＝0となる。一方、図７（ｂ）及び（ｃ）の第1フレームの場合は、TmpBitが初期値GivenBitAC−１のままでは、ステップＳ９８１９における判別の結果はＹｅｓとなる。一方、｜xMAX(fm)｜≦２GivenBitACであることから、ステップＳ９８２１にてTmpBitが1増加すると、２度目のステップS９８１９での判別結果はＮｏとなり、ステップ９８２３に進む。ステップＳ９８２３の計算によれば、
ShiftBit(fm)
＝TmpBit−GivenBitAC＋1
＝｛TmpBitの初期値＋1｝−GivenBitAC＋1
＝｛(GivenBitAC−１)＋１｝−GivenBitAC＋1
＝1
のようになり、振幅制圧用シフトビット数は1と求まる。
【０１５９】
次に、ＣＰＵ９１２１は、ビットシフト済かつ直流成分除去済入力信号を、
xBS、AC(fm、0)＝xAC(fm、0)／2ShiftBit(fm)、
・・・、
xBS、AC(fm、M−1)＝xAC(fm、M−１)／2ShiftBit(fm)
のように計算する（ステップＳ９８２７）。ここでは除算が行われているが、除数が2の累乗に限れられていることから、ＣＰＵ９１２１が実際に行う演算は、１度の除算につき１度の右シフト演算だけで済む。
【０１６０】
ＣＰＵ９１２１は、こうして得られたxBS、AC(fm、0)、・・・、xBS、AC(fm、M−1)を記憶部９１２５に格納する（ステップＳ９８２９）。１つの値につき１ビットずつが、正負を区別するために用いられる。
【０１６１】
全てのフレームについての処理が終わったか否かを判別し（ステップＳ９８３１）、終わったのであれば（ステップＳ９８３１；Ｙｅｓ）、処理を終了する。まだ終わっていないのであれば（ステップＳ９８３１；Ｎｏ）、次のフレームについて処理するためにフレーム識別変数fmを1増加して（ステップＳ９８３３）、ステップＳ９８１３に戻る。
【０１６２】
この後、実施形態１と同様に、フレーム毎に、ＭＤＣＴによる周波数領域への変換、中区画帯域毎のシフトビット数の決定、大区画帯域毎の再量子化、が行われる。
【０１６３】
この後、実施形態１の場合には、全周波数領域についてのスペクトルを符号化して送信することとしていた。それに対して本実施形態の場合は、新たに符号化用帯域という帯域を導入する。そして、かかる符号化用帯域により周波数領域を分割し、重要性が高いと考えられる符号化用帯域に属するＭＤＣＴ係数のみを符号化して送信し、重要性が低いと考えられる符号化用帯域に属するＭＤＣＴ係数については符号化も送信もしないことにする。そして、受信及び復号側では、受け取らなかった符号化用帯域のＭＤＣＴ係数は0として扱う。つまり、スペクトルのうち、重要と思われる部分だけが、伝達される。
【０１６４】
スペクトルの一部が選択される様子を、図９に模式的に示す。図９（ａ）は、ＭＤＣＴ係数の対数の、周波数依存性を表す。すなわち、図９（ａ）は、あるフレームの入力信号を周波数領域に変換した結果得られる、スペクトルである。
【０１６５】
グラフの縦軸については、既に再量子化まで完了しているものとして、ここでは、主に横軸である周波数について説明する。
【０１６６】
まず、周波数軸を、符号化用帯域で区切る。符号化用帯域には、低周波側から順に、1、2、3、・・・のように番号がつけられているものとする。符号化用帯域は、各帯域が少なくとも1つのＭＤＣＴ係数を含まなければ無意味であることから、小区画帯域よりも大きい帯域である必要はあるが、符号化に好適な帯域であれば、中区画帯域や大区画帯域と特段の関連を有する必要はない。
【０１６７】
図９（ａ）では、一例として、周波数領域を、番号1〜番号7の、7個の符号化用帯域に分割した。この7個の符号化用帯域について、所定の基準に従って重要度を求め、重要度の高い順に優先順位をつける。重要度を求めるための基準の具体例は、後述する。
【０１６８】
図９（ａ）の場合、かかる優先順位が、丸囲みの数字で表されるものとする。例えば、番号2の符号化用帯域には丸囲みの数字1が付されている。これは、上述の所定の基準に従って重要度を求めた結果、全ての符号化用帯域のうち番号2のものを最優先して符号化すべきとの結論に至ったことを示す。以下同様に、2番目に優先されるべき帯域は、番号1の符号化用帯域であり、3番目に優先されるべき帯域は、番号7の符号化用帯域であり、・・・、最も優先順位が低い帯域は、番号3の符号化用帯域である。
【０１６９】
このように符号化用帯域を導入し、優先順位を定める理由は、本実施例においては、符号化方法としてエントロピ符号化方法が採用されるからである。エントロピ符号化方法の特徴として、情報圧縮精度が一定であっても、圧縮率が一定ではない点が挙げられる。すなわち、同一長であるが内容の異なる複数のデータに対して、エントロピ符号化を施した場合、一般に、元のデータ中のデータ要素の出現頻度の偏り具合の違いのために、符号化後の符号長はまちまちになる。つまり、エントロピ符号化方法は、情報圧縮精度が同じであるとの前提で他の符号化方法と比較した場合、たまたま圧縮率が高くなることもあるし、逆に低くなってしまうこともある。すなわち、高圧縮がなされ得る点に着目すれば、エントロピ符号化方法は、優れた方法であるといえる一方で、圧縮率が低くなる場合も生じ得る点では、使い勝手の劣る方法であるといえる。なお、圧縮率の予測は困難であり、高い圧縮率が得られるか否かは、実際にエントロピ符号化を行ってみるまで分からない。
【０１７０】
本実施形態においては、かかるエントロピ符号化方法の長所が最大限に活用されつつ、短所の影響がなるべく生じないようにしてある。本実施形態に係る装置９１１１が利用される際の前提として想定される、通信レート等の事情による符号長に対する所定の制限が存在する場合、できるだけ多くの符号化用帯域のＭＤＣＴ係数をエントロピ符号化してみて、たまたま符号長が上述の所定の制限に収まるのであれば、多くの情報を送信することができるので、高音質の音声が復元可能となる。逆に、エントロピ符号化してみたところ、上述の所定の制限を超えてしまう場合には、符号化対象となる符号化用帯域のうち優先度の高いものをなるべく残して符号化し直し、上述の所定の制限に収める。優先度の高い符号化用帯域に関する情報すなわち重要な情報は、受信側及び復号側の装置に伝達されるので、符号化対象となる帯域が減ったことによる復元音声の音質の劣化は最低限に抑えられる。
【０１７１】
符号化用帯域の取捨選択の様子を、図９（ｂ）及び図９（ｃ）に示す。例えば、優先順位が1番目〜3番目までの符号化用帯域1、2、7のＭＤＣＴ係数をエントロピ符号化してみたところ（図９（ｂ））、符号長が所定の符号長以下であったとする。この場合、エントロピ符号の量は、通信容量を超えないから、選択された第1番目、第2番目、及び、第7番目の符号化用帯域のＭＤＣＴ係数を全て受信側及び復号側の装置に送ることができる。受信側及び復号側の装置は、この状態であっても、かなり高音質の音声を復元することができるかもしれない。しかし、次の優先順位すなわち優先順位が4番目の帯域である第5番目の符号化用帯域についても、合わせてＭＤＣＴ係数を受信側及び復号側の装置に伝達することができれば、より完全なスペクトルに近い情報を伝達することになるので、該装置は、さらに高音質の音声を復元できることが期待される。そこで、まだ通信容量に余裕があることから、試しに、優先順位が4番目までの符号化用帯域、すなわち、第1番目、第2番目、第5番目、及び、第7番目の符号化用帯域のＭＤＣＴ係数についても、エントロピ符号化してみる。ここで、そのようにしてみたところ、符号長が、所定の符号長すなわち通信容量を超えてしまうことが分かったとする。すると、ここではじめて、与えられた通信容量の範囲内では、優先順位が3番目までの符号化用帯域の情報を送るのが精一杯であり、優先順位が4番目の符号化用帯域の情報まで含めて送ろうとするとオーバーフローしてしまうことが分かる。よって、このフレーム又はＭＤＣＴブロックの時間帯のスペクトル情報については、優先順位が3番目までの符号化用帯域のＭＤＣＴ係数に関する情報がエントロピ符号化されて送信されることが決定する。
【０１７２】
注意すべき点は、あるひとつのフレーム又はＭＤＣＴブロックの時間帯におけるスペクトルについて、例えば上述のように優先順位が3番目までの符号化用帯域についての情報を送ることになったからといって、別のフレーム又はＭＤＣＴブロックの時間帯については、優先順位が何番目までの符号化用帯域についての情報が送信可能か、ということは一概には決定できないということである。上述のとおり、エントロピ符号化方法は、符号化の対象となるデータの性質、すなわちここではスペクトルの形状等によって、たまたまデータの高圧縮が達成できる場合と、さほど高圧縮ができないと、がある。よって、例えばあるフレーム又はＭＤＣＴブロックの時間帯においては、優先順位が4番目までの符号化用帯域についてまで符号化しても所定の符号長を超えないこともあれば、別のフレーム又はＭＤＣＴブロックの時間帯においては、優先順位が2番目までの符号化用帯域についてまでの符号化で通信容量の限界に達してしまう場合もあり得る。このように、優先順位が何番目までの符号化用帯域について符号化することが可能かということは、フレームすなわち時間帯ごとに異なり得る。
【０１７３】
高圧縮が達成できた時間帯における、受信側及び復号側の装置による復元音声は、当然のことながら、他の符号化方法を用いた場合よりも高品質となる。高圧縮が達成できなかった時間帯では、受信側及び復号側の装置に対しては、伝達された情報量が少ない、換言すればスペクトルのごく一部についての情報が伝達されたにすぎないので、相対的に音質は劣る。しかし、スペクトル全体のうち、音声を再生する上で重要度の高い部分の情報が、優先的に選択されて符号化され伝達されているから、音質の劣化は最低限度に抑えられる。
【０１７４】
よって、符号化方法として本実施形態の場合のようにエントロピ符号化方法を採用する方が、圧縮率が一定の他の符号化方法を採用する場合に比べて、全ての時間帯について総合的に判断した場合には、復元音声の品質が優れていると考えられる。
【０１７５】
代表的なエントロピ符号化方法としては、ハフマンコードや、RangeCoderが挙げられる。
【０１７６】
ここまで図９を用いて例示してきた符号化帯域の取捨選択の様子は、より詳細には、図１０及び図１１に示すフローチャートにより示される。
【０１７７】
周波数領域をいくつの符号化用帯域によりどのような境界周波数で分割するか、という取り決めについては、基本的には、ＲＯＭ９１２３に格納された動作プログラムに記述済みである。また、かかる取り決めは、符号化側及び送信側となる装置９１１１と、受信側及び復号側となる装置９１１１とで共有されている。よって、基本的には、前者の装置から後者の装置に向けて、符号化用帯域の数及びそれらの境界周波数に関する情報を送信する必要はない。
【０１７８】
だだし、符号化及び送信側の装置９１１１のユーザ自らの判断により、操作キー９１７３を介して符号化用帯域に関する設定を行い、該ユーザがさらなる音質向上を実感し得るようにしてもよい。その場合は、符号化用帯域の数及びそれらの境界周波数に関する情報を、符号化及び送信側の装置９１１１から受信側及び復号側の装置９１１１に伝達するようにするか、受信側及び復号側の装置９１１１のユーザも送信側ユーザに合わせた設定となるよう自ら操作キー９１７３を介して装置の設定を変更するようにする。また、かかるユーザ設定を許可する場合には、ユーザが決めた各種設定値は記憶部９１２５に格納されるようにし、ＲＯＭ９１２３に格納されたＣＰＵ９１２１の動作のためのプログラムは、かかる各種設定値を記憶部９１２５から呼び出すようにする。
【０１７９】
このように、基本的には、符号化用帯域の個数及び該帯域相互の境界周波数は与えられている。一方、上述のように、どの符号化用帯域にいかなる優先順位番号を与えるかについては、所定の基準に基づく重要度の決定により、各フレーム又はＭＤＣＴブロックに対応する時間帯毎に、すなわちひとつのスペクトル毎に決定する必要がある。
【０１８０】
図１０のフローチャートは、符号化対象となる帯域の取捨選択に必須の、符号化用帯域への優先順位の割り当ての手順を示したものである。図９に示したように、符号化用帯域は既に低周波側から順に番号が付されることにより相互に識別可能な状態になっているものとする。そこで、ここで行わなければならないことは、符号化用帯域に付けられた番号を、優先順位番号の関数として対応づけることである。その際には、符号化用帯域毎に重要度を求める必要がある。そして、かかる重要度は、後にエントロピ符号が受信側及び復号側の装置９１１１において音声信号に復元された際に、高品質の音声となるように、適切に決定される必要がある。
【０１８１】
符号化用帯域に付けられた番号を、このように優先順位番号の関数として対応づけることにより、後に図１１を用いて説明する、符号化用帯域の取捨選択の過程において、優先順位の高い符号化用帯域から順に呼び出すことが容易になる。
【０１８２】
符号化用帯域を識別する番号すなわち帯域識別用変数を、ωCRNGとする。ＣＰＵ９１２１は、ＲＯＭ９１２３に格納された動作プログラムに従って、ωCRNGを格納するためのカウンタ用レジスタを用意し、初期値としてωCRNG＝1とする（ステップＳ１０１１）。つまり、低周波側の符号化用帯域から順に処理する。
【０１８３】
次に、ＣＰＵ９１２１は、記憶部９１２３から、番号ωCRNGの符号化用帯域に属する全てのＭＤＣＴ係数X(ωCRNG、1)、・・・、X(ωCRNG、q(ωCRNG))を、汎用レジスタにロードする（ステップＳ１０１３）。
【０１８４】
ここで、記号qは、図２（ｄ）で中区画帯域の説明のために示した記号にならったものである。上述のように、符号化用帯域は、中区画帯域と特段の関係を有する必要はなく、全く別のものであってもよい。しかし、図１０では、中区画帯域ではなく符号化用帯域について説明しているのが明らかなので、いたずらに異なる記号を使用して理解の妨げにならないよう、便宜的に同じ記号を使用した。
【０１８５】
符号化用帯域の重要度の決定方法は、後にエントロピ符号が受信側及び復号側の装置９１１１において音声信号に復元された際に、高品質の音声となるような方法であればいかなる方法であってもよい。ここでは、その一例として、符号化用帯域に属するＭＤＣＴ係数の和を、該符号化用帯域における合計エネルギーと考え、合計エネルギーが大きいほど重要度が高いとする方法を述べる。なお、前記の和をとる対象に負の数が含まれている場合に備えて、２乗してから和をとることが妥当である。
【０１８６】
スペクトルの特徴は、定性的には、例えばスペクトルのピーク部分等、エネルギーの大きな部分に現れていることから、かかる重要度の決定方法は妥当であるといえる。
【０１８７】
そこで、ステップＳ１０１５において、番号ωCRNGの符号化用帯域の合計エネルギーg(ωCRNG)が、
g(ωCRNG)
＝X(ωCRNG、1)2＋・・・＋X(ωCRNG、q(ωCRNG))2
のように計算され、記憶部９１２５に格納される（ステップＳ１０１７）。
【０１８８】
なお、図１０には示されていないが、人間の聴覚が低周波音に敏感であることに鑑み、上述の計算の結果得られたg(ωCRNG)に対して、ωCRNG番目の符号化用帯域が相対的に低周波領域にある場合には、1より大きい重み付け係数を乗じたものを新たに合計エネルギーg(ωCRNG)として、後の優先順位番号付けのために使用してもよい。例えば最も低周波側の符号化用帯域のエネルギーと、最も高周波側の符号化用帯域のエネルギーと、がたまたま全く等しい値であったとしても、人間の聴覚にとっては、前者の符号化用帯域を優先的に符号化及び送信の対象としたほうが、受信及び復号の後に再現される音声の品質がよいものに感じられると考えられる。すなわち、人間の聴覚特性を考慮すれば、スペクトルの低周波側の方が、高周波側よりも優先して符号化及び送信されるべきである。そこで、例えば、500Ｈｚ未満の符号化用帯域における合計エネルギーには重み付け係数1.3を、500Ｈｚ以上3500Ｈｚ未満ならば重み付け係数1.1を、3500Ｈｚ以上ならば重み付け係数1.0を、それぞれ乗算する。
【０１８９】
なお、重み付け係数が変化する境界周波数と、符号化用帯域相互の境界周波数とは、必ずしも一致する必要はない。同一の符号化用帯域の中に複数の重み付け係数が存在する場合には、個々のＭＤＣＴ係数が属する小区画帯域の周波数に着目して、それに応じた重み付け係数を乗じた後に、合計エネルギーを計算すればよいからである。
【０１９０】
次に、ＣＰＵ９１２１は、全ての符号化用帯域についての処理が終わったか否か、すなわち、最も高周波側の符号化用帯域まで処理が終わったか否か、を判別する（ステップＳ１０１９）。まだ終わっていないのであれば（ステップＳ１０１９；Ｎｏ）、ひとつ高周波側の符号化用帯域について処理するために、ωCRNGを1だけ増加して（ステップＳ１０２１）、ステップＳ１０１３に戻る。
【０１９１】
全ての符号化用帯域について処理が終わったのであれば（ステップＳ１０１９；Ｙｅｓ）、全ての符号化用帯域についての合計エネルギーg(1)〜g(ωMaxCRNG)が求まり記憶部９１２５に格納されたことになる。（ωMaxCRNGはωCRNGの最大値である。）そこで、符号化用帯域の番号を優先順位番号の関数として表すために、ＣＰＵ９１２１は、全ての合計エネルギーg(1)〜g(ωMaxCRNG)を汎用レジスタにロードし、既知の手法により降順にソートし、Priority番目になった合計エネルギーに対応する符号化用帯域の識別番号がωCRNGである場合には、PriorityとωCRNGとがωCRNG(Priority)という関数の関係になるように定める（ステップＳ１０２３）。エネルギーの降順にソートして先頭から数えた結果がPriorityであるから、Priorityは優先順位番号を表す。
【０１９２】
こうして優先順位番号Priorityの関数としての符号化用帯域識別番号ωCRNG＝ωCRNG(Priority)が求まる。この結果は記憶部９１２５に格納され（ステップＳ１０２５）、符号化用帯域への優先順位番号の割り当て処理が完了する。
【０１９３】
次に、上で図９にある模式的な具体例により説明した、符号化対象帯域の選択と、エントロピ符号化と、が行われる手順について、より詳細に、図１１に示すフローチャートを参照しつつ説明する。
【０１９４】
まず、既に図１０に示された手順に従って、符号化用帯域への優先順位番号の割り当て処理を行う（ステップＳ１１１１）。つまり、符号化用帯域を識別するための番号であるωCRNGが、優先順位を示す番号であるPriorityの、いかなる関数であるかが決定される。
【０１９５】
次に、ＣＰＵ９１２１は、ＲＯＭ９１２３に格納された動作プログラムに従って、いくつめまでの優先順位の符号化用帯域を符号化するかを示す変数であるPriorityMAXを格納するためのカウンタ用レジスタを用意し、初期値をPriorityMAX＝1とする（ステップＳ１１１３）。換言すれば、PriorityMAXとは、優先順位番号の上限値である。
【０１９６】
次に、ＣＰＵ９１２１は、優先順位番号が１〜PriorityMAXに対応する符号化用帯域の再量子化ビットシフト済ＭＤＣＴ係数を、記憶部９１２５から汎用レジスタにロードする（ステップＳ１１１５）。ＣＰＵ９１２１はかかるロードの際、記憶部９１２５を参照することにより、与えられた優先順位番号に対応する符号化用帯域を特定することができる。ステップＳ１１１１において、優先順位番号の関数としての符号化用帯域識別番号が記憶部９１２５に格納済みだからである。再量子化とビットシフトが完了していることを示すために添字QBSを付加しつつ、図１０のステップＳ１０１３における記法にならうと、ステップＳ１１１５においてロードされる、スペクトルを構成するサンプルは、
XQBS(ωCRNG(1)、1)、・・・、
XQBS(ωCRNG(1)、q(ωCRNG(1)))、
・・・
XQBS(ωCRNG(PriorityMAX)、1)、・・・、
XQBS(ωCRNG(PriorityMAX)、q(ωCRNG(PriorityMAX)))
である。
【０１９７】
符号化対象となる帯域に属するXQBSは当然、受信側及び復号側の装置９１１１に伝達されるわけだが、該装置で音声を復元するためには、シフトビット数も必要である。ビットシフト用の帯域である中区画帯域は、一般には、符号化用帯域とは別に決定されたものである。よって、ＣＰＵ９１２１は、符号化対象となる符号化用帯域がいかなる中区画帯域と重なっているかを調査し、該中区画帯域ではいかなる数のシフトビットが行われたか、という情報を収集する必要がある。そこで、ＣＰＵ９１２１は、優先順位番号1〜PriorityMAXに対応する符号化用帯域と重なるビットシフト用帯域ωRANGEの全てについてのシフトビット数ShiftBit(ωRANGE)をロードする。また、本実施例においては、スペクトルに変換する前の実時間領域の扱いの際に、既に、図７及び図８に示すビット数の制圧処理が行われている。よって、かかる制圧処理の際に得られた、実時間領域に関する情報も、ロードされる（ステップＳ１１１７）。
【０１９８】
次に、ＣＰＵ９１２１は、これまでの手順によりその汎用レジスタに格納されたデータに基づいて、再量子化済ビットシフト済ＭＤＣＴ係数、シフトビット数、及び、実時間領域に関する上述の情報と、を合わせて、試しにエントロピ符号化してみる。そして、結果的に符号長がいくらになるか、を計算する（ステップＳ１１１９）。
【０１９９】
次に、ＣＰＵ９１２１は、ステップＳ１１１９にて試算された符号長が、所定の符号長よりも長いか否かを判別する（ステップＳ１１２１）。所定の符号長とは、通信容量等の制約から導き出され与えられる長さである。かかる所定の符号長を超える符号は、オーバーフロー等により受信側及び復号側の装置９１１１に正しく送信できないので、実際に送信する符号長は、かかる所定の符号長以下でなければならない。
【０２００】
かかる判別の結果、試算された符号長が所定の符号長を超えていない場合（ステップＳ１１２１；Ｎｏ）、通信容量等の制約という観点からすると、まだゆとりがあるということである。よって、次の優先順位番号の付いた符号化用帯域まで符号化対象を広げて、それでもまだ所定の符号長を超えないかどうか、試算すべきである。したがって、ステップＳ１１２３にて、PriorityMAXを1増加してから、ステップＳ１１１５に戻る。
【０２０１】
ステップＳ１１２１における判別の結果、符号長が所定の符号長を上回っていた場合には（ステップＳ１１２１；Ｙｅｓ）、この時点のPriorityMAX番目の優先順位の符号化用帯域までの情報は、通信容量等の制約により、正しく送信できない。一方、ステップS１１２３でPriorityMAXの値を1ずつ増加するたびに符号長の試算（ステップＳ１１１９）を行っていることから、直前のPriorityMAX番目の優先順位の符号化用帯域までの情報は所定の符号長以下であり送信可能であるはずである。よって、ステップＳ１１２５にてPriorityMAXを1減少した上で、改めて、優先順位番号1〜PriorityMAXに対応する符号化用帯域の再量子化ビットシフト済ＭＤＣＴ係数、シフトビット数、及び、実時間領域に関する情報を、エントロピ符号化する（ステップＳ１１２７）。
【０２０２】
このように生成されたエントロピ符号が、送信されることになる。そこで、該エントロピ符号は、無線通信部９１６１を介したアンテナ９１６３による送信が実際に行われるまで保持される必要上、記憶部９１２５に格納される（ステップＳ１１２９）。こうして、符号化対象帯域選択とエントロピ符号化の処理が終了する。
【０２０３】
図１２（ａ）に、本実施形態に係る装置９１１１が符号化側及び送信側の装置として機能する場合の、音声信号の符号化の手順の概略をまとめた。マイクロフォン９１５１により収集された音声信号は音声処理部９１４１内でＡ／Ｄ変換された（ステップＳ１２１１）後、直流成分が削除される（ステップＳ１２１３）。
【０２０４】
次に、音声圧縮の単位であるフレーム毎に、ダイナミックレンジが調整される。元のダイナミックレンジが、所定の制圧目標よりも大きい場合には、信号値に2の累乗による割り算、すなわち右ビットシフト演算を施して、データ量を減少させる。
【０２０５】
ここまでは実時間領域での音声処理であるが、ステップＳ１２１７では、フレーム毎又はＭＤＣＴブロック毎に、周波数領域への変換が行われる。離散的な周波数変換の技法は多々あるが、本実施例の場合は、ＭＤＣＴを採用する。求まったスペクトルに対して行う各種の処理は、実施形態１の場合と同様である。すなわち、再量子化ビットシフト済ＭＤＣＴ係数と、シフトビット数と、を求める。
【０２０６】
この後、送信すべきデータを符号化する。本実施例においては、符号化方法として、エントロピ符号化方法を採用した。これは、たまたま高圧縮率が達成できた場合のデータ送信量の多さと、たまたま高圧縮率が達成できなかった場合でも重要なデータを優先的に送ることが可能であることに着目し、総合的にみれば受信側及び復号側の装置９１１１において高品質の音声の再現に資することが期待されるからである。
【０２０７】
少なくとも重要なデータだけは符号化し送信されなければならないので、スペクトルのうち、エントロピ符号化の対象となる帯域を決定してから（ステップＳ１２１９）、エントロピ符号化が行われる（ステップ１２２１）。
【０２０８】
音声符号化兼復号装置９１１１は、受信側及び復号側として動作するときには、図１２（ｂ）に示す手順に従う。該手順は、基本的には、図１２（ａ）を用いて説明した符号化の手順を、逆向きにしたものである。
【０２０９】
より詳しい手順は後に図１３及び図１４を用いて説明することとし、ここでは、まず、復号手順の概略を説明する。
【０２１０】
装置９１１１は、該装置に向けて、符号化側及び送信側として動作する別の装置９１１１により発せられた無線電波を、アンテナ９１６３により捉える。そして、無線通信部９１６１において、無線装置に載せられているエントロピ符号を取り出す。
【０２１１】
取り出されたエントロピ符号は、記憶部９１２５に格納される。その後、ＣＰＵ９１２１が、ＲＯＭ９１２３に格納された動作プログラムに従って、記憶部９１２５との間で適宜データのやりとりをしながら、かかるエントロピ符号を復号する（ステップＳ１２４１）。エントロピ符号化方法には、ハフマンコードやRangeCoder等、いくつかのものが知られているが、当然のことながら、いずれも復号方法と対になっている。よって、符号化及び送信側の装置９１１１にて用いられたエントロピ符号化方式と対をなす復号方法が用いられ、ＭＤＣＴ係数等、音声復元に必要なデータが復号される（ステップＳ１２４３）。
【０２１２】
上述のように、スペクトルを符号化する際には、重要度が高いと考えられる帯域を優先的に符号化する。よって、受信側及び復号側として動作する装置９１１１には、スペクトルの全ての部分が伝達されるとは限らない。スペクトルのうち、伝達されなかった帯域、すなわち、符号化側及び送信側の装置９１１１において、重要度が低いとして符号化されなかった帯域については、受信側及び復号側の装置９１１１においては、スペクトルの成分すなわちＭＤＣＴ係数が０であるとして扱われる。
【０２１３】
復元されたスペクトルは、実時間領域に変換される（ステップＳ１２４５）。ひとつのスペクトルは、ひとつのＭＤＣＴブロックに対応する時間帯の実時間信号に変換される。上述のように、音声圧縮単位であるフレームは、実時間領域において、3又は4個のＭＤＣＴブロックから構成されることが好ましいが、本実施形態の本質の理解を容易にするために、ひとつのフレームはひとつのＭＤＣＴブロックのみを含むとする。これは、後に図１３及び図１４を用いて説明する場合も同じである。
【０２１４】
また、実際に復元される音声は、複数のフレームが連続したものであるが、既に述べたように、複数のフレームを時間順に接続してほぼリアルタイムに音声を再生することは、フレームに関する各種演算等を次々と鎖状に実行することにより可能である。かかる技術そのものは既知であり、本実施形態の本質ではないので、ここでは、1フレームについての処理についてのみ説明する。これは、後に図１３及び図１４を用いて説明する場合も同様である。
【０２１５】
ステップＳ１２４５の処理により、1フレームぶんの実時間信号が復元されたが、かかる実時間信号は、符号化側及び送信側の装置９１１１が図１２（ａ）のステップＳ１２１５にて行ったダイナミックレンジの調整すなわちビット数の制圧の結果、本来の音声信号とは異なる可能性がある。そこで、ステップＳ１２４３においてＭＤＣＴ係数とともに復号された実時間領域での振幅制圧用シフトビット数が調査され、今着目しているフレームにおける信号がかつてビット数の制圧を受けたのであれば、元に戻される（ステップＳ１２４７）。このとき、ビット数制圧が少なくとも形式上は除算によって行われたことに鑑みれば、原理的には、乗算が行われる。しかし、乗数は2の累乗に限定されているので、ＣＰＵ９１２１が行う演算としては、ビット数制圧時に右ビットシフト演算が行われたのとちょうど逆に、左ビットシフト演算だけが行われる。これはＣＰＵ９１２１の処理の高速化又は負担軽減に資する。
【０２１６】
かかる加算の結果、デジタル音声信号が復元される。
【０２１７】
デジタル音声信号は、音声処理部９１４１に引き渡され、Ｄ／Ａ変換を施されてアナログ音声信号に変換される（ステップＳ１２５１）。該アナログ音声信号がスピーカ９１５３により発せられることにより、受信側及び復号側の装置９１１１のユーザに復元音声が到達する。こうして、音声符号化、送信、受信、及び、音声復号、という一連の動作が完了する。
【０２１８】
以下では、図１２（ｂ）ではごく簡単に示した、ステップＳ１２４３〜ステップＳ１２４７までの処理を、より詳細に、図１３及び図１４に示すフローチャートを参照しつつ、説明する。
【０２１９】
エントロピ復号（図１２（ｂ）のステップＳ１２４１）の結果、記憶部９１２５には、フレームfmにおける、次のデータが格納済みであるとする。すなわち、優先順位番号1〜PriorityMAXに対応する符号化用帯域の識別番号ωCRNG(Priority)（1≦Priority≦PriorityMAX）、再量子化ビットシフト済ＭＤＣＴ係数XQBS(ωCRNG(Priority)、1)、・・・、XQBS(ωCRNG(Priority)、q(ωCRNG(Priority)))（1≦Priority≦PriorityMAX）、優先順位番号1〜PriorityMAXに対応する符号化用帯域と重なるビットシフト用帯域（中区画帯域）ωRANGEの全てについてのシフトビット数ShiftBit(ωRANGE)、及び、振幅制圧用ビットシフト数ShiftBit(fm)、は、既に、記憶部９１２５に格納されている。
【０２２０】
ＣＰＵ９１２１は、ＲＯＭ９１２３に格納された動作プログラムに従って、カウンタ用レジスタに符号化用帯域識別変数ωCRNGを格納することとし、その初期値を1に設定する（ステップＳ１３１１）。つまり、低周波側から順に、スペクトルを復元していくことになる。
【０２２１】
次に、ＣＰＵ９１２１は、番号ωCRNGの符号化用帯域が、符号化側及び送信側の装置９１１１において符号化対象として選択されていたか否かを判別する。より具体的には、ＣＰＵ９１２１は、記憶部９１２５内を検索する作業を行う。つまり、番号ωCRNGの符号化用帯域が、もし符号化の対象になっていたとすれば、上述のように、記憶部９１２５には、番号ωCRNGが、優先順位番号Priority（1≦Priority≦PriorityMAX）の関数として格納されているはずである。そこで、記憶部９１２５内でかかる番号ωCRNGが見つかれば、番号ωCRNGの付いた符号化用帯域は符号化の対象になっていたということである。逆に、かかる番号が見つからなければ、該番号の付いた符号化用帯域は符号化の対象にならなかった、と判別することができる。
【０２２２】
かかる判別ステップを受信側及び復号側の装置９１１１に行わせることは、該装置内のＣＰＵ９１２１に、検索のための負担をかけ、処理速度を低下させ得るという短所がある。そこで他の方法として、符号化側及び送信側の装置９１１１の方で、符号化しないと決定した帯域の番号についての情報や、該帯域のＭＤＣＴ係数を後述のように0として扱ってよい旨の情報を、付加した上で、符号化し送信することも考え得る。こうすれば、上述の検索作業はより直接的に行うことができるようになる。通信容量の制約等が緩い場合には、かかる方法も効果的である。
【０２２３】
しかし、本実施例の場合は、限られた通信容量を貴重なリソースと考え、符号化されなかった帯域がどれであるかという情報を送信するゆとりがあるのであれば、そのぶんを優先順位がもうひとつ低い符号化用帯域の符号化のために利用して、復元音声の音質を向上させる方針をとるものとする。通常のＣＰＵであれば、上述の検索はさほど負担にならないと考えられるため、かかる方針をとるほうが合理的だと思われるからである。
【０２２４】
番号ωCRNGの符号化用帯域が符号化の対象になっていなかったと判別された場合には（ステップＳ１３１３；Ｎｏ）、ＭＤＣＴ係数を、X(ωCRNG、1)＝0、・・・、X(ωCRNG、q(ωCRNG)) ＝0、とする（ステップＳ１３２１）。つまり、かかる符号化用帯域のスペクトル成分は0であるとする。
【０２２５】
符号化側及び送信側の装置９１１１は、スペクトル全体のうち重要な部分を優先的に符号化し送信している。これを別の観点からみれば、ある帯域が符号化の対象にならなかったということは、その帯域のスペクトルが、すくなくとも相対的には重要ではないことを意味する。そこで、スペクトルの重要な部分に影響を与えないように、かかる帯域のＭＤＣＴ係数には、周波数成分として特に意味を持たない0を代入することとしたのである。ここでは、スペクトルの重要な部分に影響を与えない、いわば目立たない値を代入することが重要であるので、上述の0という値は例示である。かかる値として0よりも適切な定数があれば、それを代入したほうがよい場合もあり得る。
【０２２６】
ステップＳ１３１３において、番号ωCRNGの符号化用帯域が符号化の対象になっていたと判別された場合（ステップＳ１３１３；Ｙｅｓ）、記憶部９１２５には、再量子化ビットシフト済ＭＤＣＴ係数XQBS(ωCRNG、1)、・・・、XQBS(ωCRNG、q(ωCRNG))と、番号ωCRNGの付いた符号化用帯域と重なる全てのビットシフト用帯域である単数又は複数の番号ωRANGEの付いた中区画帯域におけるシフトビット数ShiftBit(ωRANGE)と、が格納されているはずである。そこで、ＣＰＵは、これらを汎用レジスタにロードする（ステップＳ１３１５）。
【０２２７】
周波数領域をいかなる大区画帯域に分割し、各大区画帯域においていかなる精度で再量子化を行うか、という情報は、基本的には、符号化側及び送信側の装置９１１１と受信側及び復号側の装置９１１１とであらかじめ共有されている。そこで、ロードされた再量子化ビットシフト済ＭＤＣＴ係数は、かかる情報に基づいて、所定の精度で対数を元にもどしてビットシフト済ＭＤＣＴ係数XBS(ωCRNG、1)、・・・、XBS(ωCRNG、q(ωCRNG))に逆再量子化される（ステップＳ１３１７）。
【０２２８】
次に、ビットシフト済ＭＤＣＴ係数は、ステップ１３１５にてロードされたシフトビット数に基づいて、ＭＤＣＴ係数X(ωCRNG、1)、・・・、X(ωCRNG、q(ωCRNG))に逆ビットシフト変換される（ステップＳ１３１９）。符号化側及び送信側の装置９１１１において、原理的には除算、ＣＰＵの演算としては右シフト演算が行われたのに対応して、本ステップでは、原理的には乗算、ＣＰＵの演算としては左シフト演算、が行われる。１回の除算及び乗算を、それぞれ１回の右シフト演算及び左シフト演算で済ませることにより、ＣＰＵの動作が高速化したり処理負担が軽減されたりすることになるが、これは、除数及び乗数を2の累乗に限定したために初めて可能になったことである。
【０２２９】
なお、ステップＳ１３１７及びステップＳ１３１９で行われる処理は、実施形態１の場合（図６（ｂ）のステップＳ９６４３〜ステップＳ９６５１）と概ね同様の処理である。
【０２３０】
このように、ステップＳ１３１３における判別の結果によらず、番号ωCRNGの付された符号化用帯域におけるＭＤＣＴ係数の値が求まる（ステップＳ１３２１又は、ステップＳ１３１５〜ステップＳ１３１９）。そこで、これで全ての周波数領域についての処理が終わったかどうかが判別され（ステップＳ１３２３）、終わっていないのであれば（ステップＳ１３２３；Ｎｏ）、もうひとつ高周波側の符号化用帯域についてＭＤＣＴ係数を求めるために、ωCRNGの値を1増加してから（ステップＳ１３２５）、ステップＳ１３１３の判別処理に戻る。全ての帯域についての処理が終わった、すなわち、全周波数領域についてＭＤＣＴ係数が決定されたら（ステップＳ１３２３；Ｙｅｓ）、図１４のステップＳ１４１１以降の、実時間領域における復元作業を開始する。
【０２３１】
ステップＳ１４１１の処理が開始される時点で得られているスペクトルは、符号化される時点でシフトビット、再量子化、符号化される帯域の取捨選択が行われたために、一般には、元の音声信号のスペクトルと全く同一とはならない。すなわち、本来のスペクトルデータと比較すれば、値の切り捨て処理や、0等の定数として扱われる帯域の存在のために、音声情報としては、劣化している。しかし、上述の説明から明らかなように、受信側及び復号側として動作する装置９１１１が、符号化及び送信側として動作する装置９１１１から引き渡されたデータを最大限有効に用いて復元したスペクトルではあるといえる。
【０２３２】
ステップＳ１４１１の処理が開始される時点では、上述のとおりあくまでも復元されたものではあるものの、スペクトルは全ての帯域に渡って求まっている。すなわち、全ての小区画帯域におけるＭＤＣＴ係数が求まっている。よって、これまで符号化用帯域を明確にするために用いてきた、X(1、1)、・・・、X(1、q(1))、・・・、X(ωCRNGMAX、q(ωCRNGMAX)という表記の代わりに、低周波側からの通し番号につけかえて、X0、・・・、XM/2−1のような表記を用いることにする。ただし、ωCRNGMAXは、符号化用帯域に付された番号の最大値、すなわち、最も高周波側の符号化用帯域に付された番号であるとする。
【０２３３】
ステップＳ１４１１においては、ＭＤＣＴ係数X0、・・・、XM/2−1から、逆ＭＤＣＴにより、振幅制圧済かつ直流成分除去済の入力信号xBS、AC (fm、0)、・・・、xBS、AC (fm、M−1)が復元される。つまり、スペクトルが実時間領域の信号に変換される。fmは、フレームを特定するための変数である。
【０２３４】
これにより、図７（ｃ）に相当する状態まで、信号が復元されたことになる。
【０２３５】
既に述べたように、振幅制圧用ビットシフト数ShiftBit(fm)は記憶部９１２５に格納されている。そこで、ＣＰＵ９１２１は、ShiftBit(fm)を汎用レジスタにロードする（ステップＳ１４１３）。
【０２３６】
次に、ＣＰＵ９１２１は、xBS、AC (fm、0)、・・・、xBS、AC (fm、M−1)に、ShiftBit(fm)ぶんの左シフト演算を施すことにより、直流成分除去済の入力信号xAC (fm、0)、・・・、xAC (fm、M−1)を復元する（ステップＳ１４１５）。符号化側及び送信側の装置９１１１において振幅制圧が原理的には除算で行われたことに対応して、本ステップにて信号復元のために行っていることは、原理的には、乗算である。ただし、除数が2の累乗に限定されていたことから、乗数も2の累乗に限定される。よって、乗算といっても、ＣＰＵ９１２１が実際に行う演算は、単純な左シフト演算だけである。このように、本実施形態においては、除数及び乗数に2の累乗を使用するという考え方を、実施形態１におけるスペクトルに関する処理に用いるのみならず、実時間領域における処理にも応用することにより、ＣＰＵの演算の高速化又は演算の負担軽減の一助としている。
【０２３７】
これにより、図７（ｂ）に相当する状態まで、信号が復元されたことになる。かかる信号（デジタル信号）がＤ／Ａ変換され（図１２のステップＳ１２５１）、図１のスピーカ９１５３から再生音声が発せられる。
【０２３８】
なお、この発明は、上記実施形態に限定されず、種々の変形及び応用が可能である。上述のハードウェア構成やブロック構成、フローチャートは例示であって、限定されるものではない。
【０２３９】
例えば、図１に示される音声符号化兼復号装置９１１１として携帯電話を想定して説明したが、ＰＨＳ（Personal Handyphone System）や、ＰＤＡ（Personal Digital Assistants）、あるいは一般的なパーソナルコンピュータには、本発明を容易に適用することができる。すなわち、上記実施形態は説明のためのものであり、本願発明の範囲を制限するものではない。
【図面の簡単な説明】
【０２４０】
【図１】本発明の実施の形態に係る音声符号化兼復号装置の構成を示す図である。
【図２】音声スペクトルが、小区画帯域及び中区画帯域に属するＭＤＣＴ係数により表される様子を、模式的に示す図である。
【図３】中区画帯域毎に行われる、ＭＤＣＴ係数の最大値の検索、シフトビット数決定、及び、ビットシフト後のＭＤＣＴ係数、の計算の流れを示す図である。
【図４】中区画帯域毎の、ＭＤＣＴ係数の最大値と与えられたビット数の関係と、ビットシフトと、の一例を、模式的に示す図である。
【図５】ＭＤＣＴ係数が大区画帯域毎に異なる精度で再量子化される様子を模式的に示す図である。
【図６】本発明の実施形態１における、音声信号を符号化及び復号する手順を示す図である。
【図７】本発明の実施形態２における、入力音声信号の実時間領域における処理の様子を、模式的に示す図である。
【図８】本発明の実施形態２における、ダイナミックレンジの調整の流れを示す図である。
【図９】本発明の実施形態２における、符号化用帯域と、それについての優先順位付けの様子を、模式的に示す図である。
【図１０】本発明の実施形態２における、符号化用帯域への優先順位番号の割り当ての流れを示す図である。
【図１１】本発明の実施形態２における、符号化対象帯域の選択とエントロピ符号化の流れを示す図である。
【図１２】本発明の実施形態２における、音声信号を符号化及び復号する手順を示す図である。
【図１３】本発明の実施形態２における、フレーム毎に音声信号を復元する流れの前半を示す図である。
【図１４】本発明の実施形態２における、フレーム毎に音声信号を復元する流れの後半を示す図である。
【符号の説明】
【０２４１】
９１１１・・・音声符号化兼復号装置、９１２１・・・ＣＰＵ、９１２３・・・ＲＯＭ、９１２５・・・記憶部、９１３１・・・ＲＡＭ、９１３３・・・ハードディスク、９１４１・・・音声処理部、９１５１・・・マイクロフォン、９１５３・・・スピーカ、９１６１・・・無線通信部、９１６３・・・アンテナ、９１７１・・・操作キー入力内容処理部、９１７３・・・操作キー、９１８１・・・システムバス
【図１】
2008089999.tif 000003
【図２】
2008089999.tif 000004
【図３】
2008089999.tif 000005
【図４】
2008089999.tif 000006
【図５】
2008089999.tif 000007
【図６】
2008089999.tif 000008
【図７】
2008089999.tif 000009
【図８】
2008089999.tif 000010
【図９】
2008089999.tif 000011
【図１０】
2008089999.tif 000012
【図１１】
2008089999.tif 000013
【図１２】
2008089999.tif 000014
【図１３】
2008089999.tif 000015
【図１４】
2008089999.tif 000016