(57)【要約】   エンコーダにおいてインプリメントされ得るスペクトル分割の方法が開示されている。本方法は、各々の複数のスペクトル・サブバンドに対するビットの必要性の推定値を決定するステップを含む。これらの推定値は、その後、コスト関数を最小にすることによって、前記サブバンドを２つ以上の領域にグルーピングするために使用される。このコスト関数は、各々のサブバンドに対するビットの必要性の前記推定値に基づく。そして、前記推定値は、コード・ビットの必要性の推定値、および／または、各々のサブバンドに対する追加コード・ビットの必要性を含んでもよい。これらの推定値は多くの異なる方法で決定されてもよい。そして、多くの方法が開示されている。
2011501246.tif 000002
【特許請求の範囲】
【請求項１】
信号をエンコードするのに用いられるスペクトル分割の方法であって：
各々の複数のスペクトル・サブバンドに対するビットの必要性の推定値を特定するステップと；
各々の前記スペクトル・サブバンドに対するビットの必要性の前記推定値に基づいてコスト関数を最小にすることによって、前記スペクトル・サブバンドを複数の領域にグルーピングするステップと；
を有する方法。
【請求項２】
ビットの必要性の前記推定値は、
コード・ビットの必要性の推定値、および、
追加コード・ビットの必要性の推定値
のうち少なくとも一つを含む、請求項１記載の方法。
【請求項３】
前記コード・ビットの必要性の推定値は、
ハフマン・ツリーを使用してエンコードされる場合の、ビットの必要性の推定値を含み、かつ
前記追加コード・ビットの必要性の推定値は、ハフマン・テーブルにおいて示されない値をエンコードするためのビットの必要性の推定値を含む、
請求項２記載の方法。
【請求項４】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、かつ、
スペクトル・サブバンドに対する追加コード・ビットの必要性の前記推定値は、前記スペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とする追加コード・ビットの数を含む、
請求項２または３に記載の方法。
【請求項５】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、かつ、スペクトル・サブバンドに対する追加コード・ビットの必要性の前記推定値は、追加コード・ビットを必要とする前記スペクトル・サブバンドの中での周波数ビンの数を含む、
請求項２ないし４のうちいずれか１項記載の方法。
【請求項６】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、
スペクトル・サブバンドに対するコード・ビットの必要性の前記推定値は、いかなる追加コード・ビットをも除外した、前記スペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とするコード・ビットの数を含む、
請求項２ないし５のうちいずれか１項記載の方法。
【請求項７】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、
スペクトル・サブバンドに対するコード・ビットの必要性の前記推定値は、前記スペクトル・サブバンド中の周波数ビンの数を含む、
請求項２ないし６のうちいずれか１項記載の方法。
【請求項８】
前記スペクトル・サブバンドを複数の領域にグルーピングするステップは、
スペクトル・サブバンドの全ての可能な組合せに対する各々の領域のコスト関数を計算するステップと；
スペクトル・サブバンドの全ての可能な組合せに対して、各々の領域に対する前記コスト関数を全体のコスト関数のセットに結合するステップと；
最も低い全体のコスト関数を持つスペクトル・サブバンドの前記組合せを選ぶステップと；
を含む、請求項１ないし９のうちいずれか１項記載の方法。
【請求項９】
各々の領域に対する前記コスト関数は、
前記領域内のいかなるスペクトル・サブバンドも必要とする追加コード・ビットの最大数に、追加コード・ビットを必要とする前記領域内の周波数ビンの数を掛け合わせたもの；および、
前記領域内のいかなるスペクトル・サブバンドも必要とするコード・ビットの最大数に、前記領域内の周波数ビンの合計数を掛け合わせたもの、
のうちの１つを含む、請求項８記載の方法。
【請求項１０】
各々の領域に対する前記コスト関数は、
前記領域内のいかなるスペクトル・サブバンドも必要とする追加コード・ビットの最大数に、追加コード・ビットを必要とする前記領域内の周波数ビンの数を掛け合わせたもの；および、
前記領域内のいかなるスペクトル・サブバンドも必要とするコード・ビットの最大数に、前記領域内の周波数ビンの合計数を掛け合わせたもの、
の組合せを含む、請求項８記載の方法。
【請求項１１】
各々の前記領域に対するコードテーブルを選択するステップと；
前記領域に対する前記選択されたコードテーブルを使用して、各々の領域をエンコードするステップと；
を有する、請求項１ないし１０のうちいずれか１項記載の方法。
【請求項１２】
各々のコードテーブルは、ハフマン・テーブルを有する、請求項１１記載の方法。
【請求項１３】
前記信号は、オーディオ信号を有する、請求項１ないし１２のうちいずれか１項記載の方法。
【請求項１４】
削除
【請求項１５】
各々の複数のスペクトル・サブバンドに対するビットの必要性の推定値を少なくとも特定する手段と；
各々の前記スペクトル・サブバンドに対するビットの必要性の前記推定値に基づいてコスト関数を最小にすることによって、前記スペクトル・サブバンドを複数の領域にグルーピングする手段と；
を有するエンコーダ。
【請求項１６】
ビットの必要性の前記推定値は、
コード・ビットの推定値の必要性、および、
追加コード・ビットの必要性の推定値、
のうち少なくとも一つを含む、請求項１５記載のエンコーダ。
【請求項１７】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、かつ、スペクトル・サブバンドに対する追加コード・ビットの必要性の前記推定値は、追加コード・ビットを必要とする前記スペクトル・サブバンドの中での周波数ビンの数を含む、
請求項１６記載のエンコーダ。
【請求項１８】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、かつ、
スペクトル・サブバンドに対する追加コード・ビットの必要性の前記推定値は、前記スペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とする追加コード・ビットの数を含む、
請求項１６または１７に記載のエンコーダ。
【請求項１９】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、
スペクトル・サブバンドに対するコード・ビットの必要性の前記推定値は、いかなる追加コード・ビットをも排除した、前記スペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とするコード・ビットの数を含む、
請求項１６ないし１８のいずれか１項記載のエンコーダ。
【請求項２０】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、
スペクトル・サブバンドに対するコード・ビットの必要性の前記推定値は、前記スペクトル・サブバンド中の周波数ビンの数を含む、
請求項１６ないし１９のいずれか１項記載のエンコーダ。
【請求項２１】
前記スペクトル・サブバンドを複数の領域にグルーピングする手段は、
スペクトル・サブバンドの全ての可能な組合せに対する各々の領域のコスト関数を計算する手段と；
スペクトル・サブバンドの全ての可能な組合せに対して、各々の領域に対する前記コスト関数を全体のコスト関数の一組に結合する手段と；
最も低い全体のコスト関数を持つスペクトル・サブバンドの前記組合せを選ぶ手段と；
を含む、請求項１７記載のエンコーダ。
【請求項２２】
各々の領域に対する前記コスト関数は、
前記領域内のいかなるスペクトル・サブバンドも必要とする追加コード・ビットの最大数に、追加コード・ビットを必要とする前記領域内の周波数ビンの数を掛け合わせたもの；および、
前記領域内のいかなるスペクトル・サブバンドも必要とするコード・ビットの最大数に、前記領域内の周波数ビンの合計数を掛け合わせたもの、
のうち少なくとも一つに基づく、請求項２１記載のエンコーダ。
【発明の詳細な説明】
【技術分野】
【０００１】
本願発明は、エンコーダにおいてインプリメントされ得るスペクトル分割の方法に関する。
【背景技術】
【０００２】
ＭＰ３（ＭＰＥＧ−１層３）エンコーディング、およびデコーディングにおいて、スペクトルは、５７６の周波数ビンに分けられると考えられる。これらの周波数ビンはサブバンドにそれぞれグルーピングされ、かつ、このビンのサブバンドへのグループ化はＭＰ３仕様において定められている。サブバンドは、それ自身、『Ｂｉｇ  Ｖａｌｕｅｓ』、『Ｃｏｕｎｔ１』、および『Ｒｚｅｒｏ』と呼ばれる３つの領域にグルーピングされ、かつ、これらの領域のサイズは、特定のオーディオ信号に従って変化する。Ｂｉｇ  Ｖａｌｕｅｓは最低周波数ライン（ｌｉｎｅｓ）を示し、かつ、これらは全ての領域で最も高い精度で符号化される。Ｃｏｕｎｔ１は、より高い周波数ラインを示す。そして、これは、少ない数の値だけを使用してエンコードされる。そして、Ｒｚｅｒｏはエンコーダによって取り除かれる最も高い周波数を示す。それ故、デコーディングにおいて、これらの周波数ビンはゼロによって埋め込まれる。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
Ｂｉｇ  Ｖａｌｕｅｓ領域自体は、３つの領域（ｒｅｇｉｏｎ０、ｒｅｇｉｏｎ１、ｒｅｇｉｏｎ２）に分けられ、これらの３つの領域の各々は、特定のハフマン・テーブルを使用してエンコードされる。Ｂｉｇ  Ｖａｌｕｅｓの３つの領域へのこの分割は、ＭＰ３エンコーディングを実行するときに、通常は各々のグラニュール（ｇｒａｎｕｌｅ）に対して発生する。一部の既存のエンコーダ、例えばＬＡＭＥ（オープン・ソースＭＰ３エンコーダ）は、エンコードされるサブバンドの数（例えばＢｉｇ  Ｖａｌｕｅｓ領域の範囲内のサブバンドの数、またはそれらのいかなるデータをも有するサブバンドの数）に従って、これらの３つの領域間の境界を取得するために、ルックアップ・テーブルを使用する。このことは、実質的に計算を必要とせずに、エンコードされる。しかしながら、特定のオーディオ信号の統計を考慮に入れないため、信号エンコードの冗長性を有する結果となる。
【課題を解決するための手段】
【０００４】
ここでの概要は、選択された簡略化された形のコンセプトを導くために提供され、更なる詳細な説明は後述する。この概要は、主要な特長またはクレームされた内容の必須の特徴を特定することを目的とするものではない。しかも、クレームされた内容の範囲を決定する際に使用されることをも目的としない。
【０００５】
エンコーダにおいてインプリメントされ得るスペクトル分割の方法が記載されている。本方法は、各々の複数のスペクトル・サブバンドに対するビットの必要性（ｂｉｔ  ｒｅｑｕｉｒｅｍｅｎｔｓ）の推定値を決定するステップを有する。これらの推定値は、そして、コスト関数を最小にすることによってサブバンドを２つ以上の領域にグルーピングするために使用される。このコスト関数は、各々のサブバンドに対するビットの必要性の推定値に基づく。そしてこのビットの必要性の推定値は、コード・ビットの必要性の推定値、および／または、各々のサブバンドに対する追加コード・ビットの必要性を含んでもよい。これらの推定値は多くの異なる方法で決定されてもよく、かつ、多くの異なる方法が記載されている。
【０００６】
第１の態様は、信号をエンコードするために使用するスペクトル分割の方法であって、各々の複数のスペクトル・サブバンドに対するビットの必要性の推定値を特定するステップと、各々のスペクトル・サブバンドに対するビットの必要性の推定値に基づいて、コスト関数を最小にすることによって、スペクトル・サブバンドを複数の領域にグルーピングするステップと、を有する方法を提供する。
【０００７】
ビットの必要性の推定値は、コード・ビットの必要性の推定値、および追加コード・ビットの必要性の推定値の少なくとも一つを含んでもよい。コード・ビットの必要性の推定値は、ハフマン・ツリーを使用してエンコードされるときのビットの必要性の推定値を含んでもよく、そして、追加コード・ビットの必要性の推定値は、ハフマン・テーブルにおいて示されない値に対するエンコード値のビットの必要性の推定を含んでもよい。
【０００８】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを備えている。
【０００９】
スペクトル・サブバンドに対する追加コード・ビットの必要性の推定値は、スペクトル・サブバンドにおけるいかなる周波数ビンの最大値をもエンコードすることを必要とする追加コード・ビットの数、および追加コード・ビットを必要とするスペクトル・サブバンドの中の周波数ビンの数、の一つ以上を有してもよい。
【００１０】
スペクトル・サブバンドに対するコード・ビットの必要性の推定値は、追加コード・ビットを除外したスペクトル・サブバンドのいかなる周波数ビンの最大値をエンコードすることをも必要とするコード・ビットの数、およびスペクトル・サブバンドの周波数ビンの数、の一つ以上を有してもよい。
【００１１】
スペクトル・サブバンドを領域にグルーピングするステップは、スペクトル・サブバンドの全ての可能な組合せに対する各々の領域のコスト関数を計算するステップと、各々の領域に対するコスト関数を、スペクトル・サブバンドの全ての可能な組合せに対して、全体のコスト関数の一組に結合するステップと、最も低い全体のコスト関数を有するスペクトル・サブバンドの組合せを選ぶステップと、を有してもよい。
【００１２】
各々の領域に対するコスト関数は、その領域においていかなるスペクトル・サブバンドによっても必要とされる追加コード・ビットの最大数に、追加コード・ビットを必要とするその領域の周波数ビンの数を掛け合わせたもの、およびその領域においていかなるスペクトル・サブバンドによっても必要とされるコード・ビットの最大数に、その領域の周波数ビンの合計数を掛け合わせたもの、のうち１つまたは、これらの組合せを有してもよい。コスト関数が組合せを有する場合、この組合せは合計を有してもよい。
【００１３】
本方法は、各々の領域に対するコードテーブルを選ぶステップと、その領域に対して選択されたコードテーブルを使用して各々の領域をエンコードするステップと、を更に有してもよい。
【００１４】
各々のコードテーブルは、ハフマン・テーブルを有してもよい。
【００１５】
この信号は、オーディオ信号、例えばＭＰ３エンコーダを使用してエンコードされる信号を含んでもよい。
【００１６】
第２の態様は、実質的にスペクトル分割の方法を提供し、図２〜７に記載されている。
【００１７】
第３の態様は、各々の複数のスペクトル・サブバンドに対するビットの必要性の推定値を決定する手段と、各々のスペクトル・サブバンドに対するビットの必要性の推定値に基づいて、コスト関数を最小にすることによって、スペクトル・サブバンドを複数の領域にグルーピングする手段と、を有するエンコーダを提供する。
【００１８】
ビットの必要性の推定値は、コード・ビットの必要性の推定値と、追加コード・ビットの必要性の推定値のうちの少なくとも一つを有してもよい。コード・ビットの必要性の推定値は、ハフマン・ツリーを用いてエンコードされたときのビットの必要性の推定値を有してもよい。そして、追加コード・ビットの必要性の推定値は、ハフマン・テーブルによって示されないエンコード値のためのビットの必要性の推定値を有してもよい。
【００１９】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを有してもよい。
【００２０】
スペクトル・サブバンドに対する追加コード・ビットの必要性の推定値は、追加コード・ビットを必要とするスペクトル・サブバンド中の周波数ビンの数、およびスペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とする追加コード・ビットの数、の一つ以上を有してもよい。
【００２１】
スペクトル・サブバンドに対するコード・ビットの必要性の推定値は、いかなる追加コード・ビットも除いたスペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とするコード・ビットの数、およびスペクトル・サブバンドの周波数ビンの数、の一つ以上を有してもよい。
【００２２】
スペクトル・サブバンドを領域にグルーピングする手段は、スペクトル・サブバンドの全ての可能な組合せに対する各々の領域に対するコスト関数を決定する手段と、各々の領域に対するコスト関数をスペクトル・サブバンドの全ての可能な組合せに対する全体のコスト関数の一組に結合する手段と、最も低い全体のコスト関数を有するスペクトル・サブバンドの組合せを選ぶための手段と、を有してもよい。
【００２３】
各々の領域に対するコスト関数は、その領域においていかなるスペクトル・サブバンドによっても必要とされる追加コード・ビットの最大数に、追加コード・ビットを必要とするその領域の周波数ビンの数を掛け合わせたもの、およびその領域においていかなるスペクトル・サブバンドによっても必要とされるコード・ビットの最大数に、その領域の周波数ビンの合計数を掛け合わせたもの、の少なくとも一つに基づいてもよい。コスト関数は、上記２つのファクタを有してもよく、あるいは、それらの組合せを有してもよい。コスト関数が組合せを有する場合、この組合せは合計を有してもよい。
【００２４】
本願明細書において記載されている方法は、有形の記憶媒体上の機械可読形式のファームウェアまたはソフトウェアによって実行されてもよい。あるいは、方法ステップがいかなる適切な順序あるいは同時においても行われるよう、ソフトウェアはパラレルプロセッサまたは逐次処理装置上の実施に適するようにすることもできる。
【００２５】
第４の態様は、本願明細書において記載されている方法のいずれかを実行するために用意されるコンピュータ・プログラムを提供する。コンピュータ・プログラムは、有形の機械可読媒体に蓄積されてもよい。
【００２６】
このことはそのファームウェア、およびソフトウェアは有益であり、別個に流通する商品である。それはソフトウェアを含むことを目的とする。そして、ダム（ｄｕｍｂ）か標準のハードウェア上で実行されるか、それらを制御する。そして、所望の機能を実行する。それはまた、ハードウェアの構成を記述しまたは定義するソフトウェアを含むことを目的とする。例えば、シリコンチップの設計または所望の機能を実行するユニバーサルプログラマブルチップの構成に使用されるＨＤＬ（ハードウェア記述言語：ｈａｒｄｗａｒｅ  ｄｅｓｃｒｉｐｔｉｏｎ  ｌａｎｇｕａｇｅ）ソフトウェアが挙げられる。
【００２７】
当業者に明らかであれば、適切に、好適な特徴は結合されてもよい。そして、本発明の態様のいずれかと結合してもよい。
【００２８】
以下の図面を参照しながら、例として、本発明の実施例を以下に記載する。
【００２９】
共通参照番号は、類似した特徴を示すために、図の全体にわたって使用される。
【図面の簡単な説明】
【００３０】
【図１】ＭＰ３エンコーダの概要図である。
【図２】スペクトル分割の実施例の方法のフローチャートである。
【図３】サブバンドの周波数ビンの数を決定する実施例の方法、およびサブバンドの最大値をエンコードすることを必要とする追加ビット（ｌｉｎｂｉｔｓ）の最大の数のフローチャートを示す。
【図４】２つのサブバンドに分けられる周波数ビンの例の一組を示す概要図である。
【図５】更に詳細に、図２のステップのフローチャートを示している図の一つである。
【図６】ハフマン・ビットの必要性の評価を使用するスペクトル分割の実施例の方法のフローチャートである。ｌｉｎｂｉｔｓが必要である場合のｌｉｎｂｉｔの必要性の推定を示す。
【図７】図３において示される拡張として、パラメータＮ（ｉ）、Ｌ（ｉ）、およびｂＭ（ｉ）の値を決定する実施例の方法のフローチャートを示す。
【発明を実施するための形態】
【００３１】
［詳細な説明］
本発明の実施例の記載は、例示として記載されている。これらの実施例は、出願人が現在関知している最良の実施例の方法を示すものであるが、これが、本発明を実施するための唯一の方法であるわけではない。本願明細書は、実施例の機能、および実施例を実現しかつ作動させるステップのシーケンスを記載する。なお、同じまたは同様の機能、およびシーケンスは異なる実施例によって達成されてもよい。
【００３２】
図１は、入力が、フィルタバンク１０１、および音響心理学的なモデル１０２を、実質的に同時に通過するＭＰ３エンコーダの概要図を示す。音響心理学的なモデル１０２は、量子化、およびビット割当てにおいて使用される量子化レベルを含む一組のパラメータを出力する。要素１０３は量子化したサンプルを出力する。量子化されたサンプルは、ビット列フォーマット要素１０４に入力され、フォーマットされる。ここでは、ハフマン・テーブルを使用して符号化される。音響心理学的なモデルの使用によって、エンコーダは、認知可能な信号品質に影響を与えることなく、高レベルの圧縮を達成することを可能にする。この種の圧縮を実行する場合において、（例えば、量子化ステップサイズを調整することによって）、信号フレームは反復的にエンコードされ、かつ、目標ビットレートが達成されるまで、結果として生じるビットレートがチェック（ｄｅｔｅｒｍｉｎｅｄ）される。
【実施例】
【００３３】
図１は、ＭＰ３エンコーダの中での例示的な機能要素を示す。したがって、付加的な要素であってもよく、あるいは、より少ない要素であってもよいことは言うまでもない。さらに、要素は全体の効果を失うことなく、異なる方法で組み込まれてもよい。例えば、それらの全ては、シングルチップ中でインプリメントされてもよい。
【００３４】
オーディオ／ビデオ信号の統計は、周波数全体に変化するため、スペクトルをいくつかの領域に分け、かつ、各々の領域を（例えば、ビット列フォーマット要素１０４の中で）別にエンコードすることはしばしば有益である。Ｂｉｇ  Ｖａｌｕｅｓのサイズに基づいてＢｉｇ  Ｖａｌｕｅｓ領域を固定された方法でいくつかの領域に分けること（例えばＭＰ３の最高３つの領域）は、多くの処理パワーを必要とせずスペクトル分割の迅速な方法を提供する。しかしながら、各々の領域が単一のコードテーブル（例えばＭＰ３に対する単一のハフマン・テーブル）を使用してエンコードされるので、非効率的なエンコーディングに結果としてなってしまうことがある。
【００３５】
理想的には、Ｂｉｇ  Ｖａｌｕｅｓ領域は各々の領域のスペクトル値が類似した統計を有する領域に分けられなければならない。そうすると、各々の領域は類似した特徴（例えば周波数ビンの類似したレンジ）のサブバンドを含む。このことは、領域がより低いビットレートによって、および／またはより高い品質でエンコードされることを可能にする。最適解は、各々の領域の数のサブバンドのあらゆる可能な組合せを考慮すること、および、各々の組合せに対する実際のビットの数を取得することである。分割されたスペクトルに対する実際のビットの数を取得するために、各々の領域のスペクトル値は全ての可能なコードテーブルを使用してエンコードされる。このことは、最高のテーブルが選ばれるということである。これは、各々の領域に対して繰り返され、かつスペクトル分割は通常は各々のグラニュールに対して実行される。これは、冗長であり、プロセッサを酷使し、かつ、多くのアプリケーション（特にローパワー、および／または、リアルタイムアプリケーション）に対して非実用的である。
【００３６】
コードテーブル（これは信号をエンコードするために使用されてもよい）は、最も共通のサンプル値に対するコードを含んでもよい。そして、コード体系はテーブルの中で含まれない、より頻繁に発生しない値の符号化を容易にするためにエスケープコードを加えて提供してもよい。この種のコード体系において、テーブルの中の値は、テーブルおいて与えられたコードとして、エンコードされ、エンコードされた値は、値が正であるか負であるかどうかを指し示す符号ビットを含んでもよい。すなわち、以下の通りである。
Ｃｏｄｅ  ＋  Ｓｉｇｎ  ｂｉｔ
上式の『Ｃｏｄｅ』内のビットは、本明細書において、『コード・ビット』と呼ぶ。値がテーブルに無い場合、値は以下の通りに実効値を特定する追加コードに加えてエスケープコードを使用してエンコードされてもよい。すなわち、
Ｅｓｃａｐｅ  ｃｏｄｅ  ＋  Ａｄｄｉｔｉｏｎａｌ  ｃｏｄｅ  ＋  Ｓｉｇｎ  ｂｉｔ
追加コードは、所定の数のビット（例えば５ビット）であり、所定の数のビットであるため、追加コードはパルス符号変調（ＰＣＭ）コードと呼んでもよい。追加コードの中のこれらのビットは、本明細書において、『追加コード・ビット』と呼ぶ。ビットストリームがデコードされるときに、およびエスケープコードが発見された場合、そのエスケープパターンの後の所定の数のビットには、エスケープ値であってテーブル中のコードを使用してエンコードできない最初の値と、エンコードされたサンプルの値との間の差が含まれている。実施例において、符号化テーブルが最大値１４に対するコードを含む場合、エスケープ値は１５である。３５の値がエンコードされる場合、追加コードは値２０を与える（すなわち３５−１５）。
【００３７】
この種のコード体系は、５ビットの付加的なコード長を用いた以下の例のようになる。
【００３８】
【表１】
2011501246.tif 000003
コード体系を用いて、−３４から３４間の値がエンコードされ得る。値が０である場合、０だけが送信される。そして、値が１または２である場合、対応するコードの次に値が正であることを示す符号ビット（例えばゼロ）が送信される。値が３以上の場合、エスケープコード（１１１）が送信され、その次に５つのビットが続いて、その値と値３との差が与えられる（すなわちエスケープ値）。負の数は、同じ方法によって送信されるが、符号ビットが付加される。以下の表は、コード化された値の一部の例を示す。
【００３９】
【表２】
2011501246.tif 000004
上記のテーブルの例で示すように、エスケープコードおよび追加コードは、コードテーブルの範囲外の値をエンコードすることができる。これらの使用は、エスケープコードのオーバーヘッドおよび追加コードの定められたビット数の追加をもたらす。エンコーディングの効率を改善するために、エスケープコード、および追加コードを使用する必要性は最小化すべきである。
【００４０】
ＭＰ３アプリケーションに対しては、ハフマンコーディングが使用される。コード・ビットは、『ハフマン・ビット』と呼ばれ、追加コード・ビットは『ｌｉｎｂｉｔｓ』と呼ばれる。３０の異なるハフマン・テーブルが、使用され得る。各ハフマン・テーブルの各々のコードは２つの値を決定する。コードは、また、どちらか、または両方ともが、また、ｌｉｎｂｉｔｓを使用しているかどうか指し示す。エスケープコード、したがって、ｌｉｎｂｉｔｓは、いくつかの３０のハフマン・テーブルによって提供されるだけである。およびこれらのビットの数（それらが存在する場合）は、送信されるテーブル・インデックスによって決定される。
【００４１】
本願明細書において記載されている方法は、量子化されたＭＤＣＴ（修正離散コサイン変換：ｍｏｄｉｆｉｅｄ  ｄｉｓｃｒｅｔｅ  ｃｏｓｉｎｅ  ｔｒａｎｓｆｏｒｍ）値に適用されてもよい。他の実施例において、ＦＦＴ（高速フーリエ変換）のような、他の周波数分析法（ＭＤＣＴ以外）が、使用されてもよい。
【００４２】
ＭＰ３符号化、およびその用語（例えばｌｉｎｂｉｔｓ）は、例を示すためだけに用いられる。以下の記載における様々なスペクトル分割および記載された技術は、他の符号化技術に適用できる。例えば、イメージ／映像符号化において使用され得る可変長ランレングス（ＶＲＬ）コードが挙げられる。
【００４３】
図２は、（上記した）最適な解決策よりかなり少ない計算で足りるスペクトル分割の方法のフローチャートを示している。しかも、類似した（完全に近い）コード化効率を達成している。この方法によれば、各々のサブバンドのｌｉｎｂｉｔの必要性の推定値が決定される（ブロック２０）。そして、各々の領域のサブバンドの数の異なる組合せが検索される。そして、最も低いコストに結果としてなる組合せが、分割の結果として（ブロック２１）として選ばれる。コストは、（ブロック２０において決定されるように）少なくともｌｉｎｂｉｔの必要性の測定によって定義される。これらのステップの詳細については、後述する。後述するように、一部のサブバンドに対して、ｌｉｎｂｉｔの必要性の推定値は、ゼロであってもよい（すなわちｌｉｎｂｉｔｓが必要でない）。
【００４４】
スペクトル分割を実行して、最適コードテーブル（例えばハフマン・テーブル）が、各々の領域に対して選ばれる。テーブルは、領域の最大振幅を含むファクタに基づいて選択されてもよい。３０のハフマン・テーブルの中で、通常はその領域の特定の最大振幅に基づいて領域に対して使用されることができる、２または３のテーブルが存在する。
【００４５】
この方法は、特定の信号（例えばスペクトル・サブバンドの抽象的な統計）の特徴を考慮に入れる。そして、これはオーディオ信号であってもよい。そして、これはＭＰ３ストリームにエンコードされている。ｌｉｎｂｉｔの必要性の推定値は、サブバンドの各々から容易に抽出することができるパラメータであり、一部の状況においては、くつかの又は全部のデータは、符号化プロセスの以前の段階からエンコーダの中ですでに利用できる。
【００４６】
第１の実施例のインプリメンテーションにおいて、サブバンドｉに対するｌｉｎｂｉｔの必要性の推定値は、以下の２つのパラメータを有してもよい。すなわち、ｌｉｎｂｉｔｓを必要とするサブバンドｉの周波数ビン（またはサンプル）の数Ｎ（ｉ）、および、サブバンドの最大値をエンコードすることを必要とするｌｉｎｂｉｔｓの最大数Ｌ（ｉ）である。図３は、図４に記載されているＮ（ｉ）およびＬ（ｉ）の値を決定する実施例の方法のフローチャートを示す。図４は、２つのサブバンド、ｉ＝１、およびｉ＝２に分かれた周波数ビンの例の一組を示す。ここで、ｉはサブバンド・インデックスであり、これらのサブバンドの各々は４つの周波数ビン（０−３、および４−７）を有する。特定のサブバンドｉの周波数ビンのいずれかの絶対値の最大値は、Ｘ（ｉ）によって表され、図４の例においては、Ｘ（１）＝３０、およびＸ（２）＝１０である。
【００４７】
ｌｉｎｂｉｔｓが、必要であるかどうかは、ｌｉｎｂｉｔｓ（Ｙ−１）を使用せずにエンコードされることができる最大値によって決定される。ここで、Ｙは、エスケープ値である。ＭＰ３に対して、エスケープ値は１５として定義される（すなわちＹ＝１５であり、したがって、Ｙ−１＝１４である）。なお、ほかの応用に対しては、エスケープ値は異なる値を持ってもよい。Ｙ（すなわちＭＰ３に対する１５）以上の値は、ｌｉｎｂｉｔｓを必要とする。閾値（またはエスケープ値）Ｙは、図４の点線によって示される。
【００４８】
図４のサブバンド２のように、サブバンドの周波数ビンがいずれも、閾値Ｙを超えない場合（ブロック３１において『はい』）、そのサブバンドにおいていずれのサンプルもｌｉｎｂｉｔｓを必要としない（Ｎ（ｉ）＝０）。そして、必要なｌｉｎｂｉｔｓの数はゼロ（Ｌ（ｉ）＝０）である。
【００４９】
サブバンドの範囲内の周波数ビンのいずれかの最大値が閾値に等しいか、またはこれを上回る場合（Ｘ（ｉ）＞＝Ｙ）（ブロック３１において『いいえ』）、ｌｉｎｂｉｔｓを必要とする一部のサンプルが存在する（Ｎ（ｉ）＞０）。周波数ビンの持つ値が閾値に等しいかまたはこれを上回る値を有する数が、ｌｉｎｂｉｔｓ（Ｎ（ｉ））を必要とするサンプルの数となる。図４の実施例において、サブバンド１は、ｌｉｎｂｉｔｓ（周波数ビン２、および３）を必要とする２つのサンプルを有する（すなわちＮ（１）＝２）。
【００５０】
もし、Ｘ（ｉ）＝Ｙである場合（ブロック３１、および３２において『いいえ』）、ｌｉｎｂｉｔサイズはゼロ（すなわちＬ（ｉ）＝０）である。しかしながら、Ｘ（ｉ）＞Ｙの場合（ブロック３１において『いいえ』、かつブロック３２において『はい』）、必要とされるｌｉｎｂｉｔｓの最大数は、以下のように計算される。
Ｌ（ｉ）＝ｃｅｉｌ（ｌｏｇ２（Ｘ（ｉ）―Ｙ））
ここで、ｃｅｉｌは、最も近い整数に丸める関数（別名『ＣＥＩＬＩＮＧ』関数）である。
【００５１】
図３のフローチャートは、全てのサブバンドに対して、Ｎ（ｉ）およびＬ（ｉ）を算出することは必要でないことを示している。値は、ある状況においては、Ｘ（ｉ）の値の結果である。これは、前の段階からすでに既知であり、およびそれ故、算出することを必要としない。
【００５２】
これらのパラメータＮ（ｉ）およびＬ（ｉ）は、サブバンドを領域にグルーピングするために、（図５のブロック２１において更に詳細に示されるように）コスト関数で使用されてもよい。サブバンドｊから始まってサブバンドｋで終わる単一の領域に対してのコスト関数Ｂ（ｊ，ｋ）は、その領域のいずれかのサブバンドに必要とされるｌｉｎｂｉｔｓの最大数（ＬＭＡＸ）に、ｌｉｎｂｉｔｓを必要とするその領域のサンプル数を掛け合わせたものと定義される。すなわち、
【００５３】
【数１】
2011501246.tif 000005
ここで、
ＬＭＡＸ（ｊ、ｋ）＝ｍａｘ｛Ｌ（ｉ）｝ｆｏｒ  ｉ＝ｊ．．．ｋ
である。
【００５４】
領域毎の、このコスト関数Ｂ（ｊ，ｋ）の全ての可能なサブバンドの組合せ（ブロック２１ａに示す）（すなわちｊ，ｋが全ての可能な領域の組合せをカバーするよう変化させる場合）は、各々の可能な領域に対する全体のコスト関数は、個々の領域に対するコスト関数の合計（すなわち一例として、可能な領域の組合せ）として算出することができる。すなわち、
Ｂｏｖｅｒａｌｌ＝Ｂ（１，ｒ１）＋Ｂ（ｒ１＋１，ｒ２）＋・・・＋Ｂ（ｒｎ−１，Ｋ）
となる。
ここで、Ｋ個のサブバンドがｎ個の領域にグルーピングされており、値ｒｘは、どのサブバンドが各々の領域の中に含まれるかを特定する。ｒｘの可能な値、すなわち、
ｒ１＝１．．．（Ｋ−ｎ＋１）
ｒ２＝（ｒ１＋１）．．．（Ｋ−ｎ＋２）
．．．
ｒｎ−１＝（ｒｎ−２＋１）．．．（Ｋ−１）
で繰り返すことによって、各々の可能な領域の組合せに対する全体のコスト関数を計算することができる（ブロック２１ｂ）。そして、最小の全体のコスト関数としての領域組合せが選ばれる（ブロック２１ｃ）。その結果、スペクトルは、最小の全体のコスト関数の組合せに従って、領域に分割される。このような方法でスペクトル分割を実行して、最適なコードテーブル（例えばハフマン符号）を、各々の領域に対して選ぶことができる。
【００５５】
通常はＭＰ３に対して、３つの領域（ｎ＝３）に分けられ、２２個のサブバンド（Ｋ＝２２）が存在する。そして、上記の通り、各々の第１および第２の領域の最大サイズには制限がある。この例にとしては、
Ｂｏｖｅｒａｌｌ＝Ｂ（１，ｒ１）＋Ｂ（ｒ１＋１，ｒ２）＋．．．＋Ｂ（ｒｎ−１，２２）
ここで、ｒ１，ｒ２，ｒ３の値は、以下の値の全ての組合せで繰り返される。
ｒ１＝１．．．１６
ｒ２＝ｒ１＋１．．．ｍｉｎ（ｒ１＋８，２１）
ｒ３＝ｒ２＋１．．．２２
各々のサブバンドのビットの必要性は、上述の推定、および／または、パラメータの代わりに、または、組み合わせて利用され得る他の多くの推定が存在する。いくつかのオプションは以下に更に詳細に記載する。
【００５６】
第２の実施例のインプリメンテーションにおいて、コスト関数は、ハフマン・ビットの必要性の推定値に基づいてもよい。また、ｌｉｎｂｉｔｓは、必要である場合、ｌｉｎｂｉｔの必要性（これは、上記の通りに例えば決定されてもよい）の推定値に基づいてもよい。図６は、この種の実施例の方法のフローチャートである。周波数ビンの値のいずれもｌｉｎｂｉｔｓを必要とするに十分に大きくない場合、ハフマン・ビットの必要性の分析はそれらの特徴に基づいてサブバンドのグループ化を可能にする。
【００５７】
最初に、４つのパラメータが、各々のサブバンド（６１をブロック）に対して判断される
Ｎ（ｉ）＝サブバンドｉにおいてｌｉｎｂｉｔｓが必要な周波数ビンの数
Ｌ（ｉ）＝サブバンドｉにおける最大値をエンコードするのに必要とするｌｉｎｂｉｔｓの最大数
ｗ（ｉ）＝サブバンドにおける周波数ビン（またはサンプル）の数
ｂＭ（ｉ）＝そのｌｉｎｂｉｔｓを除外した最大値エンコードするために使用されるビット数
場合によっては、パラメータの一つ以上の値が固定されてもよい。例えば、ＭＰ３エンコーディングに対して、サブバンドの周波数ビンの数は、グラニュールベースで固定し、サンプル・レートが変化するようにする。その結果、ｗ（ｉ）の値は、通常、オーディオ・ファイルの全部に対して同じとなる。図４における実施例において、ｗ（１）＝４、およびｗ（２）＝４として示されている。加えて、あるパラメータは、エンコーダの前段階または他の要素から既知となっており、改めて計算する必要はない（例えば、一部のパラメータは、音響心理学的なモデルにおいて決定され得る）。さらにまた、後述するように、一部は、他の直接的な結果であり、全てのパラメータを算出することは必要ない。
【００５８】
図７は、パラメータＮ（ｉ）、Ｌ（ｉ）、およびｂＭ（ｉ）の値を決定する実施例方法のフローチャートを示し、これは、図３において既に説明したものの拡張である。
【００５９】
上述のように、特定のサブバンドｉのいずれかの周波数ビンの最大値の絶対値は、Ｘ（ｉ）によって表される。もし、Ｘ（ｉ）＜Ｙ（ブロック７１において『はい』）である場合、
ｂＭ（ｉ）＝ｃｅｉｌ（ｌｏｇ２Ｘ（ｉ））
となる。
【００６０】
しかしながら、Ｘ（ｉ）＞＝Ｙ（ブロック７１において『いいえ』、およびブロック７２において『はい』または『いいえ』、）である場合、そのｌｉｎｂｉｔｓを除外した最大値をエンコードするために使用されるビットの数は以下によって与えられた定数値となる。すなわち、
ｂＭ（ｉ）＝ｃｅｉｌ（ｌｏｇ２Ｙ）
ＭＰ３のアプリケーションにおいて、例えばＹ＝１５で、したがって、Ｘ（ｉ）＞＝Ｙである場合、以下のようになる。すなわち、
ｂＭ（ｉ）＝４
図４において示される実施例において、
Ｎ（１）＝２
Ｌ（１）＝ｃｅｉｌ（ｌｏｇ２（３０−１５））＝４
ｗ（１）＝４
ｂＭ（１）＝ｃｅｉｌ（ｌｏｇ２１５）＝４
Ｎ（２）＝０
Ｌ（２）＝０
ｗ（２）＝４
ｂＭ＝ｃｅｉｌ（ｌｏｇ２１０）＝４
となる。
【００６１】
４つのパラメータ（ブロック６０において決定した）は、領域毎の（ｐｅｒ−ｒｅｇｉｏｎ）コスト関数を生成するのに使用される。これは、推定された必要なハフマン・ビットの数と、推定された（もしあれば）必要なｌｉｎｂｉｔｓの数との組合せ（例えば合計）である。ｌｉｎｂｉｔｓ項は、上述の通りでもよい。すなわち、
【００６２】
【数２】
2011501246.tif 000006
あるいは、必要な数のｌｉｎｂｉｔｓの他のいかなる推定法（ｍｅａｓｕｒｅ）が使用されてもよい。
【００６３】
ハフマン・ビット推定値は、ｌｉｎｂｉｔｓを除外したその領域の周波数ビンのいずれかの最大値をエンコードすることを必要とするビットの数（ｂＭＡＸ）に、その領域の各々のサブバンドの周波数ビン（またはサンプル）の数の合計を掛け合わせることによって決定されてもよい。この項は、以下のようになる。
【００６４】
【数３】
2011501246.tif 000007
ここで、ｂＭＡＸ（ｊ，ｋ）＝ｍａｘ｛ｂＭ（ｉ）｝  ｆｏｒ  ｉ＝ｊ．．ｋ
である。
【００６５】
サブバンドｊから始まってサブバンドｋまでの単一の領域のコスト関数Ｂ（ｊ，ｋ）は、以下の２つの項の合計となる。
【００６６】
【数４】
2011501246.tif 000008
ここで：
ＬＭＡＸ（ｊ，ｋ）＝ｍａｘ｛Ｌ（ｉ）｝  ｆｏｒ  ｉ＝ｊ．．．ｋ
であり、かつ
ｂＭＡＸ（ｊ，ｋ）＝ｍａｘ｛ｂＭ（ｉ）｝  ｆｏｒ  ｉ＝ｊ．．ｋ
である。
【００６７】
図４の例を用いると以下のようになる。
【００６８】
【数５】
2011501246.tif 000009
上記の、全ての可能な領域毎に対するコスト関数Ｂ（ｊ，ｋ）を使用することにより、すなわちｊ，ｋを全ての可能なサブバンドの組合せをカバーするよう変化させる場合、各々の可能な領域の組合せに対する全体のコスト関数は個々の領域に対するコスト関数の合計として（上記のように）算出することができる。すなわち、可能な領域の組合せの一例として以下のようになる。
Ｂｏｖｅｒａｌｌ＝Ｂ（１，ｒ１）＋Ｂ（ｒ１＋１，ｒ２）＋．．．＋Ｂ（ｒｎ−１，Ｋ）
ここで、Ｋ個のサブバンドがｎ個の領域にグルーピングされており、かつ値ｒｘはどのサブバンドが各々の領域の中に含まれるかを決定する。
ｒｘの可能な値、すなわち、
ｒ１＝１．．．（Ｋ−ｎ＋１）
ｒ２＝（ｒ１＋１）．．．（Ｋ−ｎ＋２）
．．．
ｒｎ−１＝（ｒｎ−２＋１）．．．（Ｋ−１）
で繰り返すことによって、各々の可能な領域の組合せに対する全体のコスト関数を計算することができる。そして、最小の全体のコスト関数としての領域組合せが選ばれる（ブロック６１）。すなわち、
【００６９】
【数６】
2011501246.tif 000010
ここで、ｒｘは、領域ｘの最後のサブバンドのインデックスであって、
【００７０】
【数７】
2011501246.tif 000011
は、各々の領域の結果として生じる境界を含んでいるベクトルである。第１の領域（ｘ＝１）は、サブバンド１から始まり、かつ最後の領域（ｘ＝Ｋ）は、サブバンドＫで終わる。この方法を使用して達成される結果、およびこの特定のコスト関数について以下説明する。
【００７１】
この第２の実施例のインプリメンテーションは、ハフマン・ビットの必要性の推定値、および、ｌｉｎｂｉｔが必要な場合、ｌｉｎｂｉｔの必要性の推定値の組合せを使用するが、更なるインプリメンテーションにおいては、ハフマン・ビットの必要性（すなわちコード・ビットの必要性）の推定値だけは使用されてもよい。上記の方法を用いた場合、いかなる領域の最小サイズも、１つのサブバンドである。もちろん、特定の用途において、更に領域サイズを制限する制約があってもよい。たとえば、ＭＰ３においては、第１の、および第２の領域のサイズを通信するために利用できるビットは少ないため、これらの領域の最大サイズは制限される。第３の領域が全ての残留するサブバンドを有するため、ＭＰ３の仕様は第３の領域に対するこの種の最大サイズの制限はない。
【００７２】
更なる実施例のインプリメンテーションにおいて、その領域のサブバンドのいずれかにおいて必要なｌｉｎｂｉｔｓの最大数（ＬＭＡＸ）が、コスト関数として使用されてもよい。すなわち、
Ｂ（ｊ，ｋ）＝ＬＭＡＸ（ｊ，ｋ）
であり、ここで、
ＬＭＡＸ（ｊ，ｋ）＝ｍａｘ｛Ｌ（ｉ）｝  ｆｏｒ  ｉ＝ｊ．．．ｋ
である。
【００７３】
他のインプリメンテーションにおいて、コスト関数はまた、その領域の周波数ビンのいずれかに対する最大値をエンコードすることを必要とするビットの数（ｂＭＡＸ）を含んでもよい。そうすると、コスト関数は以下を含む。
Ｂ（ｊ，ｋ）＝ｂＭＡＸ（ｊ，ｋ）＋ＬＭＡＸ（ｊ，ｋ）
ここで：
ＬＭＡＸ（ｊ，ｋ）＝ｍａｘ｛Ｌ（ｉ）｝  ｆｏｒ  ｉ＝ｊ．．．ｋ
であり、かつ
ｂＭＡＸ（ｊ，ｋ）＝ｍａｘ｛ｂＭ（ｉ）｝  ｆｏｒ  ｉ＝ｊ．．ｋ
である。
【００７４】
他の実施例のインプリメンテーションにおいて、ｌｉｎｂｉｔの必要性の推定値は、必要なｌｉｎｂｉｔｓの最大数Ｌ（ｉ）の代わりに、必要なｌｉｎｂｉｔｓの平均数または固定した値を使用してもよい。この種の実施例における領域毎のコストは、
【００７５】
【数８】
2011501246.tif 000012
となる。ここでＬは、所定のパラメータ（例えば定数）である。Ｌの値は、ｌｉｎｂｉｔの使用に対する、周波数ビン毎のペナルティー（ｐｅｒ  ｆｒｅｑｕｅｎｃｙ  ｂｉｎ  ｐｅｎａｌｔｙ）と考えることができる。更なる実施例において、ｌｉｎｂｉｔの必要性のこの推定は、（例えば図６を使用して上述した）ハフマン・ビットの項と結合されてもよい。すなわち、
【００７６】
【数９】
2011501246.tif 000013
更なるバリエーションにおいて、ｂＭＡＸ（ｊ，ｋ）の値は、定数値ｂｃｏｎｓｔと置き換えてもよい。すなわち、
【００７７】
【数１０】
2011501246.tif 000014
実施例において、ｂｃｏｎｓｔは、ｃｅｉｌ（ｌｏｇ２Ｙ）と置いてもよい。なお、ｗ（ｉ）は、通常、固定されるため、この種の状況においてはコスト関数におけるハフマン・ビット推定値の項の利点は制限されるであろう。しかしながら、多くのサブバンドが除外される場合、例えばそれらのサブバンドにおけるオーディオが完全にマスキングされる場合、このことは有利であり得る。
【００７８】
更なる実施例のインプリメンテーションにおいて、ｌｉｎｂｉｔの必要性の推定値は、サブバンドがｌｉｎｂｉｔｓを使用するかどうかの判定であってもよい。図４において示される実施例において、第１のサブバンドは、１５と等しいかまたはこれを上回る２つの値（周波数ビン２、および３）があるため、ｌｉｎｂｉｔｓを必要とするが、第２のサブバンドは、１５と等しいかまたはこれを上回る値がないため、ｌｉｎｂｉｔｓを必要としない。この種の実施例において、パラメータ１は、ｌｉｎｂｉｔを必要とすることを表し、パラメータがゼロの場合、ｌｉｎｂｉｔを必要としないことを表す。すなわち、
Ｌｉｎｂｉｔｓ（ｉ）＝サブバンドｉにおけるｌｉｎｂｉｔの必要性
Ｌｉｎｂｉｔｓ（１）＝１
Ｌｉｎｂｉｔｓ（２）＝０
この例では、サブバンドｋで始まりサブバンドｊで終わる領域に対するコスト関数Ｂ（ｊ，ｋ）は、以下を含む。
【００７９】
【数１１】
2011501246.tif 000015
ここでａは、あらかじめ定められたパラメータ（例えば定数）である。この値ａは、ｌｉｎｂｉｔの使用に対するサブバンド毎のペナルティー（ｐｅｒ  ｓｕｂ−ｂａｎｄ  ｐｅｎａｌｔｙ）と考えられる。
【００８０】
更なる実施例のインプリメンテーションにおいて、ビットの必要性の推定値は、周波数ビン毎の推定された平均符号長を含んでもよい。例えば、必要なハフマン・ビット、およびいかなる必要なｌｉｎｂｉｔｓの推定値である。
【００８１】
スペクトル分割は、ファイル全体またはデータ・グループに対して実行されてもよいかまたは、ファイルまたはデータ・グループの各々の部分に対して実行されてもよい。ＭＰ３エンコーディングの実施例において、スペクトル分割は、グラニュールベース（ｐｅｒ−ｇｒａｎｕｌｅ  ｂａｓｉｓ）で実行されてもよい。
【００８２】
ＭＰ３アプリケーションでは、検索（ブロック２１または６１）は、全てのサーチ領域を通じて実行することができるが、ほかの応用では、サーチ領域は、あまりに大きいことがある（例えば、その理由は、ｎおよび／またはＫが大きいためである）。一部のアプリケーションにおいては、最初に粗い検索を実行すること（ブロック２１または６１）が有益であることがある。例えば、傾向を判断しかつこのことにより解決策を捜すために、サブバンドの、より粗い組合せを使用する。実施例において、値ｒｘが２回または５回のステップで最初に繰り返されてもよい。検索を狭くし、１回のステップで小さい検索の領域で、ｒｘが繰り返されるようにする。他の例では、先行フレームに対して取得された分割が使用されてもよい。そして、計算の複雑性を減らすために、最初の分割がこれらの値から限られた偏移だけとしてもよい。
【００８３】
上述の方法の算出の多くは、２を底とした対数の算出を含む。この種の計算は、数値の符号ビット（ｓｉｇｎ  ｂｉｔ）の数を検出するように設計されている命令を使用するＤＳＰ（デジタルシグナルプロセッサ）においてインプリメントされてもよい（例えば、数の正規化または固定小数点から浮動小数点への変換）。数値の符号ビットの数は、数値を正規化する際のポジションの数（このことは、あるいは、小数部の桁が移動する位置の数であると考えることができる）、あるいは、正規化浮動小数点数の指数と定義できる。この種の命令の例は、『ＳＩＧＮＤＥＴ』（ＣＳＲ社によって使用される）、『ＥＸＰ』（アナログ・デバイセズによって使用される）、および『ＮＯＲＭ』（テキサス・インスツルメンツによって使用される）を含む。この種の命令は、以下の結果を返す。
【００８４】
【数１２】
2011501246.tif 000016
ここで、ｚは、プロセッサの精度であり、
【００８５】
【数１３】
2011501246.tif 000017
は、負の無限大方向への丸めを意味する。
【００８６】
この種の命令を使用することにより、以下、パラメータＬ（ｉ）、およびｂＭ（ｉ）の推定値は、ＤＳＰに対して、以下のように、ほぼインプリメントすることができる
Ｌ（ｉ）＝ａ−ＳＩＧＮＤＥＴ（Ｘ（ｉ）−Ｙ）
ｂＭ（ｉ）＝ｂ−ＳＩＧＮＤＥＴ（Ｘ（ｉ））  Ｘ（ｉ）＜Ｙの場合
ｂＭ（ｉ）＝ｂ−ＳＩＧＮＤＥＴ（Ｙ）  Ｘ（ｉ）＜Ｙの場合
ここで、ａおよびｂは、予め定められたパラメータ（例えば定数）である。命令『ＳＩＧＮＤＥＴ』（および他のＤＳＰ製造業者によって使用される同じ関数）自体は公知であり、それは正規化ために使用される命令であり、これは、この命令の新規なアプリケーションである。
【００８７】
上述の方法は、最適な解法よりも、より小さいＭＩＰＳでよく、スペクトル分割を完全に近い形で達成する。他のアルゴリズムと比較してこれらの方法は、結果として得られるビットレートの約５％を節約する。下記でテーブルは、以下のコスト関数の活用によって達成される一部の結果を示す。
【００８８】
【数１４】
2011501246.tif 000018
ここで：
ＬＭＡＸ（ｊ，ｋ）＝ｍａｘ｛Ｌ（ｉ）｝  ｆｏｒ  ｉ＝ｊ．．．ｋ
であり、かつ
ｂＭＡＸ（ｊ，ｋ）＝ｍａｘ｛ｂＭ（ｉ）｝  ｆｏｒ  ｉ＝ｊ．．ｋ
である。
【００８９】
本方法は、１３，５１１のＭＰ３フレーム（ほぼ５分５３秒）によってテストされた。ここで、各々のフレームは、４つのグラニュールを持ち、各々のグラニュールは３つの領域に再分割されている（ｎ＝３、Ｋ＝２２）。名目上のビットレートは、１６０ｋｂｐｓである。
【００９０】
【表３】
2011501246.tif 000019
これらの結果は、提案された方法を使用した場合、ビットレートの増加が最適解と比較して小さいことを示す。この小さいビットレートの増加は同時に、４３倍以上の速度の改善をもたらす。事実、エンコーダは、３０ＭＩＰＳを使用する。最適解の大きいオーバーヘッドは、大部分のアプリケーションでフィージブルではない。テーブル索引アプローチと比較して、ビットレートの増加は非常により小さい。その理由は、テーブル索引アプローチは信号の冗長性をエンコードするからである。
【００９１】
ＭＰ３仕様は、領域の数を３つに制限し、かつ各々の最初の２つの領域においてサブバンドの数に対する規制を課しているが、本方法は、この種の制約、および規制が適用された場合に対しても、用いられてもよい。本方法は、オーディオ信号（例えば、ＭＰ３またはＡＡＣ（Ａｄｖａｎｃｅｄ  Ａｕｄｉｏ  Ｃｏｄｉｎｇ）、ビデオ信号または他のシグナル種別（例えばマルチメディアの信号）のエンコーディングに適用されてもよい。
【００９２】
上記の例は、サブバンド境界が仕様において定められるＭＰ３オーディオ・エンコーディングに関するものであるが、これは例として取り上げたものである。本願明細書において記載されている方法は、信号の任意のタイプのエンコード技術に適用してもよい（例えばＡＡＣ）。そして、サブバンドは、いかなる知覚的に意味がある周波数分割にマッチしてもよい。
【００９３】
さらに、本願明細書において記載されている方法は、結果として生じる領域毎にハフマン・テーブルを使って符号化し、ＭＰ３アプリケーションに対するＢｉｇ  Ｖａｌｕｅｓ領域のスペクトル分割に対して使用されてもよいが、さらに、本方法は、さらに広く適用できる。本願明細書に記載されている技術はスペクトルを類似した統計を有する領域に分割するために使用されてもよい。そして、この分割は、いかなる方法においても、およびいかなるアプリケーションに対しても使用してもよい。例えば、スペクトルは、処理／分析（例えば音声認識）の他方式に対して分割されてもよい。上述の方法は、ＭＰ３エンコーディングにまたはエンコーディングのためのスペクトル分割に限られない。
【００９４】
当業者にとって明らかであるように、求められる効果を失うことなく、本願明細書において与えられたいかなる範囲もまたはデバイス値も、拡張されてもよく、または、変更されてもよい。
【００９５】
上述の利点、および効果は、一実施例に対するものでもよく、あるいはいくつかの実施例に対するものでもよいと理解される。１つのアイテムの参照は、それらのアイテムの一つ以上にも関連することは、更に理解される。
【００９６】
あるいは、本願明細書において記載されている方法のステップは、必要に応じて、いかなる適切な順番でも、あるいは、適切であれば同時にも実行される。加えて、個々のブロックは、本願明細書において記載されている内容の趣旨および範囲から逸脱することなく、方法のいずれかから削除されてもよい。上述の実施例のいずれかの態様は、得られる効果を失うことなく、更なる実施例に記載されている他の実施例のいずれかの態様と結合されてもよい。
【００９７】
上記の好ましい実施例の詳細な説明は、例として与えられているものであり、かつ、さまざまな修正が当業者によってなされてもよいことが、理解される。
【図１】
2011501246.tif 000020
【図２】
2011501246.tif 000021
【図３】
2011501246.tif 000022
【図４】
2011501246.tif 000023
【図５】
2011501246.tif 000024
【図６】
2011501246.tif 000025
【図７】
2011501246.tif 000026
【手続補正書】
【提出日】平成22年5月7日(2010.5.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
信号をエンコードするのに用いられるスペクトル分割の方法であって：
各々の複数のスペクトル・サブバンドに対するビットの必要性の推定値を特定するステップと；
各々の前記スペクトル・サブバンドに対するビットの必要性の前記推定値に基づいてコスト関数を最小にすることによって、前記スペクトル・サブバンドを複数の領域にグルーピングするステップと；
を有する方法。
【請求項２】
ビットの必要性の前記推定値は、
コード・ビットの必要性の推定値、および、
追加コード・ビットの必要性の推定値
のうち少なくとも一つを含む、請求項１記載の方法。
【請求項３】
前記コード・ビットの必要性の推定値は、
ハフマン・ツリーを使用してエンコードされる場合の、ビットの必要性の推定値を含み、かつ
前記追加コード・ビットの必要性の推定値は、ハフマン・テーブルにおいて示されない値をエンコードするためのビットの必要性の推定値を含む、
請求項２記載の方法。
【請求項４】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、かつ、
スペクトル・サブバンドに対する追加コード・ビットの必要性の前記推定値は、前記スペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とする追加コード・ビットの数を含む、
請求項２または３に記載の方法。
【請求項５】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、かつ、スペクトル・サブバンドに対する追加コード・ビットの必要性の前記推定値は、追加コード・ビットを必要とする前記スペクトル・サブバンドの中での周波数ビンの数を含む、
請求項２ないし４のうちいずれか１項記載の方法。
【請求項６】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、
スペクトル・サブバンドに対するコード・ビットの必要性の前記推定値は、いかなる追加コード・ビットをも除外した、前記スペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とするコード・ビットの数を含む、
請求項２ないし５のうちいずれか１項記載の方法。
【請求項７】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、
スペクトル・サブバンドに対するコード・ビットの必要性の前記推定値は、前記スペクトル・サブバンド中の周波数ビンの数を含む、
請求項２ないし６のうちいずれか１項記載の方法。
【請求項８】
前記スペクトル・サブバンドを複数の領域にグルーピングするステップは、
スペクトル・サブバンドの全ての可能な組合せに対する各々の領域のコスト関数を計算するステップと；
スペクトル・サブバンドの全ての可能な組合せに対して、各々の領域に対する前記コスト関数を全体のコスト関数のセットに結合するステップと；
最も低い全体のコスト関数を持つスペクトル・サブバンドの前記組合せを選ぶステップと；
を含む、請求項１ないし９のうちいずれか１項記載の方法。
【請求項９】
各々の領域に対する前記コスト関数は、
前記領域内のいかなるスペクトル・サブバンドも必要とする追加コード・ビットの最大数に、追加コード・ビットを必要とする前記領域内の周波数ビンの数を掛け合わせたもの；および、
前記領域内のいかなるスペクトル・サブバンドも必要とするコード・ビットの最大数に、前記領域内の周波数ビンの合計数を掛け合わせたもの、
のうちの１つを含む、請求項８記載の方法。
【請求項１０】
各々の領域に対する前記コスト関数は、
前記領域内のいかなるスペクトル・サブバンドも必要とする追加コード・ビットの最大数に、追加コード・ビットを必要とする前記領域内の周波数ビンの数を掛け合わせたもの；および、
前記領域内のいかなるスペクトル・サブバンドも必要とするコード・ビットの最大数に、前記領域内の周波数ビンの合計数を掛け合わせたもの、
の組合せを含む、請求項８記載の方法。
【請求項１１】
各々の前記領域に対するコードテーブルを選択するステップと；
前記領域に対する前記選択されたコードテーブルを使用して、各々の領域をエンコードするステップと；
を有する、請求項１ないし１０のうちいずれか１項記載の方法。
【請求項１２】
各々のコードテーブルは、ハフマン・テーブルを有する、請求項１１記載の方法。
【請求項１３】
前記信号は、オーディオ信号を有する、請求項１ないし１２のうちいずれか１項記載の方法。
【請求項１４】
各々の複数のスペクトル・サブバンドに対するビットの必要性の推定値を少なくとも特定する手段と；
各々の前記スペクトル・サブバンドに対するビットの必要性の前記推定値に基づいてコスト関数を最小にすることによって、前記スペクトル・サブバンドを複数の領域にグルーピングする手段と；
を有するエンコーダ。
【請求項１５】
ビットの必要性の前記推定値は、
コード・ビットの推定値の必要性、および、
追加コード・ビットの必要性の推定値、
のうち少なくとも一つを含む、請求項１４記載のエンコーダ。
【請求項１６】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、かつ、スペクトル・サブバンドに対する追加コード・ビットの必要性の前記推定値は、追加コード・ビットを必要とする前記スペクトル・サブバンドの中での周波数ビンの数を含む、
請求項１５記載のエンコーダ。
【請求項１７】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、かつ、
スペクトル・サブバンドに対する追加コード・ビットの必要性の前記推定値は、前記スペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とする追加コード・ビットの数を含む、
請求項１５または１６に記載のエンコーダ。
【請求項１８】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、
スペクトル・サブバンドに対するコード・ビットの必要性の前記推定値は、いかなる追加コード・ビットをも排除した、前記スペクトル・サブバンドのいかなる周波数ビンの最大値をもエンコードすることを必要とするコード・ビットの数を含む、
請求項１５ないし１７のいずれか１項記載のエンコーダ。
【請求項１９】
各々のスペクトル・サブバンドは、少なくとも一つの周波数ビンを含み、
スペクトル・サブバンドに対するコード・ビットの必要性の前記推定値は、前記スペクトル・サブバンド中の周波数ビンの数を含む、
請求項１５ないし１８のいずれか１項記載のエンコーダ。
【請求項２０】
前記スペクトル・サブバンドを複数の領域にグルーピングする手段は、
スペクトル・サブバンドの全ての可能な組合せに対する各々の領域のコスト関数を計算する手段と；
スペクトル・サブバンドの全ての可能な組合せに対して、各々の領域に対する前記コスト関数を全体のコスト関数の一組に結合する手段と；
最も低い全体のコスト関数を持つスペクトル・サブバンドの前記組合せを選ぶ手段と；
を含む、請求項１６記載のエンコーダ。
【請求項２１】
各々の領域に対する前記コスト関数は、
前記領域内のいかなるスペクトル・サブバンドも必要とする追加コード・ビットの最大数に、追加コード・ビットを必要とする前記領域内の周波数ビンの数を掛け合わせたもの；および、
前記領域内のいかなるスペクトル・サブバンドも必要とするコード・ビットの最大数に、前記領域内の周波数ビンの合計数を掛け合わせたもの、
のうち少なくとも一つに基づく、請求項２０記載のエンコーダ。
【国際調査報告】
2011501246.tif 000027
2011501246.tif 000028