高速格子ベクトル量子化
【課題】オーディオコーデックの効率を改善することを目的とする。
【解決手段】オーディオを符号化及びデコードする方法、装置及びシステムが開示される。オーディオ信号のデジタルサンプルは時間ドメインから周波数ドメインに変換される。結果の変換係数は、高速格子ベクトル量子化器で符号化される。量子化器は高レート量子化器と低レート量子化器とを有する。高レート量子化器は、格子を切り捨てる方式を有する。低レート量子化器は、テーブル型検索方法を有する。低レート量子化器はまた、テーブル型インデックス方式を有してもよい。高レート量子化器は、変換係数の量子化インデックスをHuffman符号化し、量子化/符号化効率を改善することを更に有してもよい。
【解決手段】オーディオを符号化及びデコードする方法、装置及びシステムが開示される。オーディオ信号のデジタルサンプルは時間ドメインから周波数ドメインに変換される。結果の変換係数は、高速格子ベクトル量子化器で符号化される。量子化器は高レート量子化器と低レート量子化器とを有する。高レート量子化器は、格子を切り捨てる方式を有する。低レート量子化器は、テーブル型検索方法を有する。低レート量子化器はまた、テーブル型インデックス方式を有してもよい。高レート量子化器は、変換係数の量子化インデックスをHuffman符号化し、量子化/符号化効率を改善することを更に有してもよい。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、同日付で出願された“Dual-Transform Coding of Audio Signals”という題の同時継続の出願人同一の米国特許出願第11/580,629(管理番号No.199-0418US)に関する。この出願の内容が参照として取り込まれる。
【0002】
本発明は、概してオーディオ信号をエンコード及びデコードすることに関し、特に高速格子ベクトル量子化を使用して約22kHzまでのオーディオ帯域でオーディオ信号をエンコード及びデコードすることに関する。
【背景技術】
【0003】
オーディオ信号処理は、音声信号を生成し、又はこのような信号から音声を再生する多くのシステムで利用されている。デジタル信号プロセッサ(DSP:digital signal processor)の進展で、多くの信号処理機能がデジタルで実行される。これを行うために、オーディオ信号は音響波から生成され、デジタルデータに変換され、所望の効果について処理され、アナログ信号に逆変換され、音響波として再生される。
【0004】
アナログオーディオ信号は、典型的にはマイクロフォンによる音響波(音声)から生成される。アナログオーディオ信号の振幅は特定の周波数でサンプリングされ、振幅は振幅を表す数に変換される。典型的なサンプリング周波数は、約8kHz(すなわち毎秒8000回のサンプリング)、16kHz〜196kHz又はこの間の何らかである。デジタル化音声の品質に応じて、音声の各サンプルは8ビット〜128ビット又はこの間の何らかを使用してデジタル化され得る。高品質の音声を保つために、多数のビットが必要になり得る。例えば、非常にハイエンドでは、196kHzのサンプリングレートでサンプル毎に128ビットで1秒の音声を表すために、128ビット×192kHz=24Mbit=3MBが必要になり得る。3分(180秒)の典型的な曲では、540MBになる。ローエンドでは、典型的な電話会話で、音声は8kHzでサンプリングされ、サンプル毎に8ビットでデジタル化される。これは依然として8kHz×8ビット=64kビット/秒=8kB/秒になる。デジタル化音声データを使用、格納及び転送しやすいようにするために、典型的には、音声品質を低減することなく、サイズを低減するようにエンコードされる。これらが再生されようとするときに、元のデジタル化データを復元するようにデコードされる。
【0005】
オーディオ信号をエンコード又はデコードし、デジタルフォーマットでサイズを低減するための様々な方法が示唆されている。信号をエンコードしてデコードするプロセッサ又は処理モジュールは、一般的にコーデックと呼ばれている。あるものは可逆(すなわち、デコードされた信号が元のものと全く同じになる)である。あるものは不可逆(すなわち、デコードされた信号が元の信号からわずかに異なる)である。通常では、不可逆コーデックは、可逆コーデックより高い圧縮を実現し得る。不可逆コーデックは、人間の聴力のいくつかの特徴を利用し、人間により容易に知覚できないいくつかの音声を破棄し得る。ほとんどの人間にとって、約20Hz〜約20kHzの間のオーディオスペクトル内の音声のみが知覚できる。この範囲外の周波数の音声は、ほとんどの人間にとって知覚されない。従って、人間の聴取者に音声を再生するときに、範囲外の音声を再生することは、知覚音声品質を改善しない。人間の聴取者用のほとんどのオーディオシステムでは、範囲外の音声は再生されない。典型的な公衆電話システムでは、約300Hz〜約3000Hz内の周波数のみが2つの電話セットの間で通信される。このことはデータ伝送を低減する。
【0006】
音楽をエンコード/デコードする1つの一般的な方法は、MP3コーデックで使用される方法である。典型的な音楽CDは約40分の音楽を格納することができる。同じ音楽が同程度の音響品質でMP3エンコーダでエンコードされると、このようなCDは10〜16倍多くの音楽を格納し得る。
【0007】
“7kHz audio-coding within 64kbit/s”という題のITU-T(International Telecommunication Union Telecommunication Standardization Sector)のRecommendation G.722(1998)は、64kbit/s内で7kHzのオーディオ符号化を行う方法を記載している。この文献は参照として取り込まれる。ISDN回線は64kbit/sでデータを送信する容量を有する。この方法は、基本的にISDN回線を使用する電話ネットワークを通じたオーディオの帯域を3kHzから7kHzに増加させる。知覚されるオーディオ品質は改善される。この方法は既存の電話ネットワークを通じて利用可能な高品質のオーディオを生成するが、典型的には電話会社からのISDNサービスを必要とし、ISDNサービスは通常の狭帯域の電話サービスより高価である。
【0008】
電話通信で使用されるように推奨されている更に最近の方法は、“Coding at 24 and 32kbit/s for hands-free operation in systems with low frame loss”という題のITU-TのRecommendation G.722.1(1999)である。この文献は参照として取り込まれる。このRecommendationは、G.722よりかなり低い24kbit/s又は32kbit/sのビットレートで動作し、50Hz〜7kHzのオーディオ帯域を提供するデジタル広帯域コーダのアルゴリズムを記載している。このデータレートでは、通常のアナログ電話回線を使用する通常のモデムを有する電話は、広帯域オーディオ信号を送信することができる。従って、2つのエンドの電話セットがG.722.1に記載のエンコード/デコードを実行することができる限り、ほとんどの既存の電話ネットワークは広帯域会話をサポートすることができる。
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】ITU-T Recommendation G.722(1998)
【非特許文献2】ITU-T Recommendation G.722.1(1999)
【発明の概要】
【発明が解決しようとする課題】
【0010】
音声品質について電話会話が対面の会話とほとんど同じになるように、電話を通じて完全なスペクトル音声を有することが望ましい。音声品質を改善することができ、若しくはデータ負荷を低減することができ、又はこれらの双方を行うことができる方法を有することが好ましい。
【課題を解決するための手段】
【0011】
本発明は、オーディオコーデックの効率を改善する(すなわち、音声品質を改善し、伝送チャネル又は記憶媒体のデータ負荷を低減する)システム、方法、及び装置を開示する。本発明の一実施例は、入力オーディオ信号に少なくとも2つのMLT(Modulated Lapped Transform)を適用する。1つの低周波数MLTは約20msのフレームを使用し、1つの高周波数MLTはそれぞれ約5msの4つのフレームを使用する。低周波数MLTはG.722.1に記載のものと類似していてもよいが、高周波数MLTは高周波数で高い分解能を提供する。2重変換は、単一変換に比較して、高周波数での過渡状態の良好な再生を生じる。
【0012】
MLT係数は、サブフレームにグループ化され、異なる長さのグループにグループ化され得る。サブフレームの各振幅エンベロープは、対数スカラ量子化器により量子化されてもよく、MLT係数は、多次元格子ベクトルで量子化されてもよい。この開示の様々な実施例による高速格子ベクトル量子化器(fast lattice vector quantizer)は、格子ベクトル量子化に関連する通常の問題なしに、スカラ量子化器で量子化効率及び精度を改善する。この開示の様々な実施例は、2つの異なる量子化方式(一方は高レートの量子化、他方は低レートの量子化)を使用することにより、量子化及び符号化を更に改善する。
【0013】
この開示の様々な実施例は、Huffman符号化が振幅エンベロープ及び係数インデックスを符号化するために利用されるか否かを動的に決定することにより、量子化エンコードを更に改善する。4つのグループのそれぞれについて、グループ内の全ての係数インデックスを符号化するために必要な全体のビットを低減することができる場合にのみ、Huffman符号化が利用されてもよい。そうでない場合、不要な計算コストを低減するために、Huffman符号化は使用されなくてもよい。
【0014】
この開示の様々な実施例では、オーディオ信号を符号化する際に使用される量子化方法が提供される。この方法は、係数毎に1ビットより大きいレートで変換係数を量子化するために第1の格子ベクトル量子化器を使用し、係数毎に1ビットのレートで変換係数を量子化するために第2の格子ベクトル量子化器を使用することを有する。
【0015】
係数毎に1ビットより大きいレートで変換係数を量子化するために、この方法は、切り捨てられた格子からコードブックを構成し、格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有してもよい。
【0016】
係数毎に1ビットのレートで変換係数を量子化するために、この方法は、同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、各コードベクトルを量子化することを有してもよい。
【0017】
この開示の様々な実施例によれば、オーディオ信号をエンコードする方法が提供される。この方法は、オーディオ信号のサンプルのグループを時間ドメインから周波数ドメインに変換し、変換係数のフレームを形成することを有してもよい。この方法は、変換係数の各フレームを複数のグループにグループ化することを更に有してもよく、各グループは複数のサブフレームを有し、各サブフレームは特定の数の変換係数を有する。この方法は、サブフレームのrmsに基づいてサブフレームのそれぞれのノルムを決定することを更に有してもよい。この方法は、各サブフレームのrmsを量子化することを更に有してもよい。この方法は、サブフレームの量子化されたrmsでサブフレーム内の各係数を除算することにより、各サブフレームの係数を正規化することを更に有してもよい。この方法は、第1の格子ベクトル量子化を使用し、係数毎に1ビットより大きいレートで係数を量子化することを更に有してもよい。この方法は、第2の格子ベクトル量子化器を使用し、係数毎に1ビットのレートで係数を量子化することを更に有してもよい。
【0018】
プログラムを具現したコンピュータ可読媒体も提供され、プログラムは、ここに記載の方法のうちいずれかを実行するように機械により実行可能である。
【0019】
この開示の様々な実施例によれば、オーディオ信号をエンコードする22kHzエンコーダが提供される。エンコーダは、オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールを有してもよい。エンコーダは、係数毎に1ビットより大きいレートで変換係数を量子化するように動作可能な第1の格子ベクトル量子化モジュールを更に有してもよい。エンコーダは、係数毎に1ビットのレートで変換係数を量子化するように動作可能な第2の格子ベクトル量子化モジュールを更に有してもよい。この方法は、第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有してもよい。
【0020】
この開示の様々な実施例によれば、エンドポイントが提供される。エンドポイントは、オーディオ入出力インタフェースと、オーディオ入出力インタフェースに通信可能に結合されたマイクロフォンと、オーディオ入出力インタフェースに通信可能に結合されたスピーカと、オーディオ入出力インタフェースに通信可能に結合された22kHzオーディオエンコーダとを有してもよい。エンドポイントは、オーディオ入出力インタフェースに通信可能に結合されたバスと、バスに通信可能に結合されたビデオ入出力インタフェースと、ビデオ入出力インタフェースに通信可能に結合されたカメラと、ビデオ入出力インタフェースに通信可能に結合されたディスプレイ装置とを更に有してもよい。
【図面の簡単な説明】
【0021】
【図1】この開示の実施例による例示的な2重変換方式
【図2A】この開示の実施例による例示的な係数グループ化方式
【図2B】この開示の他の実施例による例示的な係数グループ化方式
【図3A】この開示の実施例による例示的なエンコードされたビットストリーム
【図3B】この開示の実施例によるフラグビットの例示的な構造
【図3C】この開示の実施例による変換係数の例示的な構造
【図3D】この開示の実施例による変換係数の例示的な構造
【図4】この開示の実施例によるエンコード処理の例示的な処理フロー図
【図5】この開示の実施例によるデコード処理の例示的な処理フロー図
【図6】この開示の実施例によるエンコーダの例示的なブロック図
【図7】この開示の実施例によるデコーダの例示的なブロック図
【図8】この開示の実施例による会議システムの例示的なブロック図
【発明を実施するための形態】
【0022】
以下の好ましい実施例の詳細な説明が添付図面と共に考慮されて、本発明は良く理解できる。
【0023】
この開示の様々な実施例は、革新的なエンコーダ及びデコーダを使用することにより、オーディオ信号処理の性能を拡張して改善する。エンコード処理は、変換処理と量子化処理とエンコード処理とを広く含む。この開示の様々な実施例は、全てのこれらの処理について改善を与える。
【0024】
ほとんどの従来技術のオーディオ信号処理では、オーディオ信号フレームは固定長を有する。フレーム長が短いほど、遅延が短くなる。短いフレーム長はまた、良好な時間分解能と高周波数で良好な性能を提供する。しかし、ショートフレームは悪い周波数分解能を提供する。対照的に、フレーム長が長いほど、遅延が長くなる。しかし、ロングフレームは、良好な周波数分解能と低周波数で良好な性能を提供し、ピッチ調波(pitch harmonics)を解決する。妥協して、フレーム長は典型的には20msの範囲であり、これがG.722.1 Recommendationで採用されたフレーム長である。
【0025】
この開示の様々な実施例によれば、少なくとも2つの異なる長さのオーディオサンプルのフレームが使用される。1つは長いフレーム長であり、低周波数スペクトルの良好な提示に設計される。他は短いフレーム長であり、高周波数信号に使用され、高周波数で良好な分解能を提供する。2つの信号フレームの組み合わせは音声品質を改善する。これは、完全な人間のオーディオスペクトル(例えば、約20Hz〜約22kHz)にスペクトル応答を拡張することができる。
【0026】
数カテゴリ内で所定のビット割り当てを使用するのではなく、この開示の一実施例によれば、ビット割り当ては適応的且つ動的でもよい。動的なビット割り当ては、変換係数の量子化中に使用されてもよい。従って、利用可能なビットが最善の使用にされる。
【0027】
少なくとも2つの変換で、量子化及び符号化される変換係数は、単一の変換より大きくなる。この開示の一実施例では、簡単なスカラ量子化方法を使用する代わりに、高速格子ベクトル量子化方法が使用されてもよい。一般的に、ベクトル量子化は、簡単なスカラ量子化方法よりかなり効率的である。特に、格子ベクトル量子化(LVQ:lattice vector quantization)は、比較的簡単な量子化処理であり、LVQコードブック(codebook)の正規構造のため必要なメモリの節約を実現することができるという点で、従来の周知のLBG(Linde, Buzo, and Gray)ベクトル量子化に対して利点を有する。しかし、所定のレートで格子を切り捨てて入力ソースの確率密度関数(PDF:probability density function)に合致するLVQコードブックをどのように生成するか、LVQコードブックのコードベクトル(格子点)をこれらのインデックスにどのように迅速に変換するか、切り捨てられた格子の外にあるソースベクトル(“外れ値(outlier)”)をどのように量子化するかという課題を含み、複数の制約により、格子ベクトル量子化はリアルタイムの音声及びオーディオ符号化で広く使用されていない。
【0028】
この開示の実施例による高速LVQ(FLVQ:fast LVQ)は、前述の制約を回避する。FLVQは、高レート量子化器(HRQ:higher rate quantizer)と低レート量子化器(LRQ:lower rate quantizer)とを有する。変換係数を量子化する際に、量子化器は、高速検索アルゴリズムを使用するために格子コードブックの代わりに係数をスケーリングし(scale)、デコーダで再現された係数を再スケーリングする(rescale)。この係数をスケーリングする方法はまた、LVQコードブックとして使用される切り捨てられた格子内に外れ値(大きい係数)を戻すことにより、“外れ値”問題を解決することができる。入力ソース(例えば、人間の音声又は可聴音楽)のPDFは、様々なオーディオソースの大きい集合から作られる。LVQの制約が取り除かれると、この開示の実施例でのFLVQの使用は、従来技術のスカラ量子化に対して量子化効率を改善する。
【0029】
この開示の他の実施例では、量子化及び符号化効率は、動的Huffman符号化により更に改善され得る。エントロピー符号化方法の1つとしてのHuffman符号化は、ソースが不規則に分布しているときに最も有用である。典型的には変換係数は不規則に分布する。従って、Huffman符号化を使用することは、符号化効率を改善することができる。この開示のこの実施例では、Huffman符号化がビット要件を低減するときに、Huffman符号化は、振幅エンベロープと変換係数の量子化インデックスとの双方をエンコードするために使用されてもよい。Huffman符号化が使用されるか否かを決定する際に、Huffman符号化を使用する合計のビット数と、ノルム(norm)又は変換係数の量子化に使用される利用可能なビット数とが比較される。何らか節約ができるときにのみ、Huffman符号化が使用されてもよい。このように、最善の符号化方法が使用される。
【0030】
[2重変換]
一実施例では、ロングフレーム及びショートフレームと呼ばれる2つのフレームサイズが使用される。簡単にするために、この開示は2重変換を示すが、ある実施例では、単一のフレームサイズが使用されてもよく、2より多くのフレームサイズが使用されてもよいことがわかる。
【0031】
図1を参照すると、オーディオ信号102がサンプリングされてデジタル化される。この特定の例では、オーディオ信号は48kHzでサンプリングされる。しかし、他のサンプリング周波数が使用されてもよい。この例では、ロングフレームL 104は、約20msのフレーム長を有する。ロングフレームL 104毎に、複数のショートフレームS1 106、S2 107、S3 108及びS4 109が存在する。この例では、各ショートフレーム106、107、108及び109は、約5msのフレーム長を有する。従って、各ロングフレーム104は約960サンプル(48kHz×0.02s=960)を有するが、各ショートフレーム(106、107、108、109)は約240サンプル(48kHz×0.005s=240)を有する。この例では4つのショートフレーム106、107、108及び109が示されているが、少ない数又は大きい数のショートフレームが存在してもよい。例えば、ショートフレームの数は、2、3、4、5等でもよい。
【0032】
これらのフレーム104、106、107、108及び109は時間ドメインから周波数ドメインに変換される。例えば、ITU-T Recommendation G.722.1に記載のMLT(Modulated Lapped Transform)を使用して変換されてもよい。簡単にするため、この開示はMLT変換を示すが、FFT(Fast Fourier Transform)及びDCT(Discrete Cosine Transform)等のような他の種類の変換が使用されてもよい。
【0033】
変換は、図2Aに示すように、MLT係数セット212、222、224、226及び228を生じる。各ショートフレームのMLT係数セット222、224、226及び228は約240の係数を有しており、各係数はその隣接から約100Hz離れている。ロングフレーム212については、約960のMLT係数、すなわち25Hz毎に1つの係数が存在する。これらの係数は、1920のMLT係数の単一のセットを形成するように結合されてもよい。この係数のセットは、音声の低周波数特性と高周波数特性との双方を取り込むことができる。22kHzの符号化帯域のため、約22kHzより上の周波数を表すMLT変換係数は無視されてもよい。
【0034】
ロング変換は低周波数を取り込むのに適している。ショート変換は高周波数を取り込むのに適している。従って、全ての係数が変換された音声信号を再生するのに同じ値を伝えるとは限らない。一実施例では、係数のいくつかは無視されてもよい。各ショートフレームのMLT係数セットは約240の係数を有する。各係数はその隣接から約100Hz離れている。一実施例では、約6800Hzより小さく、約22,000Hzより上の係数は無視されてもよい。従って、ショートフレーム毎に152の係数が保持されてもよく、4つのショートフレーム係数の合計数は608になる。ロングフレームについては、ロングフレームは低周波数信号を表すために使用されるため、一実施例では、約7kHzより下の周波数の係数が保持されてもよく、約7kHzより上のロング変換からの係数が破棄されてもよい。従って、低周波数は280の係数を有してもよい。従って、一実施例では、約22kHzまでのオーディオスペクトルについて全係数は888(608+280)になってもよい。
【0035】
係数は、量子化及び符号化の前に、サブフレーム及びグループにグループ化されてもよい。この実施例での“サブフレーム”は、G.722.1の方法の“領域(region)”に類似してもよい。サブフレームは、振幅エンベロープを計算し、可変ビット割り当てを割り当て、更に量子化及びエンコードを行う単位として使用される。グループは、スペクトルの範囲内で同じ長さを有する複数のサブフレームを有する。グループ内のサブフレームは、類似の特性を有してもよく、同様に量子化又はエンコードされてもよい。しかし、異なるグループのサブフレームでは、量子化又はエンコードする方法は異なり得る。従来技術の方法の領域とは異なり、異なるサブフレーム及びグループがより近くスペクトルを表すことができ、量子化及びエンコード中のビット要件が低減できるように、サブフレームは、グループと同様に異なるサイズを有することができる。
【0036】
この例では、0Hz〜22kHzの全体のオーディオスペクトルは4つのグループに分割されてもよい。第1のグループは約0Hzから約4kHzまでの周波数をカバーする。第1のグループは10のサブフレームを有し、各サブフレームは16のMLT係数を有する。第1のグループの全係数は160の係数であり、これらの全てはロングフレーム変換から生じる。第2のグループは約4kHzから約7kHzまでのスペクトルをカバーする。この第2のグループは5のサブフレームを有し、それぞれ24の係数を有し、合計で120の係数になる。これらの係数はロングフレーム変換から生じる。第3のグループは約7kHz(ある実施例では、約6.8kHz)から約14kHzまでのスペクトルをカバーする。ロングフレーム変換及びショートフレーム変換は境界で重複し、遷移をスムーズにする。第3のグループは9のサブフレームを有し、それぞれ32の係数を有し、合計で288の係数になる。これらの係数は4つのショートフレーム変換から生じる。第4のグループは約14kHzから約22kHzまでのスペクトルをカバーする。このグループは10のサブフレームを有し、それぞれ32の係数を有し、合計で320の係数になる。この例では、全体で888の係数が量子化及びエンコードされる。
【0037】
境界周波数の周りの250Hzの周波数領域で三角窓を使用して、重複加算(OLA:Overlap Add)がロングMLT及びショートMLTの係数の間で実行されてもよい。ロングMLTでは、6755Hzで始まる10の係数が下り傾斜(down-sloping ramp)で乗算される。ショートMLTでは、6800Hzで始まる2の係数が上り傾斜(up-sloping ramp)で乗算される。
【0038】
前記の方式に従って係数をサブフレーム及びグループにグループ化する際に、これらの係数は、周波数に従って低周波数から高周波数に配置されてもよい。例えば、同じ周波数の係数は一緒にグループ化されてもよい。Lからの係数に続いて、S1、S2、S3及びS4からの1つがあり、Lからの次に高い周波数があり、これが繰り返される。他の配置又は系列も可能であり、受け入れられる。例えば、同じ変換からの係数は一緒にグループ化されてもよい。すなわち、L変換からの全ての係数が最初にあり、これに続いてS1変換、S2、S3及びS4変換からの係数があってもよい。
【0039】
ここでの配置又は系列は、後に量子化又はエンコードに影響を与えてもよいことがわかる。一実施例では、一般的に以下の配置が、後に記載する量子化及びエンコード方式に良好な結果を提供すると思われる。ロングフレーム変換からの係数は、周波数に従って低いものから高いものに、第1のグループ及び第2のグループに配置される。一般的には4つのショート変換からの係数は周波数に従って配置されないが、厳密には周波数系列に従って配列されない。まず、第1のショートフレーム変換からの8の係数が選択され、周波数系列に従って配置される。次に、第2のショートフレーム変換から同じ周波数の8の係数が選択される。同様に、第3のショートフレーム変換から同じ周波数の8の係数が選択される。次に、第4のショートフレーム変換から係数が選択される。その後、第1のショートフレーム変換S1に戻り、次の8の係数を選択する。ショートフレーム変換からの全ての係数が選択されるまで、処理が繰り返される。
【0040】
前記の2重変換及びグループ化を使用して、4のグループ及び34のサブグループが存在し、各サブグループは16、24又は32の係数を有する。低周波数と高周波数とのうち一方のみを変換することができる、又はまずまずの分解能ではどちらも変換することができない従来技術の方法での単一の変換とは異なり、この開示の様々な実施例は、オーディオスペクトルの低周波数及び高周波数の双方で良好な分解能を提供することができる。計算負荷は、スペクトル範囲を22kHzでの完全なオーディオスペクトルに拡張するために、単一のショートフレーム変換(例えば、5msのフレーム長、48kHzのサンプリングレート)よりわずかにのみ大きくなる。これらの係数は、完全なオーディオスペクトルを表す。これらの係数は、様々な量子化又はエンコード方法を使用して(例えばG.722.1に記載の方法を使用して)量子化及びエンコードされてもよい。G.722.1方法が使用される場合、各サブフレームの振幅エンベロープがまず計算され、スカラ量子化され、Huffman符号化される。振幅エンベロープはまた、サブフレームが割り当てられたカテゴリに従って、各サブフレーム内で係数インデックスをエンコードするビットを割り当てるためにも使用される。次に、係数インデックスはこれらのカテゴリに従って量子化される。
【0041】
前述の方式は、音声及び一般の音楽に有用である。他の実施例によれば、パーカッション(percussion)形式の信号がオーディオ信号に存在してもよい。パーカッション形式の信号は、約10kHzまでの周波数領域でのロングMLT係数の平均勾配傾斜、最大のロングMLT係数の位置、及びロングMLT係数のゼロ交差レート(ZCR:zero-crossing rate)のような特徴に基づいて検出されてもよい。パーカッション形式の信号の例は、カスタネット及びトライアングル等により生成された音を非限定的に含む。このようなパーカッション形式の信号が検出されると、図2Bに示すように、ロングフレーム変換係数の境界周波数は(約7kHzではなく)約800Hzに調整されてもよい。この調整は、前エコー現象を有利に低減する。従って、この実施例では、ロングフレーム変換係数232は、約0Hz〜約800Hzの範囲の周波数を有してもよく、ショートフレーム変換係数242、244、246及び248は約600Hz〜約22kHzの範囲の周波数を有してもよい。周波数の重複は、スムーズな遷移を提供することに役立つ。
【0042】
OLAは、境界周波数の周りの250Hzの周波数領域で三角窓を使用して、ロングMLT及びショートMLT係数の間で実行されてもよい。ロングMLTでは、575Hzで始まる10の係数が下り傾斜で乗算される。ショートMLTでは、600Hzで始まる2の係数が上り傾斜で乗算される。
【0043】
25Hz間隔を中心とした低い400のロングMLT係数は、それぞれ20の係数を有する20のグループに分割される。各グループのスペクトルエネルギーEiは以下のように計算される。
【0044】
【数1】
ただし、xはロングMLT係数であり、iはグループ番号であり、THREQはTHREQ=7000として実験的に選択され得る静の閾値である。
【0045】
現在のフレームと前のフレームとの間のグループエネルギー比の自然対数REiは以下のように計算される。
【0046】
【数2】
ただし、nはフレーム番号である。
【0047】
立ち上がりの平均勾配傾斜Rampupは以下のように計算される。
【0048】
【数3】
立ち下がりの平均勾配傾斜Rampdownは以下のように計算される。
【0049】
【数4】
パーカッション形式の信号は、以下の条件が満たされたときに検出される。(1)Rampup>THRERAMPである場合(ただし、TRHERAMPは傾斜の所定の閾値であり、1.5である)、(2)第1のロングMLT係数x0がロングMLT係数の最大値である場合、且つ(3)ゼロ交差レートZCRが所定の閾値THREZCR=0.1より小さい場合。
【0050】
パーカッション形式の信号が検出されると、境界周波数は、現在のフレーム及び次の2つのフレームについて約800Hzに調整される。次のフレームn+1又はn+1で条件Rampdown>1が真である場合、エンコーダは、8フレームの間に調整された境界周波数で動作する。そうでない場合、エンコーダは、フレームn+3で7kHzの境界周波数に戻る。
【0051】
境界周波数が約800Hzであるときのパーカッション形式の信号では、2重MLT係数は異なる長さの38のサブフレームに分割される。800Hzより下の周波数を表す32のロングMLT係数が存在し、16の係数の2つのサブフレームに分割される。ショートMLT係数は様々なグループに分割される。第1のグループは16の係数の12のサブフレームを有し、600Hz〜5.4kHzの周波数を表す。第2のグループは24の係数の12のサブフレームを有し、5.4kHz〜12.6kHzの周波数を表す。第3のグループは32の係数の12のサブフレームを有し、12.6kHz〜22.2kHzの周波数を表す。各サブフレームは、同じショートMLTの係数を有する。
【0052】
[振幅エンベロープ]
サブフレームの振幅エンベロープは量子化及び分析され、Huffman符号化が使用されるべきか否かを決定する。固定のビット割り当てが、初期設定及びベンチマークとして各振幅エンベロープに割り当てられてもよい。Huffman符号化の使用が固定のビットに比べていくつかのビットを節約することができる場合、これが使用されてもよい。振幅エンベロープのHuffmanフラグが設定されるため、デコーダはHuffman符号化を適用するか否かを認識する。節約されるビット数は、残りのエンコードに利用可能なビットに格納される。そうでない場合、Huffman符号化は使用されず、フラグがクリアされ、初期設定の固定のビットが使用される。
【0053】
例えば、一実施例では、各エンベロープは5ビットを割り当てられる。エンベロープに使用される合計の初期設定のビットは、34×5=170ビットである。伝送レートが64kbit/sであることを仮定すると、フレーム毎のビット量は64kbit/s×20ms=1280ビットである。この例では、6のフラグビットが確保される。従って、係数インデックスをエンコードするために利用可能なビットは1280-6-170=1104ビットである。
【0054】
サブフレーム毎に、ノルムとも呼ばれる振幅エンベロープは、サブフレームのMLT係数の2乗平均平方根(RMS:Root-Mean-Square)値として定義され、以下のように計算される。
【0055】
【数5】
ただし、rはサブフレームのインデックスであり、M(r)はサブフレームのサイズであり、これは16、24、32でもよい。mlt(r,n)は第rのサブフレームの第nのMLT係数である。この例では、
1≦r≦10である場合、M(r)は16であり、全てのこれらのサブフレームは第1のグループ0〜4kHzになる。
11≦r≦15である場合、M(r)は24であり、全てのこれらのサブフレームは第2のグループ4kHz〜7kHzになる。
16≦r≦24である場合、M(r)は32であり、全てのこれらのサブフレームは第3のグループ6.8kHz〜14kHzになる。
25≦r≦34である場合、M(r)は32であり、全てのこれらのサブフレームは第4のグループ14〜22kHzになる。
【0056】
rms(r)の値は、対数量子化器で計算され、スカラ量子化される。以下の表1は、対数量子化器のコードブックを示している。
【0057】
【表1】
第1のサブフレームの振幅エンベロープrms(l)は5ビットで量子化され、その量子化インデックスはデコーダに直接送信される。従って、最初の32のコードワードのみが、rms(l)を量子化するために使用される。残りの33の振幅エンベロープは、全ての40のコードワードで量子化され、得られたインデックスは以下のように差分符号化される。
【0058】
【数6】
ただし、i=0,1,2,...である。差分インデックスは[-15,16]の範囲に制約される。負の差分インデックスが最初に調整され、次に正の差分インデックスが調整される。最後に、Huffman符号化が調整された差分インデックスに適用される。Huffman符号化に使用される合計ビットは、単純な符号化(すなわち、Huffman符号化を使用しない)に使用されるビット数と比較される。合計ビットがHuffman符号化のないものより小さい場合、Huffmanコードはチャネルで送信されてもよい。そうでない場合、量子化インデックスの差分コードがデコーダに送信される。従って、エンコードされるビット数は常に最小になり得る。Huffmanコードが使用される場合、Huffmanフラグが設定され、節約されたビットが利用可能ビットに戻される。例えば、Huffman符号化の合計ビットが160ビットである場合、170-160=10ビットが節約される。利用可能なビットは10+1104=1114ビットになる。
【0059】
[適応ビット割り当て方式]
変換係数のグループのエネルギーに基づく適応ビット割り当て方式は、フレームの利用可能なビットをサブフレーム間に割り当てるために使用され得る。一実施例では、改善したビット割り当て方式が使用されてもよい。G.722.1に使用される方式とは異なり、係数インデックスの適応ビット割り当てはカテゴリにより固定されず、振幅エンベロープが量子化されるのと同時の割り当て処理により固定される。ビット割り当ては次のようにされてもよい。
【0060】
Remainderが合計の利用可能なビット数を示すものとし、r(n)が第nのサブフレームに割り当てられたビット数を示すものとする。前記の例では、振幅エンベロープに適用されたHuffman符号化でRemainder=1114である。
【0061】
ステップ0:ビット割り当てをゼロに初期化する。すなわち、r(n)=0、ただしn=1,2,3,...Nであり、Nは合計のサブフレーム数である。前記の例ではNは34である。
【0062】
ステップ1:サブフレームの中で最大のRMSを有するサブフレームのインデックスnを見つける。
【0063】
ステップ2:M(n)ビットを第nのサブフレームに割り当てる。すなわち、r(n)=r(n)+M(n)である(ただし、M(n)は第nのサブフレームの係数の数である)。
【0064】
ステップ3:rms(n)を2で割り、Remainder=Remainder-M(n)とする。
【0065】
ステップ4:Remainder≧16である場合にはステップ1〜3を繰り返す。そうでない場合は終了する。
【0066】
ビット割り当ての後に、小さい残りビットを除いて、全てのビットはサブフレームに割り当てられる。いくつかのサブフレームは割り当てられたビットを有さないことがある。この理由は、これらのサブフレームのRMS値が小さすぎるからである。すなわち、スペクトルのその部分からオーディオ信号に相当の寄与が存在しないからである。スペクトルのその部分は無視されてもよい。
【0067】
[高速格子ベクトル量子化]
従来技術の量子化及びエンコード方法は、前記の実施例を実装し、処理されたオーディオ信号を完全なオーディオスペクトルに拡張するために使用されてもよいが、広い視聴者に最大の可能性をもたらさないことがある。従来技術の方法を使用すると、ビットレートの要件は高くなり、処理された完全なスペクトルのオーディオ信号を送信することが困難になる。この開示の一実施例による新しい高速格子ベクトル量子化(FLVQ:Fast Lattice Vector Quantization)が使用可能であり、これは符号化効率を改善し、ビット要件を低減する。FLVQは、如何なるオーディオ信号の量子化及びエンコードに使用されてもよい。
【0068】
MLT係数は、それぞれ16、24及び32の係数のサブフレームに分割される。各サブフレームのRMS又はノルム(すなわち、サブフレームの係数の2乗平均平方根の値が計算され、係数が量子化されたノルムにより正規化される。各サブフレームの正規化された係数は、高速LVQにより8次元ベクトルで量子化される。高速格子ベクトル量子化は、高レート量子化器(HRQ:higher rate quantizer)と低レート量子化器(LRQ:lower rate quantizer)とを有する。高レート量子化器は、1ビット/係数より大きいレートで係数を量子化するように設計され、低レート量子化器は、1ビット/係数で量子化するために使用される。
【0069】
格子ベクトル量子化器は、均一に分布したソースのみに適している。幾何学的に、格子はN次元のユークリッド空間の点の規則配置である。この場合、ソース(すなわち、MLT係数)は不均一であるため、エントロピー符号化(Huffman符号化)が高レート量子化のインデックスに適用され、HRQの性能を改善する。
【0070】
[高レート量子化]
高レート量子化器は、格子D8のVoronoiコードに基づき、2〜6ビット/係数のレートで正規化されたMLT係数を量子化するように設計されてもよい。このサブ量子化器のコードブックは格子D8の有限領域から構成されてもよく、メモリには格納されない。コードベクトルは簡単な代数方法により生成され得る。
【0071】
格子D8は以下のように定義される。
【0072】
【数7】
ただし、Z8は整数座標での全ての点を有する格子である。D8は整数の格子であり、偶数の和の整数座標を有する点y=(y1,y2,y3,y4,y5,y6,y7,y8)で構成される。例えば、ベクトルy=(-1,-1,0,2,1,-3,2,4)は4の偶数の和を有しており、従ってyはD8の格子点である。
【0073】
Conway及びSloaneは、いくつかの周知の格子についてD8に適用され得る高速量子化アルゴリズムを作っている。しかし、これらのアルゴリズムは、リアルタイムのオーディオ符号化のコードブックとして使用できない無限格子を仮定している。換言すると、所定のレートでは、これらのアルゴリズムは、切り捨てられた格子領域の外にある入力ベクトルを量子化するために使用できない。
【0074】
一実施例では、正規化されたMLT係数は、それぞれ2、3、4及び5ビット/係数のレートで量子化される。パーカッション形式の信号が検出されるときのような他の実施例では、最大量子化レートは6ビット/係数でもよい。所定のレートで歪みを最小化するために、格子D8は切り捨てられ、スケーリング(scale)されてもよい。実際に、Conway他により記述された高速検索アルゴリズムを使用するために、係数は格子コードブックの代わりにスケーリングされ、デコーダで再現された係数を再スケーリングする。更に、“外れ値”を量子化する高速方法も展開されてもよい。
【0075】
所定のレートRビット/次元(1<R<7)では、それぞれの8次元の係数ベクトルx=(x1,x2,x3,x4,x5,x6,x7,x8)は以下のように量子化されてもよい。
【0076】
1)ベクトルxの各成分に小さいオフセットa=2-6を適用し、切り捨てられたVoronoi領域の境界での何らかの格子点を回避する。すなわち、x1=x-aであり、a=(2-6,2-6,2-6,2-6,2-6,2-6,2-6,2-6)である。
【0077】
2)スケーリング因子αでベクトルx1をスケーリングする。すなわち、x2=αx1である。所定のレートRでは、最適なスケーリング因子は以下の表2に示すように実験的に選択される。
【0078】
【表2】
3)スケーリングされたベクトルx2に最も近いD8の格子点vを見つける。これは、Conway及びSloaneに記述された検索アルゴリズムを使用して行われてもよい。
【0079】
4)vが所定のレートRで切り捨てられたVoronoi領域のコードベクトルであると仮定し、vのインデックスベクトルk=(k1,k2,k3,k4,k5,k6,k7,k8)を計算する。ただし、0≦ki<2Rであり、i=1,2,...,8である。インデックスkは以下により得られる。
【0080】
【数8】
ただし、GはD8の生成行列であり、以下のように定義される。
【0081】
【数9】
且つ
【0082】
【数10】
5)Conway他により記述されたアルゴリズムを使用してインデックスベクトルkからコードベクトルyを計算し、yとvとを比較する。y及びvが全く同じである場合、kはx2の最善のコードベクトルのインデックスであり、ここで終了する。そうでない場合、入力ベクトルx2は外れ値であり、以下のステップにより量子化されてもよい。
【0083】
6)ベクトルx2を2でスケールダウンする。すなわち、x2=x2/2である。
【0084】
7)x2に最も近いD8の格子点uを見つけ、uのインデックスベクトルjを計算する。
【0085】
8)インデックスベクトルjからコードベクトルyを見つけ、yとuとを比較する。yがuと異なる場合、ステップ6)〜8)を繰り返す。そうでない場合、w=x2/16を計算する。MLT係数の正規化のため、切り捨てられた格子の外れ値へのコードベクトルを見つけるために、数回の繰り返しが行われてもよい。
【0086】
9)x2=x2+wを計算する。
【0087】
10)x2に最も近いD8の格子点uを見つけ、uのインデックスベクトルjを計算する。
【0088】
11)インデックスベクトルjからコードベクトルyを見つけ、yとuとを比較する。yとuとが全く同じである場合、k=jでステップ9)〜11)を繰り返す。そうでない場合、kはx2に対する最善のコードベクトルのインデックスであり、終了する。
【0089】
高レート量子化器のデコード手順は以下のように実行されてもよい。
【0090】
1)所定のレートRに従ってインデックスベクトルkからコードベクトルyを見つける。
【0091】
2)前記の表2で与えられるスケーリング因子αでコードベクトルyを再スケーリングする。すなわち、y1=y/αである。
【0092】
3)再スケーリングされたコードベクトルy1に量子化処理のステップ1)で使用された同じオフセットaを加算する。すなわち、y2=y1+aであり、終了する。
【0093】
[低レート量子化]
いわゆる循環Gosset格子(rotated Gosset lattice)RE8に基づく低レート量子化は、1ビット/係数のレートで正規化されたMLT係数を量子化するように提供されてもよい。
【0094】
格子RE8は、原点を中心とした半径2√(2r)の同心球に入る点で構成される。ただし、r=0,1,2,3,...である。球の一式の点は球面コード(spherical code)を構成し、量子化コードブックとして使用され得る。
【0095】
低レート量子化では、コードブックは、r=1の球にあるRE8の全ての240の点と、格子RE8に属さない16の更なる点とで構成される。更なる点は、2つのベクトル(-2,0,0,0,0,0,0,0)及び(2,0,0,0,0,0,0,0)の成分の置換により得られ、原点に近い入力ベクトルを量子化するために使用される。高速インデックスアルゴリズムを作るために、コードブックのコードベクトルは特定の順に配置され、以下の表3に示される。
【0096】
それぞれの8次元の係数ベクトルx=(x1,x2,x3,x4,x5,x6,x7,x8)について、量子化は以下のように実行されてもよい。
【0097】
1)ベクトルxの各成分にオフセットa=2-6を適用する。すなわち、x1=x-aであり、a=(2-6,2-6,2-6,2-6,2-6,2-6,2-6,2-6)である。
【0098】
2)スケーリング因子αでベクトルx1をスケーリングする。すなわち、x2=αx1である。最適なスケーリング因子は実験的にα=1.25として選択される。
【0099】
3)x2の成分を降順に並び換えることにより、新しいベクトルx3を得る。
【0100】
4)平均2乗誤差(MSE:mean-squared error)についてx3に最適のベクトルlを表4から見つける。以下の表4で与えられるベクトルは、いわゆるコードベクトルのリーダ(leader)と呼ばれ、コードブックの如何なるコードベクトルもそのリーダの置換により生成され得る。
【0101】
5)lの成分を元の順序に並び換えることにより、最善のコードベクトルyを得る。
【0102】
6)以下の表5でlのフラグベクトルを見つけ、フラグベクトルの成分を元の順序に並び換えることにより、ベクトルzを得る。フラグベクトルは以下のように定められる。リーダが-2、2及び0で構成される場合、-2及び2が1で示され、0が0で示される。リーダが-1及び1で構成される場合、-1が1で示され、1が0で示される。
【0103】
7)以下の表6のリーダlに関するインデックスオフセットKを見つける。
【0104】
8)リーダlが(2,0,0,0,0,0,0,-2)であり、コードベクトルyが成分-2のものより小さいインデックスの成分2を有する場合、オフセットKはK=K+28として調整される。
【0105】
9)ベクトル内積i=zpTを計算する。ただし、p=(1,2,4,8,16,32,64,128)である。
【0106】
10)表7のコードベクトルyに関するインデックスインクリメントjをiから見つける。
【0107】
11)コードベクトルyのインデックスkを計算する。すなわち、k=K+jである。ここで終了する。
【0108】
以下のステップは、低レート量子化器のデコード手順で行われてもよい。
【0109】
1)受信インデックスkから表3のコードベクトルyを見つける。
【0110】
2)スケーリング因子α=1.5でコードベクトルyを再スケーリングする。すなわち、y1=y/αである。
【0111】
3)再スケーリングされたコードベクトルy1にエンコード手順のステップ1)で使用された同じオフセットaを加算する。すなわち、y2=y1+aである。ここで終了する。
【0112】
【表3】
【0113】
【表4】
【0114】
【表5】
【0115】
【表6】
【0116】
【表7】
[量子化インデックスのHuffman符号化]
MLT係数は均一に分布していない。8次元の係数ベクトルは原点の周囲で高い集積率を有することが観測されている。従って、格子ベクトル量子化器のコードブックは不均一のソースには最適ではない。
【0117】
前記の高レート量子化器の性能を改善するために、量子化のインデックスを符号化するためにHuffman符号化器が使用されてもよい。低レート(<2ビット/サンプル)の符号化のため、14-22kHzの帯域に対応する“特別”のサブフレームのほとんどは高レート量子化器により量子化されない。従って、Huffman符号化は特別のサブフレームに使用されない。
【0118】
所定のレートのRビット/次元(1<R<6)では、8次元の係数ベクトルxは高レート量子化器により量子化され、最善のコードベクトルyのインデックスベクトルk=(k1,k2,k3,k4,k5,k6,k7,k8)は0≦ki<2R(i=1,2,...,8)で得られる。kの成分は表8〜11に従ってHuffman符号化される。
【0119】
Huffman符号化を使用することにより、量子化インデックスは、可変のビット数で符号化される。所定のレートRでは、より頻繁なインデックスはR未満のビットを必要とし、あまり頻繁でないインデックスはRより大きいビットを必要とし得る。従って、Huffman符号化の後にコード長が確かめられ、Huffman符号化がサブフレームの最初の3つのグループのそれぞれに適用されたか否かを示すために、3つのフラグビットがフレームで使用される。フラグビットはサイド情報としてデコーダに送信される。サブフレームのグループでは、Huffman符号化を使用することにより必要なビット数がこのグループに利用可能な合計ビット数より大きくない場合にのみ、量子化インデックスはHuffman符号化される。この場合、Huffman符号化フラグは1に設定される。
【0120】
しかし、パーカッション形式の信号の場合、Huffman符号化はもはや量子化インデックスに適用されない。量子化インデックスは直接デコーダに送信される。
【0121】
デコーダでは、Huffman符号化フラグが検査される。サブフレームのグループのHuffman符号化フラグが設定されている場合、このグループの符号化データはHuffmanデコードされ、量子化インデックスを得る。そうでない場合、符号化データは量子化インデックスとして直接使用される。
【0122】
【表8】
【0123】
【表9】
【0124】
【表10】
【0125】
【表11】
[エンコーダにより生成されたビットストリーム]
図3Aは、この開示の実施例によるエンコードされたビットストリームの例を示している。一実施例では、フレームの合計ビット数は、それぞれ32kbps、48kbps及び64kbpsのビットレートに対応して、640、960及び1280ビットである。チャネルで送信されるビットストリームは3つの部分(フラグビット、ノルムコードビット及びMLT係数のコードビット)で構成されてもよい。フラグビットが最初に送信され、ノルムコードビットが次に送信され、MLT係数のコードビットが最後に送信されてもよい。
【0126】
フラグ部分302は様々な目的に使用される複数のフラグビットを有する。この例では、フラグビットは、現在のフレームのモードを示すために使用され、デコーダに送信されるモードフラグを有してもよい。例えば、モードフラグは、パーカッション形式の信号モードを示すために使用されてもよい。他の例として、モードフラグは、音声及び一般の音楽を示すために使用されてもよい。フラグはまた、何個のサブフレームが32kbpsで符号化されるかを示し、デコーダにサイド情報として送信されるフラグを有してもよい。次の部分は、固定長を有する。この例では4ビットを有する。4ビットは、Huffman符号化がノルムとグループ1係数インデックスとグループ2係数インデックスとグループ3係数インデックスとに使用されるか否かを示すために使用される。典型的にはグループ4係数は非常に小さいビットを有しており、典型的にはHuffman符号化はビット要件を低減しないため、典型的にはグループ4はHuffman符号化を使用しない。
【0127】
ビットストリームは、全てのサブフレームのノルムコードビット304を更に有してもよい。Huffman符号化が使用されない場合、長さは固定される。この例では、固定長は170ビット(34ノルム×5ビット/ノルム)である。Huffman符号化が使用される場合、長さはHuffman符号化により決定される。
【0128】
ビットストリームは、グループ1〜4 306のエンコードされた係数インデックスを更に有してもよい。各グループ又は各係数に割り当てられるビット量は変化し得る。これらは、各サブフレームのノルムに従って、ビット割り当てにより決定される。グループ1〜3のインデックスもまた、Huffman符号化が使用されるか否かに依存してもよい。グループ4のインデックスは、典型的にはHuffman符号化を使用しない。しかし、他の部分のビット数が変化し得るため、グループ4に割り当てられるビット量も依然として変化し得る。他のグループがHuffman符号化のため少ないビットを使用する場合、これらの節約されたビットはグループ4に使用されてもよい。
【0129】
図3Bは、この開示の一実施例によるフラグビット302の例示的な構造を示している。この例では、フラグビット302は、現在のフレームのモードを示し、デコーダに送信されるフラグM308を有してもよい。パーカッション形式の信号モードでは、モードフラグ308のみが送信されてもよく、他のフラグは送信される必要がない。音声及び一般の音楽のモードでは、全てのフラグが送信されてもよい。フラグビット302は、何個のサブフレームが低ビットレート(例えば32kbps)で符号化されるかを示すフラグL310を更に有してもよい。フラグビット302は、ノルムがHuffman符号化されるか否かを示すフラグN312を更に有してもよい。フラグビット302は、MLT係数の各グループ(この例では、グループ1〜グループ3)がHuffman符号化されるか否かを示すフラグG1〜G3を更に有してもよい。
【0130】
図3Cは、この開示の一実施例に従って係数コードビット306で量子化(場合によってはHuffman符号化)された変換係数の結合されたセットの例示的な構造を示している。この例では、境界周波数は約7kHzである。ロングフレーム変換係数320は、約7kHzまでの周波数を表す。ショートフレーム変換係数322は約6.8kHz〜約22kHzまでの周波数を表す。ロングフレーム変換及びショートフレーム変換は境界で重複し、遷移をスムーズにする。
【0131】
図3Dは、この開示の他の実施例に従って係数コードビット306で量子化(場合によってはHuffman符号化)された変換係数の結合されたセットの例示的な構造を示している。この例では、境界周波数は約800Hzである。ロングフレーム変換係数324は、約800Hzまでの周波数を表す。ショートフレーム変換係数326は約600Hz〜約22kHzまでの周波数を表す。ロングフレーム変換及びショートフレーム変換は境界で重複し、遷移をスムーズにする。
【0132】
[エンコーダ処理]
この開示の一実施例による全体のエンコード処理の例示的な処理フロー図を示す図4を参照する。エンコード処理はステップ400で始まる。ステップ410において、時間内にオーディオサンプルが変換係数のフレームに変換されるように、2つのMLT変換がオーディオ信号に適用されてもよい。ロングフレーム変換係数は、低周波数(例えば、約20Hz〜約7kHz)の信号に使用され、ショートフレーム変換係数は、高周波数(例えば、約6.8kHz〜約22kHz)の信号に使用される。他の実施例では、単一の変換がオーディオ信号に適用されてもよい。
【0133】
MLT係数は34のサブフレームで4つのグループにグループ化されてもよい。ステップ420において、各サブフレームのノルムが計算され、固定のビット数で量子化される。各サブフレームは、その量子化されたノルムで正規化され、正規化された変換係数が得られる。Huffman符号化は、全ての量子化されたノルムで試されてもよい。使用されるビット数がノルム量子化に割り当てられた合計ビット数より小さい場合、Huffman符号化が使用されてもよい。Huffmanフラグ(フラグN)が設定され、特別のビットがビットの残り(Remainder)に格納される。使用されるビット数が小さくない場合、Huffman符号化は使用されず、Huffmanフラグはクリアされる。残り(Remainder)は合計ビット数から6フラグビットを引いたものと、ノルムにより使用されるものとになる。
【0134】
ステップ430において、フレームの利用可能なビットをサブフレーム間に割り当てるために、適応ビット割り当て方式が使用されてもよい。まず、各サブフレームの全ビットはゼロに設定され(合計で34のサブフレームが存在する)、ビットの残り(Remainder)は、利用可能な合計ビットに設定される。次に、サブフレームの最大のノルムが見つけられ、Mの合計でサブフレームの係数毎に1ビットが割り当てられる。次に、そのノルムをノルム/2にし、Remainder=Remainder-Mにする。16の係数を有するサブフレームでは、M=16であり、24又は32の係数を有するサブフレームでは、Mはそれぞれ24又は32である。残り(Remainder)が16未満である場合には割り当てを中止し、そうでない場合には最後のステップを繰り返す。ビット割り当てが行われると、残り(Remainder)は16未満になる。いくつかのサブフレームは係数毎に数ビットを割り当てられ、いくつかはゼロビットを有してもよい。
【0135】
判定440において、係数毎のビットが1より大きい場合、ステップ450において、量子化は格子D8により高レート量子化が行われてもよい。そうでない場合、ステップ460において、格子RE8を使用して低レート量子化により行われてもよい。各グループに割り当てられるビットは既にわかっている。
【0136】
ステップ470において、Huffman符号化が、任意選択で各サブフレームの量子化係数に試されてもよい。最初の3つのグループの各グループに必要なビットの合計が加算される。Huffman符号化されたビットが割り当てられたビットより小さい場合、Huffman符号化がそのグループに使用されてもよく、そのグループのHuffmanコードフラグが設定される。節約されたビットは残りのビットに割り当てられる。Huffman符号化されたビットが固定の割り当てられたビットより小さくない場合、Huffman符号化は使用されず、Huffmanコードフラグはクリアされる。
【0137】
残りのビットは、前記のビット割り当て方式に従って次のグループに割り当てられる。全てのビットが割り当てられ、処理がステップ480で終了する。ビットストリームが形成され、送信されてもよい。
【0138】
図4に関して説明した例示的なエンコーダ処理に様々な変更が行われてもよい。この開示のある実施例によれば、2重変換は任意選択でもよい。この開示の他の実施例によれば、2つより少ない又は多い変換が存在してもよい。更に、前述のように、如何なる形式の変換(MLT、FFT、DCT等)が使用されてもよい。
【0139】
[デコーダ処理]
デコーダは、基本的にエンコーダの逆の順序で、エンコードされたビットストリームを処理する。合計のビットはわかっており、合意されている。デコーダでは、適切なデコーダがビットストリームに使用されることを確保するために、データ整合性及びエンコードプロトコルが検査される。ビットストリームが前記の例に従ってエンコーダでエンコードされることをデコーダが確かめると、図5に示して以下に説明するようにビットストリームをデコードする。
【0140】
処理フローはステップ500で始まり、デコーダへの入力として、エンコードされたビットストリームを受信する。ステップ510において、フラグビットが検査される。例えば、最初の3つのグループのノルム又は係数インデックスがHuffman符号化されているか否かが決定される。
【0141】
ノルムのHuffmanコードフラグが設定されている場合、ステップ520において、ノルムの量子化インデックスがHuffmanデコードされる。全てのノルムがデコードされた後に、ノルムにより使用される合計のビットがわかる。係数インデックスを符号化するために使用されるビット数(残りのビット)もわかる。
【0142】
Huffmanコードフラグが設定されていない場合、ステップ530において固定レートが使用される。ノルムにより使用されるビット数はわかる。係数インデックスの合計のビット数もわかる。
【0143】
ステップ530において、量子化されたノルムは、量子化インデックスを逆量子化することにより得られる。量子化されたノルムから、適応ビット割り当て540(図4のボックス430と同じ動作)が実行され、何のサブフレームが何個のビットを有するかを決定してもよい。Huffmanフラグがグループに設定されている場合、受信データはHuffmanコードであり、このグループ内の各サブフレームについてデコードされなければならない。Huffmanフラグが設定されていない場合、受信データは係数の量子化インデックスである。
【0144】
量子化されたノルム及び量子化インデックスから、ステップ560において、MLT係数が再現可能である。全くビットを割り当てられていないサブフレームについては、これらのMLT係数はゼロで埋められてもよく、又は乱数で生成されてもよい。1つのロング変換の低周波数の係数及び4つのショート変換の高周波数の係数が復旧され得る。ロング変換の高周波数は0で埋められてもよい。同様に、4つのショート変換の低周波数は0で埋められてもよい。高周波数と低周波数との境界で、何らかの形式のスムーズな遷移が使用されてもよい。例えば、最も簡単なスムーズの関数は、境界近くの数個の係数での緩やかな傾斜である。
【0145】
ロング変換及び4つのショート変換の全ての係数が再現されると、デジタルオーディオサンプルに逆変換可能である。ステップ570において、周波数ドメインから時間ドメインへのロング変換及び4つのショート変換の逆変換が実行される。例えば、2重のIMLTが再現されたMLT係数に適用されてもよい。ここで、同じ20msの時間フレームをそれぞれカバーする2つのデジタルオーディオサンプルが存在する。
【0146】
ステップ580において、2つの時間ドメインの信号が結合され、単一のオーディオ信号を形成する。信号はアナログ信号に変換され、音声として再生される。
【0147】
この開示の様々な実施例の方法は、ハードウェア、ソフトウェア、ファームウェア又は前記のいずれかの組み合わせにより実行されてもよい。例えば、この方法は、電話会議システム又はテレビ会議システムのようなオーディオシステムのエンコーダ若しくはデコーダ又は他のプロセッサにより実行されてもよい。更に、この開示の様々な実施例の方法は、例えばインターネットを介して、ストリーミングオーディオに適用されてもよい。図6は、この開示の様々な実施例によるエンコーダを示している。図7は、この開示の様々な実施例によるデコーダを示している。エンコーダ及びデコーダはある実施例では別々でもよく、ある実施例ではコーデックに結合されてもよい。
【0148】
図6のエンコーダでは、デジタルでサンプリングされた入力オーディオ信号は、少なくとも2つの変換モジュール610及び620に供給されてもよく、これにより、時間内にオーディオサンプルが変換係数のフレームに変換され得る。参照を容易にするため、変換モジュール610及び620はMLTモジュールと呼ばれるが、他の形式の変換モジュールが使用されてもよい。
【0149】
一実施例では、20ms毎に、最近の1920のオーディオサンプルが変換モジュール610に供給されてもよく、5ms毎に、最近の480のオーディオサンプルが変換モジュール620に供給されてもよい。ロングフレーム変換モジュール610は、約960の係数のセットを生じてもよく、ショートフレーム変換モジュール620は、それぞれ約240の係数のセットを生じてもよい。ロングフレーム変換係数は、低周波数の信号に使用されてもよく、ショートフレーム変換係数は、高周波数の信号に使用されてもよい。例えば、一実施例では、ロングフレーム変換係数は、約20Hz〜約7kHzの間の周波数を表し、ショートフレーム変換係数は、約6.8kHz〜約22kHzの間の周波数を表す。
【0150】
他の実施例では、パーカッション形式の信号の存在を示すために、モジュール630が任意選択で提供されてもよい。パーカッション形式の信号が検出された場合、パーカッション形式のモードを示すモードフラグが、送信のためにマルチプレクサ695に送信されてもよい。パーカッション形式の信号が検出された場合、境界周波数は約800Hzに調整されてもよい。このような場合、2重変換の係数は、800Hzまでの周波数を表すロング変換係数と600Hzより上の周波数を表すショート変換係数との組み合わせである。他の実施例では、境界周波数は7kHzでもよく、約800Hzと約7kHzとの間のどこかでもよい。
【0151】
ロングフレーム変換係数及びショートフレーム変換係数は、結合モジュール640により結合される。結合された係数は、各サブフレームのノルムを計算して量子化するノルム量子化モジュール650に適用される。符号化モジュール670がノルムの量子化インデックスに適用される。符号化モジュールは、任意選択でHuffman符号化を実行してもよい。結果のノルムコードビットは、マルチプレクサ695に供給される。ノルムがHuffman符号化されているか否かを示すために、Huffmanコードフラグもマルチプレクサ695に供給されてもよい。
【0152】
ノルム量子化モジュール650からの量子化されたノルムと、結合モジュール640からの結合されたMLT係数とは、MLT係数を正規化する正規化モジュール660に供給される。量子化されたノルムもまた、フレームの利用可能なビットをサブフレーム間に割り当てる適応ビット割り当てモジュール675に供給されてもよい。ビット割り当てが終了すると、正規化されたMLT係数は、高速格子ベクトル量子化モジュール680によりサブフレーム毎に量子化されてもよい。係数毎のビットが1より大きい場合、量子化は高レート量子化器により行われてもよい。そうでない場合、量子化は低レート量子化器により行われてもよい。パーカッション形式の信号が検出された場合、最大量子化レートは、係数毎に6ビットに設定されてもよい。パーカッション形式の信号が検出されない場合、最大量子化レートは係数毎に5ビットに設定されてもよい。
【0153】
Huffman符号化モジュール685は、任意選択でMLT係数の量子化インデックスに適用されてもよい。しかし、パーカッション形式の信号では、Huffman符号化モジュール685はMLT係数の量子化インデックスには適用されない。結果のHuffmanコードビットは、Huffman符号化モジュール685から比較及びデータ選択モジュール690に供給される。比較及びデータ選択モジュール690は、量子化モジュール680から出力された量子化インデックスと、Huffman符号化モジュール685から出力されたHuffmanコードとを比較する。サブフレームの最初の3つのグループの各グループについて、Huffman符号化ビットが割り当てられたビットより小さい場合、Huffman符号化ビットがそのグループについて選択され、そのグループのHuffmanコードフラグが設定される。節約されたビットは残りのビットに割り当てられる。Huffman符号化ビットが固定の割り当てビットより小さくない場合、量子化インデックスがそのグループについて選択され、Huffmanコードフラグはそのグループについてクリアされる。選択されたMLTコードビットは、何らかのHuffmanコードフラグと共にマルチプレクサ695に供給される。ビットストリームが形成され、送信されてもよい。
【0154】
図7のデコーダは、エンコードされたビットストリームからオーディオストリームを再現するように動作可能である。エンコードされたビットストリームは、データをノルムコードビットとMLTコードビットと様々なフラグ(モードフラグ、32kbit/sで符号化されたサブフレーム数に使用されるフラグ、ノルムのHuffmanコードフラグ、MLT係数の各グループのMLTコードフラグ等)に逆多重するデマルチプレクサ710に供給される。参照を容易にするため、この例ではMLTコードビット及びMLT係数の名前が使用されているが、他の形式の変換モジュールが使用されてもよい。
【0155】
ノルムコードビットは、サブフレームのノルムの量子化インデックスをデコードするデコードモジュール720に供給される。Huffman符号がノルムをエンコードするために使用されたことをHuffmanコードフラグ(フラグN)が示す場合、Huffmanデコードが適用されてもよい。逆量子化モジュール725はサブフレームのノルムを逆量子化する。適応ビット割り当てモジュール730は、フレームの利用可能なビットをサブフレーム間に割り当てるために使用されてもよい。
【0156】
MLTコードビットはデマルチプレクサ710からデコードモジュール735に供給される。デコードモジュール735は、MLT係数の量子化インデックスをデコードする。Huffman符号化がMLT係数の何らかのグループをエンコードするために使用されたことをいずれかのHuffmanコードフラグが示す場合、Huffmanデコードが適用されてもよい。Huffman符号化がMLT係数の何らかのグループをエンコードするために使用されたことをHuffmanコードフラグが示さない場合、量子化インデックスは逆量子化モジュール740に渡される。従って、デコードされたMLTコードビット又はMLT係数の量子化インデックスが、MLT係数を逆量子化する逆量子化モジュール740に供給される。
【0157】
量子化されたノルム及び量子化インデックスから、MLT係数は再現モジュール745により再現され得る。MLT係数は、分離モジュール750によりMLT係数のロングフレームとショートフレームMLT係数の4つのセットとに分離される。ロングフレーム逆変換モジュール760がロングフレームMLT係数のセットに適用され、ショートフレーム逆変換モジュール770がショートフレームMLT係数の4つのセットに適用される。逆変換モジュール760及び770は、逆MLT(IMLT:inverse modulated lapped transform)モジュールを有してもよい。結果の時間ドメインの信号が合計され、デジタルからアナログに変換されて音声として再生され得る出力オーディオ信号を生じる。
【0158】
この開示の様々な実施例は、オーディオ会議、テレビ会議、ストリーミング音楽及び音声を含むストリーミングメディアのような分野で有用な用途を見出し得る。この開示の一実施例による例示的な会議システムのブロック図を示す図8を参照する。システムは、ネットワーク850を介して1つ以上の遠隔エンドポイント840と通信するように動作可能なローカルエンドポイント810を有する。通信は、オーディオ、ビデオ及びデータの交換を有してもよい。ビデオ機能は任意選択であり、エンドポイント810は、テレビ会議機能のないオーディオ会議用の装置でもよいことが、当業者にわかる。例えば、エンドポイント810は、スピーカ又は他のオーディオ会議装置を有してもよい。同様に、各遠隔エンドポイント840は、オーディオ会議装置又はテレビ会議装置を有してもよい。
【0159】
ローカルエンドポイント810は、オーディオコーデック812とオーディオI/Oインタフェース814とを有する。オーディオコーデック812は、図6のエンコーダのようなエンコーダを有してもよい。オーディオコーデックは、図7のデコーダのようなデコーダを更に有してもよい。オーディオI/Oインタフェース814は、アナログ・デジタル変換及びデジタル・アナログ変換を実行してもよく、また、1つ以上のマイクロフォン816から受信したオーディオ情報又は1つ以上のスピーカ818に送信されたオーディオ情報を処理することに関する他の信号処理タスクを実行してもよい。1つ以上のマイクロフォン816は、インテリジェントなマイクロフォン合成機能及び動的ノイズ低減機能を備えたゲートマイクロフォン(gated microphone)を有してもよい。ある実施例では、1つ以上のマイクロフォン816は、エンドポイント810と統合されてもよく、エンドポイント810から離れてもよく、これらの組み合わせでもよい。同様に、1つ以上のスピーカ818は、エンドポイント810と統合されてもよく、エンドポイント810から離れてもよく、これらの組み合わせでもよい。エンドポイント810から離れている場合、マイクロフォン816及びスピーカ818は、有線接続又は無線接続を介して情報を送受信してもよい。
【0160】
ローカルエンドポイント810は、1つ以上のマイクロフォン816により生成されたオーディオ情報(典型的にはローカル会議参加者の音声及び音を表す)オーディオ情報を取得し得る。ローカルエンドポイント810は、取得されたオーディオ情報をデジタル化して処理する。オーディオはエンコードされ、ネットワークインタフェース820を介して1つ以上の遠隔エンドポイント840に送信される。
【0161】
エンドポイント810は、遠隔会議エンドポイント840から(典型的には遠隔会議参加者の音声及び音を表す)オーディオ情報を受信し得る。受信されたオーディオ情報はネットワークインタフェース820により受信される。受信されたオーディオ情報は、デコードされ、処理され、アナログに変換され、1つ以上のスピーカ818を介してオーディオとして再生される。
【0162】
ある実施例では、エンドポイント810は、任意選択でビデオ機能を有してもよい。このような実施例では、エンドポイント810は、ビデオコーデック822と、ビデオI/Oインタフェース824と、1つ以上のビデオカメラ826と、1つ以上のディスプレイ装置828とを有してもよい。1つ以上のカメラ826は、エンドポイント810と統合されてもよく、エンドポイント810から離れてもよく、これらの組み合わせでもよい。同様に、1つ以上のディスプレイ装置828は、エンドポイント810と統合されてもよく、エンドポイント810から離れてもよく、これらの組み合わせでもよい。
【0163】
ビデオ可能な実施例では、エンドポイント810は、1つ以上のカメラ816により生成された(典型的にはローカル会議参加者の画像を表す)ビデオ情報を取得し得る。エンドポイント810は、取得されたビデオ情報を処理し、ネットワークインタフェース820を介して処理された情報を1つ以上の遠隔エンドポイント840に送信する。ビデオ入出力インタフェースは、1つ以上のカメラ826から受信して1つ以上のビデオモニタ828に送信されたビデオ情報を変換して処理する。ビデオコーデック824は、ビデオ情報をエンコード及びデコードする。
【0164】
エンドポイント810はまた、遠隔エンドポイント840から(典型的には遠隔会議参加者の画像を表す)ビデオ情報を受信し得る。受信したビデオ情報は、エンドポイント810により処理され、処理されたビデオ情報は、1つ以上のディスプレイ装置828に指示される。エンドポイント810はまた、他の周辺装置(ビデオカセットプレイヤ/レコーダ、ドキュメントカメラ又はLCDプロジェクタ等)から入力を受信してもよく、又は他の周辺装置に出力を指示してもよい。
【0165】
エンドポイント810の様々な構成要素は、少なくとも1つのバス830により通信用に相互接続されてもよい。エンドポイント810の構成要素はまた、中央処理装置(CPU:central processing unit)832を有してもよい。CPU832は、メモリ834からロードされてもよいプログラム命令を解釈して実行する。揮発性RAM、不揮発性ROM、及び/又は磁気ディスクドライブ又はCD-ROMのような記憶装置を様々に有してもよいメモリ834は、実行可能プログラム、データファイル及び他の情報を格納する。
【0166】
更なる構成要素及び機能がエンドポイント810に存在してもよい。例えば、エンドポイント810は、全二重動作を可能にするために、エコーキャンセル又は低減用のモジュールを有してもよい。
【0167】
1つ以上の遠隔エンドポイント840は、ローカルエンドポイント810に関して前述したような同様の構成要素を有してもよい。ネットワーク850は、PSTN(Public Switched Telephone Network)又はIP型ネットワークを有してもよい。
【0168】
本発明の例示的な実施例について図示及び説明したが、本発明の要旨及び範囲を逸脱することなく、様々な変更が行われ得ることがわかる。例示的な実施例を参照して本発明について説明した。本発明の広い要旨及び範囲を逸脱することなく、様々な変更が行われ得ることが、当業者に明らかである。更に、特定の実施例及び特定の用途の実装に関して本発明について説明したが、本発明の有用性はこれに限定されず、本発明は如何なる数の環境及び実装にも有利に利用可能であることを、当業者は認識する。従って、前述の説明及び図面は、限定の意味ではなく、例示の意味でみなされる。
【0169】
以上の実施例に関し、更に、以下の項目を開示する。
【0170】
(1)オーディオ信号を符号化する際に使用される量子化方法であって、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する方法。
【0171】
(2)前記外れ値ソースベクトルを量子化する動作は、
(a)各外れ値ソースベクトルを半分にスケーリングし、スケーリングされた外れ値ソースベクトルを形成し、
(b)前記スケーリングされた外れ値ソースベクトルに最も近い格子点uを決定し、
(c)uのインデックスベクトルjを計算し、
(d)前記インデックスベクトルjからコードベクトルyを決定し、
(e)yとuとを比較し、
(f)yがuと異なる場合に、前記の動作(a)〜(e)を繰り返し、
(g)前記スケーリングされた外れ値ソースベクトルの16分の1を前記スケーリングされた外れ値ソースベクトルに加算し、新しいスケーリングされた外れ値ソースベクトルを形成し、
(h)前記の動作(b)〜(e)を繰り返し、
(i)yがuと等しい場合に、前記の動作(g)〜(h)を繰り返すことを有する、(1)に記載の方法。
【0172】
(3)前記格子は、8次元D8の格子を有する、(1)に記載の方法。
【0173】
(4)量子化のインデックスを可変ビット長符号化することを更に有する、(1)に記載の方法。
【0174】
(5)オーディオ信号を符号化する際に使用される量子化方法であって、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する方法。
【0175】
(6)前記量子化する動作は、
(a)前記ソースベクトルをシフト及びスケーリングし、
(b)前記スケーリングされたソースベクトルの成分を降順に並び換え、
(c)平均2乗誤差に基づいて前記並び換えられたベクトルのリーダベクトルlを決定し、
(d)前記リーダベクトルlの成分の順序を、前記スケーリングされたソースベクトルの成分の元の順序に配置し、前記コードベクトルyを導き、
(e)前記リーダベクトルlのフラグベクトルを決定し、
(f)前記フラグベクトルの成分を元の順序に配置することにより、ベクトルzを導き、
(g)前記リーダベクトルlに関するインデックスオフセットKを決定し、
(h)前記リーダベクトルが(2,0,0,0,0,0,0,-2)であり、前記コードベクトルyが-2の成分より小さいインデックスでの2の成分を有する場合、28を加算することにより前記オフセットKを調整し、
(i)ベクトル内積i=zpTを計算し、p=(1,2,4,8,16,32,64,128)であり、
(j)前記コードベクトルyに関するインデックスインクリメントjを決定し、
(k)前記コードベクトルyのインデックスkを計算し、k=K+jである、(5)に記載の方法。
【0176】
(7)前記格子は、循環Gosset格子RE8を有する、(5)に記載の方法。
【0177】
(8)オーディオ信号を符号化する際に使用される量子化方法であって、
係数毎に1ビットより大きいレートで変換係数を量子化するために第1の格子ベクトル量子化器を使用し、
係数毎に1ビットのレートで変換係数を量子化するために第2の格子ベクトル量子化器を使用することを有する方法。
【0178】
(9)前記第1の格子ベクトル量子化器を使用する動作は、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する、(8)に記載の方法。
【0179】
(10)前記第2の格子ベクトル量子化器を使用する動作は、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する、(8)に記載の方法。
【0180】
(11)前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化することを更に有する、(8)に記載の方法。
【0181】
(12)オーディオ信号をエンコードする方法であって、
前記オーディオ信号のサンプルのグループを時間ドメインから周波数ドメインに変換し、変換係数のフレームを形成し、
変換係数の各フレームを複数のグループにグループ化し、各グループは複数のサブフレームを有し、各サブフレームは特定の数の変換係数を有し、
前記サブフレームのrmsに基づいて前記サブフレームのそれぞれのノルムを決定し、
各サブフレームの前記rmsを量子化し、
前記サブフレームの前記量子化されたrmsで前記サブフレーム内の各係数を除算することにより、各サブフレームの係数を正規化し、
第1の格子ベクトル量子化を使用し、係数毎に1ビットより大きいレートで係数を量子化し、
第2の格子ベクトル量子化器を使用し、係数毎に1ビットのレートで係数を量子化することを有する方法。
【0182】
(13)前記第1の格子ベクトル量子化器を使用する動作は、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する、(12)に記載の方法。
【0183】
(14)前記第2の格子ベクトル量子化器を使用する動作は、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する、(12)に記載の方法。
【0184】
(15)前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化することを更に有する、(12)に記載の方法。
【0185】
(16)変換係数の結合されたセットをサブグループにグループ化し、各サブグループはサブフレームを有し、各サブフレームは特定の数の係数を有し、
前記サブフレームのうち1つのrmsを計算し、
前記サブフレームの前記rmsで前記サブフレーム内の各係数を除算することにより、前記サブフレームの係数を正規化し、
各サブグループのHuffman符号化フラグを維持し、
各サブグループの固定のビット数を維持し、
サブグループについてHuffman符号化を使用するために必要なビット数を計算し、
前記Huffman符号化を使用するために必要なビット数が前記サブグループの固定のビット数より小さい場合に、前記Huffmanフラグを設定し、Huffman符号化を使用し、
前記Huffman符号化を使用するために必要なビット数が前記サブグループの固定のビット数より小さくない場合に、前記Huffmanフラグをクリアし、固定のビット符号化数を使用することを更に有する、(12)に記載の方法。
【0186】
(17)プログラムを具現するコンピュータ可読媒体であって、
(1)、(5)、(8)又は(12)に記載の方法を実行するように機械により実行可能なコンピュータ可読媒体。
【0187】
(18)オーディオ信号をエンコードする22kHzエンコーダであって、
前記オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールと、
係数毎に1ビットより大きいレートで変換係数を量子化するように動作可能な第1の格子ベクトル量子化モジュールと、
係数毎に1ビットのレートで変換係数を量子化するように動作可能な第2の格子ベクトル量子化モジュールと
を有する22kHzエンコーダ。
【0188】
(19)前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有する、(18)に記載のエンコーダ。
【0189】
(20)オーディオ入出力インタフェースと、
前記オーディオ入出力インタフェースに通信可能に結合されたマイクロフォンと、
前記オーディオ入出力インタフェースに通信可能に結合されたスピーカと、
前記オーディオ入出力インタフェースに通信可能に結合された22kHzオーディオエンコーダと
を有するエンドポイントであって、
前記22kHzオーディオエンコーダは、
オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールと、
係数毎に1ビットより大きいレートで係数を量子化するように動作可能な第1の格子ベクトル量子化モジュールと、
係数毎に1ビットのレートで係数を量子化するように動作可能な第2の格子ベクトル量子化モジュールと
を有するエンドポイント。
【0190】
(21)前記22kHzオーディオエンコーダは、前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有する、(20)に記載のエンドポイント。
【0191】
(22)前記22kHzオーディオエンコーダは、
前記オーディオ入出力インタフェースに通信可能に結合されたバスと、
前記バスに通信可能に結合されたビデオ入出力インタフェースと、
前記ビデオ入出力インタフェースに通信可能に結合されたカメラと、
前記ビデオ入出力インタフェースに通信可能に結合されたディスプレイ装置と
を更に有する、(20)に記載のエンドポイント。
【符号の説明】
【0192】
810 エンドポイント
812 オーディオコーデック
814 オーディオI/Oインタフェース
816 マイクロフォン
818 スピーカ
820 ネットワークインタフェース
822 ビデオI/Oインタフェース
824 ビデオコーデック
826 カメラ
828 ディスプレイ
832 CPU
834 メモリ
840 エンドポイント
850 ネットワーク
【技術分野】
【0001】
本発明は、同日付で出願された“Dual-Transform Coding of Audio Signals”という題の同時継続の出願人同一の米国特許出願第11/580,629(管理番号No.199-0418US)に関する。この出願の内容が参照として取り込まれる。
【0002】
本発明は、概してオーディオ信号をエンコード及びデコードすることに関し、特に高速格子ベクトル量子化を使用して約22kHzまでのオーディオ帯域でオーディオ信号をエンコード及びデコードすることに関する。
【背景技術】
【0003】
オーディオ信号処理は、音声信号を生成し、又はこのような信号から音声を再生する多くのシステムで利用されている。デジタル信号プロセッサ(DSP:digital signal processor)の進展で、多くの信号処理機能がデジタルで実行される。これを行うために、オーディオ信号は音響波から生成され、デジタルデータに変換され、所望の効果について処理され、アナログ信号に逆変換され、音響波として再生される。
【0004】
アナログオーディオ信号は、典型的にはマイクロフォンによる音響波(音声)から生成される。アナログオーディオ信号の振幅は特定の周波数でサンプリングされ、振幅は振幅を表す数に変換される。典型的なサンプリング周波数は、約8kHz(すなわち毎秒8000回のサンプリング)、16kHz〜196kHz又はこの間の何らかである。デジタル化音声の品質に応じて、音声の各サンプルは8ビット〜128ビット又はこの間の何らかを使用してデジタル化され得る。高品質の音声を保つために、多数のビットが必要になり得る。例えば、非常にハイエンドでは、196kHzのサンプリングレートでサンプル毎に128ビットで1秒の音声を表すために、128ビット×192kHz=24Mbit=3MBが必要になり得る。3分(180秒)の典型的な曲では、540MBになる。ローエンドでは、典型的な電話会話で、音声は8kHzでサンプリングされ、サンプル毎に8ビットでデジタル化される。これは依然として8kHz×8ビット=64kビット/秒=8kB/秒になる。デジタル化音声データを使用、格納及び転送しやすいようにするために、典型的には、音声品質を低減することなく、サイズを低減するようにエンコードされる。これらが再生されようとするときに、元のデジタル化データを復元するようにデコードされる。
【0005】
オーディオ信号をエンコード又はデコードし、デジタルフォーマットでサイズを低減するための様々な方法が示唆されている。信号をエンコードしてデコードするプロセッサ又は処理モジュールは、一般的にコーデックと呼ばれている。あるものは可逆(すなわち、デコードされた信号が元のものと全く同じになる)である。あるものは不可逆(すなわち、デコードされた信号が元の信号からわずかに異なる)である。通常では、不可逆コーデックは、可逆コーデックより高い圧縮を実現し得る。不可逆コーデックは、人間の聴力のいくつかの特徴を利用し、人間により容易に知覚できないいくつかの音声を破棄し得る。ほとんどの人間にとって、約20Hz〜約20kHzの間のオーディオスペクトル内の音声のみが知覚できる。この範囲外の周波数の音声は、ほとんどの人間にとって知覚されない。従って、人間の聴取者に音声を再生するときに、範囲外の音声を再生することは、知覚音声品質を改善しない。人間の聴取者用のほとんどのオーディオシステムでは、範囲外の音声は再生されない。典型的な公衆電話システムでは、約300Hz〜約3000Hz内の周波数のみが2つの電話セットの間で通信される。このことはデータ伝送を低減する。
【0006】
音楽をエンコード/デコードする1つの一般的な方法は、MP3コーデックで使用される方法である。典型的な音楽CDは約40分の音楽を格納することができる。同じ音楽が同程度の音響品質でMP3エンコーダでエンコードされると、このようなCDは10〜16倍多くの音楽を格納し得る。
【0007】
“7kHz audio-coding within 64kbit/s”という題のITU-T(International Telecommunication Union Telecommunication Standardization Sector)のRecommendation G.722(1998)は、64kbit/s内で7kHzのオーディオ符号化を行う方法を記載している。この文献は参照として取り込まれる。ISDN回線は64kbit/sでデータを送信する容量を有する。この方法は、基本的にISDN回線を使用する電話ネットワークを通じたオーディオの帯域を3kHzから7kHzに増加させる。知覚されるオーディオ品質は改善される。この方法は既存の電話ネットワークを通じて利用可能な高品質のオーディオを生成するが、典型的には電話会社からのISDNサービスを必要とし、ISDNサービスは通常の狭帯域の電話サービスより高価である。
【0008】
電話通信で使用されるように推奨されている更に最近の方法は、“Coding at 24 and 32kbit/s for hands-free operation in systems with low frame loss”という題のITU-TのRecommendation G.722.1(1999)である。この文献は参照として取り込まれる。このRecommendationは、G.722よりかなり低い24kbit/s又は32kbit/sのビットレートで動作し、50Hz〜7kHzのオーディオ帯域を提供するデジタル広帯域コーダのアルゴリズムを記載している。このデータレートでは、通常のアナログ電話回線を使用する通常のモデムを有する電話は、広帯域オーディオ信号を送信することができる。従って、2つのエンドの電話セットがG.722.1に記載のエンコード/デコードを実行することができる限り、ほとんどの既存の電話ネットワークは広帯域会話をサポートすることができる。
【先行技術文献】
【非特許文献】
【0009】
【非特許文献1】ITU-T Recommendation G.722(1998)
【非特許文献2】ITU-T Recommendation G.722.1(1999)
【発明の概要】
【発明が解決しようとする課題】
【0010】
音声品質について電話会話が対面の会話とほとんど同じになるように、電話を通じて完全なスペクトル音声を有することが望ましい。音声品質を改善することができ、若しくはデータ負荷を低減することができ、又はこれらの双方を行うことができる方法を有することが好ましい。
【課題を解決するための手段】
【0011】
本発明は、オーディオコーデックの効率を改善する(すなわち、音声品質を改善し、伝送チャネル又は記憶媒体のデータ負荷を低減する)システム、方法、及び装置を開示する。本発明の一実施例は、入力オーディオ信号に少なくとも2つのMLT(Modulated Lapped Transform)を適用する。1つの低周波数MLTは約20msのフレームを使用し、1つの高周波数MLTはそれぞれ約5msの4つのフレームを使用する。低周波数MLTはG.722.1に記載のものと類似していてもよいが、高周波数MLTは高周波数で高い分解能を提供する。2重変換は、単一変換に比較して、高周波数での過渡状態の良好な再生を生じる。
【0012】
MLT係数は、サブフレームにグループ化され、異なる長さのグループにグループ化され得る。サブフレームの各振幅エンベロープは、対数スカラ量子化器により量子化されてもよく、MLT係数は、多次元格子ベクトルで量子化されてもよい。この開示の様々な実施例による高速格子ベクトル量子化器(fast lattice vector quantizer)は、格子ベクトル量子化に関連する通常の問題なしに、スカラ量子化器で量子化効率及び精度を改善する。この開示の様々な実施例は、2つの異なる量子化方式(一方は高レートの量子化、他方は低レートの量子化)を使用することにより、量子化及び符号化を更に改善する。
【0013】
この開示の様々な実施例は、Huffman符号化が振幅エンベロープ及び係数インデックスを符号化するために利用されるか否かを動的に決定することにより、量子化エンコードを更に改善する。4つのグループのそれぞれについて、グループ内の全ての係数インデックスを符号化するために必要な全体のビットを低減することができる場合にのみ、Huffman符号化が利用されてもよい。そうでない場合、不要な計算コストを低減するために、Huffman符号化は使用されなくてもよい。
【0014】
この開示の様々な実施例では、オーディオ信号を符号化する際に使用される量子化方法が提供される。この方法は、係数毎に1ビットより大きいレートで変換係数を量子化するために第1の格子ベクトル量子化器を使用し、係数毎に1ビットのレートで変換係数を量子化するために第2の格子ベクトル量子化器を使用することを有する。
【0015】
係数毎に1ビットより大きいレートで変換係数を量子化するために、この方法は、切り捨てられた格子からコードブックを構成し、格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有してもよい。
【0016】
係数毎に1ビットのレートで変換係数を量子化するために、この方法は、同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、各コードベクトルを量子化することを有してもよい。
【0017】
この開示の様々な実施例によれば、オーディオ信号をエンコードする方法が提供される。この方法は、オーディオ信号のサンプルのグループを時間ドメインから周波数ドメインに変換し、変換係数のフレームを形成することを有してもよい。この方法は、変換係数の各フレームを複数のグループにグループ化することを更に有してもよく、各グループは複数のサブフレームを有し、各サブフレームは特定の数の変換係数を有する。この方法は、サブフレームのrmsに基づいてサブフレームのそれぞれのノルムを決定することを更に有してもよい。この方法は、各サブフレームのrmsを量子化することを更に有してもよい。この方法は、サブフレームの量子化されたrmsでサブフレーム内の各係数を除算することにより、各サブフレームの係数を正規化することを更に有してもよい。この方法は、第1の格子ベクトル量子化を使用し、係数毎に1ビットより大きいレートで係数を量子化することを更に有してもよい。この方法は、第2の格子ベクトル量子化器を使用し、係数毎に1ビットのレートで係数を量子化することを更に有してもよい。
【0018】
プログラムを具現したコンピュータ可読媒体も提供され、プログラムは、ここに記載の方法のうちいずれかを実行するように機械により実行可能である。
【0019】
この開示の様々な実施例によれば、オーディオ信号をエンコードする22kHzエンコーダが提供される。エンコーダは、オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールを有してもよい。エンコーダは、係数毎に1ビットより大きいレートで変換係数を量子化するように動作可能な第1の格子ベクトル量子化モジュールを更に有してもよい。エンコーダは、係数毎に1ビットのレートで変換係数を量子化するように動作可能な第2の格子ベクトル量子化モジュールを更に有してもよい。この方法は、第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有してもよい。
【0020】
この開示の様々な実施例によれば、エンドポイントが提供される。エンドポイントは、オーディオ入出力インタフェースと、オーディオ入出力インタフェースに通信可能に結合されたマイクロフォンと、オーディオ入出力インタフェースに通信可能に結合されたスピーカと、オーディオ入出力インタフェースに通信可能に結合された22kHzオーディオエンコーダとを有してもよい。エンドポイントは、オーディオ入出力インタフェースに通信可能に結合されたバスと、バスに通信可能に結合されたビデオ入出力インタフェースと、ビデオ入出力インタフェースに通信可能に結合されたカメラと、ビデオ入出力インタフェースに通信可能に結合されたディスプレイ装置とを更に有してもよい。
【図面の簡単な説明】
【0021】
【図1】この開示の実施例による例示的な2重変換方式
【図2A】この開示の実施例による例示的な係数グループ化方式
【図2B】この開示の他の実施例による例示的な係数グループ化方式
【図3A】この開示の実施例による例示的なエンコードされたビットストリーム
【図3B】この開示の実施例によるフラグビットの例示的な構造
【図3C】この開示の実施例による変換係数の例示的な構造
【図3D】この開示の実施例による変換係数の例示的な構造
【図4】この開示の実施例によるエンコード処理の例示的な処理フロー図
【図5】この開示の実施例によるデコード処理の例示的な処理フロー図
【図6】この開示の実施例によるエンコーダの例示的なブロック図
【図7】この開示の実施例によるデコーダの例示的なブロック図
【図8】この開示の実施例による会議システムの例示的なブロック図
【発明を実施するための形態】
【0022】
以下の好ましい実施例の詳細な説明が添付図面と共に考慮されて、本発明は良く理解できる。
【0023】
この開示の様々な実施例は、革新的なエンコーダ及びデコーダを使用することにより、オーディオ信号処理の性能を拡張して改善する。エンコード処理は、変換処理と量子化処理とエンコード処理とを広く含む。この開示の様々な実施例は、全てのこれらの処理について改善を与える。
【0024】
ほとんどの従来技術のオーディオ信号処理では、オーディオ信号フレームは固定長を有する。フレーム長が短いほど、遅延が短くなる。短いフレーム長はまた、良好な時間分解能と高周波数で良好な性能を提供する。しかし、ショートフレームは悪い周波数分解能を提供する。対照的に、フレーム長が長いほど、遅延が長くなる。しかし、ロングフレームは、良好な周波数分解能と低周波数で良好な性能を提供し、ピッチ調波(pitch harmonics)を解決する。妥協して、フレーム長は典型的には20msの範囲であり、これがG.722.1 Recommendationで採用されたフレーム長である。
【0025】
この開示の様々な実施例によれば、少なくとも2つの異なる長さのオーディオサンプルのフレームが使用される。1つは長いフレーム長であり、低周波数スペクトルの良好な提示に設計される。他は短いフレーム長であり、高周波数信号に使用され、高周波数で良好な分解能を提供する。2つの信号フレームの組み合わせは音声品質を改善する。これは、完全な人間のオーディオスペクトル(例えば、約20Hz〜約22kHz)にスペクトル応答を拡張することができる。
【0026】
数カテゴリ内で所定のビット割り当てを使用するのではなく、この開示の一実施例によれば、ビット割り当ては適応的且つ動的でもよい。動的なビット割り当ては、変換係数の量子化中に使用されてもよい。従って、利用可能なビットが最善の使用にされる。
【0027】
少なくとも2つの変換で、量子化及び符号化される変換係数は、単一の変換より大きくなる。この開示の一実施例では、簡単なスカラ量子化方法を使用する代わりに、高速格子ベクトル量子化方法が使用されてもよい。一般的に、ベクトル量子化は、簡単なスカラ量子化方法よりかなり効率的である。特に、格子ベクトル量子化(LVQ:lattice vector quantization)は、比較的簡単な量子化処理であり、LVQコードブック(codebook)の正規構造のため必要なメモリの節約を実現することができるという点で、従来の周知のLBG(Linde, Buzo, and Gray)ベクトル量子化に対して利点を有する。しかし、所定のレートで格子を切り捨てて入力ソースの確率密度関数(PDF:probability density function)に合致するLVQコードブックをどのように生成するか、LVQコードブックのコードベクトル(格子点)をこれらのインデックスにどのように迅速に変換するか、切り捨てられた格子の外にあるソースベクトル(“外れ値(outlier)”)をどのように量子化するかという課題を含み、複数の制約により、格子ベクトル量子化はリアルタイムの音声及びオーディオ符号化で広く使用されていない。
【0028】
この開示の実施例による高速LVQ(FLVQ:fast LVQ)は、前述の制約を回避する。FLVQは、高レート量子化器(HRQ:higher rate quantizer)と低レート量子化器(LRQ:lower rate quantizer)とを有する。変換係数を量子化する際に、量子化器は、高速検索アルゴリズムを使用するために格子コードブックの代わりに係数をスケーリングし(scale)、デコーダで再現された係数を再スケーリングする(rescale)。この係数をスケーリングする方法はまた、LVQコードブックとして使用される切り捨てられた格子内に外れ値(大きい係数)を戻すことにより、“外れ値”問題を解決することができる。入力ソース(例えば、人間の音声又は可聴音楽)のPDFは、様々なオーディオソースの大きい集合から作られる。LVQの制約が取り除かれると、この開示の実施例でのFLVQの使用は、従来技術のスカラ量子化に対して量子化効率を改善する。
【0029】
この開示の他の実施例では、量子化及び符号化効率は、動的Huffman符号化により更に改善され得る。エントロピー符号化方法の1つとしてのHuffman符号化は、ソースが不規則に分布しているときに最も有用である。典型的には変換係数は不規則に分布する。従って、Huffman符号化を使用することは、符号化効率を改善することができる。この開示のこの実施例では、Huffman符号化がビット要件を低減するときに、Huffman符号化は、振幅エンベロープと変換係数の量子化インデックスとの双方をエンコードするために使用されてもよい。Huffman符号化が使用されるか否かを決定する際に、Huffman符号化を使用する合計のビット数と、ノルム(norm)又は変換係数の量子化に使用される利用可能なビット数とが比較される。何らか節約ができるときにのみ、Huffman符号化が使用されてもよい。このように、最善の符号化方法が使用される。
【0030】
[2重変換]
一実施例では、ロングフレーム及びショートフレームと呼ばれる2つのフレームサイズが使用される。簡単にするために、この開示は2重変換を示すが、ある実施例では、単一のフレームサイズが使用されてもよく、2より多くのフレームサイズが使用されてもよいことがわかる。
【0031】
図1を参照すると、オーディオ信号102がサンプリングされてデジタル化される。この特定の例では、オーディオ信号は48kHzでサンプリングされる。しかし、他のサンプリング周波数が使用されてもよい。この例では、ロングフレームL 104は、約20msのフレーム長を有する。ロングフレームL 104毎に、複数のショートフレームS1 106、S2 107、S3 108及びS4 109が存在する。この例では、各ショートフレーム106、107、108及び109は、約5msのフレーム長を有する。従って、各ロングフレーム104は約960サンプル(48kHz×0.02s=960)を有するが、各ショートフレーム(106、107、108、109)は約240サンプル(48kHz×0.005s=240)を有する。この例では4つのショートフレーム106、107、108及び109が示されているが、少ない数又は大きい数のショートフレームが存在してもよい。例えば、ショートフレームの数は、2、3、4、5等でもよい。
【0032】
これらのフレーム104、106、107、108及び109は時間ドメインから周波数ドメインに変換される。例えば、ITU-T Recommendation G.722.1に記載のMLT(Modulated Lapped Transform)を使用して変換されてもよい。簡単にするため、この開示はMLT変換を示すが、FFT(Fast Fourier Transform)及びDCT(Discrete Cosine Transform)等のような他の種類の変換が使用されてもよい。
【0033】
変換は、図2Aに示すように、MLT係数セット212、222、224、226及び228を生じる。各ショートフレームのMLT係数セット222、224、226及び228は約240の係数を有しており、各係数はその隣接から約100Hz離れている。ロングフレーム212については、約960のMLT係数、すなわち25Hz毎に1つの係数が存在する。これらの係数は、1920のMLT係数の単一のセットを形成するように結合されてもよい。この係数のセットは、音声の低周波数特性と高周波数特性との双方を取り込むことができる。22kHzの符号化帯域のため、約22kHzより上の周波数を表すMLT変換係数は無視されてもよい。
【0034】
ロング変換は低周波数を取り込むのに適している。ショート変換は高周波数を取り込むのに適している。従って、全ての係数が変換された音声信号を再生するのに同じ値を伝えるとは限らない。一実施例では、係数のいくつかは無視されてもよい。各ショートフレームのMLT係数セットは約240の係数を有する。各係数はその隣接から約100Hz離れている。一実施例では、約6800Hzより小さく、約22,000Hzより上の係数は無視されてもよい。従って、ショートフレーム毎に152の係数が保持されてもよく、4つのショートフレーム係数の合計数は608になる。ロングフレームについては、ロングフレームは低周波数信号を表すために使用されるため、一実施例では、約7kHzより下の周波数の係数が保持されてもよく、約7kHzより上のロング変換からの係数が破棄されてもよい。従って、低周波数は280の係数を有してもよい。従って、一実施例では、約22kHzまでのオーディオスペクトルについて全係数は888(608+280)になってもよい。
【0035】
係数は、量子化及び符号化の前に、サブフレーム及びグループにグループ化されてもよい。この実施例での“サブフレーム”は、G.722.1の方法の“領域(region)”に類似してもよい。サブフレームは、振幅エンベロープを計算し、可変ビット割り当てを割り当て、更に量子化及びエンコードを行う単位として使用される。グループは、スペクトルの範囲内で同じ長さを有する複数のサブフレームを有する。グループ内のサブフレームは、類似の特性を有してもよく、同様に量子化又はエンコードされてもよい。しかし、異なるグループのサブフレームでは、量子化又はエンコードする方法は異なり得る。従来技術の方法の領域とは異なり、異なるサブフレーム及びグループがより近くスペクトルを表すことができ、量子化及びエンコード中のビット要件が低減できるように、サブフレームは、グループと同様に異なるサイズを有することができる。
【0036】
この例では、0Hz〜22kHzの全体のオーディオスペクトルは4つのグループに分割されてもよい。第1のグループは約0Hzから約4kHzまでの周波数をカバーする。第1のグループは10のサブフレームを有し、各サブフレームは16のMLT係数を有する。第1のグループの全係数は160の係数であり、これらの全てはロングフレーム変換から生じる。第2のグループは約4kHzから約7kHzまでのスペクトルをカバーする。この第2のグループは5のサブフレームを有し、それぞれ24の係数を有し、合計で120の係数になる。これらの係数はロングフレーム変換から生じる。第3のグループは約7kHz(ある実施例では、約6.8kHz)から約14kHzまでのスペクトルをカバーする。ロングフレーム変換及びショートフレーム変換は境界で重複し、遷移をスムーズにする。第3のグループは9のサブフレームを有し、それぞれ32の係数を有し、合計で288の係数になる。これらの係数は4つのショートフレーム変換から生じる。第4のグループは約14kHzから約22kHzまでのスペクトルをカバーする。このグループは10のサブフレームを有し、それぞれ32の係数を有し、合計で320の係数になる。この例では、全体で888の係数が量子化及びエンコードされる。
【0037】
境界周波数の周りの250Hzの周波数領域で三角窓を使用して、重複加算(OLA:Overlap Add)がロングMLT及びショートMLTの係数の間で実行されてもよい。ロングMLTでは、6755Hzで始まる10の係数が下り傾斜(down-sloping ramp)で乗算される。ショートMLTでは、6800Hzで始まる2の係数が上り傾斜(up-sloping ramp)で乗算される。
【0038】
前記の方式に従って係数をサブフレーム及びグループにグループ化する際に、これらの係数は、周波数に従って低周波数から高周波数に配置されてもよい。例えば、同じ周波数の係数は一緒にグループ化されてもよい。Lからの係数に続いて、S1、S2、S3及びS4からの1つがあり、Lからの次に高い周波数があり、これが繰り返される。他の配置又は系列も可能であり、受け入れられる。例えば、同じ変換からの係数は一緒にグループ化されてもよい。すなわち、L変換からの全ての係数が最初にあり、これに続いてS1変換、S2、S3及びS4変換からの係数があってもよい。
【0039】
ここでの配置又は系列は、後に量子化又はエンコードに影響を与えてもよいことがわかる。一実施例では、一般的に以下の配置が、後に記載する量子化及びエンコード方式に良好な結果を提供すると思われる。ロングフレーム変換からの係数は、周波数に従って低いものから高いものに、第1のグループ及び第2のグループに配置される。一般的には4つのショート変換からの係数は周波数に従って配置されないが、厳密には周波数系列に従って配列されない。まず、第1のショートフレーム変換からの8の係数が選択され、周波数系列に従って配置される。次に、第2のショートフレーム変換から同じ周波数の8の係数が選択される。同様に、第3のショートフレーム変換から同じ周波数の8の係数が選択される。次に、第4のショートフレーム変換から係数が選択される。その後、第1のショートフレーム変換S1に戻り、次の8の係数を選択する。ショートフレーム変換からの全ての係数が選択されるまで、処理が繰り返される。
【0040】
前記の2重変換及びグループ化を使用して、4のグループ及び34のサブグループが存在し、各サブグループは16、24又は32の係数を有する。低周波数と高周波数とのうち一方のみを変換することができる、又はまずまずの分解能ではどちらも変換することができない従来技術の方法での単一の変換とは異なり、この開示の様々な実施例は、オーディオスペクトルの低周波数及び高周波数の双方で良好な分解能を提供することができる。計算負荷は、スペクトル範囲を22kHzでの完全なオーディオスペクトルに拡張するために、単一のショートフレーム変換(例えば、5msのフレーム長、48kHzのサンプリングレート)よりわずかにのみ大きくなる。これらの係数は、完全なオーディオスペクトルを表す。これらの係数は、様々な量子化又はエンコード方法を使用して(例えばG.722.1に記載の方法を使用して)量子化及びエンコードされてもよい。G.722.1方法が使用される場合、各サブフレームの振幅エンベロープがまず計算され、スカラ量子化され、Huffman符号化される。振幅エンベロープはまた、サブフレームが割り当てられたカテゴリに従って、各サブフレーム内で係数インデックスをエンコードするビットを割り当てるためにも使用される。次に、係数インデックスはこれらのカテゴリに従って量子化される。
【0041】
前述の方式は、音声及び一般の音楽に有用である。他の実施例によれば、パーカッション(percussion)形式の信号がオーディオ信号に存在してもよい。パーカッション形式の信号は、約10kHzまでの周波数領域でのロングMLT係数の平均勾配傾斜、最大のロングMLT係数の位置、及びロングMLT係数のゼロ交差レート(ZCR:zero-crossing rate)のような特徴に基づいて検出されてもよい。パーカッション形式の信号の例は、カスタネット及びトライアングル等により生成された音を非限定的に含む。このようなパーカッション形式の信号が検出されると、図2Bに示すように、ロングフレーム変換係数の境界周波数は(約7kHzではなく)約800Hzに調整されてもよい。この調整は、前エコー現象を有利に低減する。従って、この実施例では、ロングフレーム変換係数232は、約0Hz〜約800Hzの範囲の周波数を有してもよく、ショートフレーム変換係数242、244、246及び248は約600Hz〜約22kHzの範囲の周波数を有してもよい。周波数の重複は、スムーズな遷移を提供することに役立つ。
【0042】
OLAは、境界周波数の周りの250Hzの周波数領域で三角窓を使用して、ロングMLT及びショートMLT係数の間で実行されてもよい。ロングMLTでは、575Hzで始まる10の係数が下り傾斜で乗算される。ショートMLTでは、600Hzで始まる2の係数が上り傾斜で乗算される。
【0043】
25Hz間隔を中心とした低い400のロングMLT係数は、それぞれ20の係数を有する20のグループに分割される。各グループのスペクトルエネルギーEiは以下のように計算される。
【0044】
【数1】
ただし、xはロングMLT係数であり、iはグループ番号であり、THREQはTHREQ=7000として実験的に選択され得る静の閾値である。
【0045】
現在のフレームと前のフレームとの間のグループエネルギー比の自然対数REiは以下のように計算される。
【0046】
【数2】
ただし、nはフレーム番号である。
【0047】
立ち上がりの平均勾配傾斜Rampupは以下のように計算される。
【0048】
【数3】
立ち下がりの平均勾配傾斜Rampdownは以下のように計算される。
【0049】
【数4】
パーカッション形式の信号は、以下の条件が満たされたときに検出される。(1)Rampup>THRERAMPである場合(ただし、TRHERAMPは傾斜の所定の閾値であり、1.5である)、(2)第1のロングMLT係数x0がロングMLT係数の最大値である場合、且つ(3)ゼロ交差レートZCRが所定の閾値THREZCR=0.1より小さい場合。
【0050】
パーカッション形式の信号が検出されると、境界周波数は、現在のフレーム及び次の2つのフレームについて約800Hzに調整される。次のフレームn+1又はn+1で条件Rampdown>1が真である場合、エンコーダは、8フレームの間に調整された境界周波数で動作する。そうでない場合、エンコーダは、フレームn+3で7kHzの境界周波数に戻る。
【0051】
境界周波数が約800Hzであるときのパーカッション形式の信号では、2重MLT係数は異なる長さの38のサブフレームに分割される。800Hzより下の周波数を表す32のロングMLT係数が存在し、16の係数の2つのサブフレームに分割される。ショートMLT係数は様々なグループに分割される。第1のグループは16の係数の12のサブフレームを有し、600Hz〜5.4kHzの周波数を表す。第2のグループは24の係数の12のサブフレームを有し、5.4kHz〜12.6kHzの周波数を表す。第3のグループは32の係数の12のサブフレームを有し、12.6kHz〜22.2kHzの周波数を表す。各サブフレームは、同じショートMLTの係数を有する。
【0052】
[振幅エンベロープ]
サブフレームの振幅エンベロープは量子化及び分析され、Huffman符号化が使用されるべきか否かを決定する。固定のビット割り当てが、初期設定及びベンチマークとして各振幅エンベロープに割り当てられてもよい。Huffman符号化の使用が固定のビットに比べていくつかのビットを節約することができる場合、これが使用されてもよい。振幅エンベロープのHuffmanフラグが設定されるため、デコーダはHuffman符号化を適用するか否かを認識する。節約されるビット数は、残りのエンコードに利用可能なビットに格納される。そうでない場合、Huffman符号化は使用されず、フラグがクリアされ、初期設定の固定のビットが使用される。
【0053】
例えば、一実施例では、各エンベロープは5ビットを割り当てられる。エンベロープに使用される合計の初期設定のビットは、34×5=170ビットである。伝送レートが64kbit/sであることを仮定すると、フレーム毎のビット量は64kbit/s×20ms=1280ビットである。この例では、6のフラグビットが確保される。従って、係数インデックスをエンコードするために利用可能なビットは1280-6-170=1104ビットである。
【0054】
サブフレーム毎に、ノルムとも呼ばれる振幅エンベロープは、サブフレームのMLT係数の2乗平均平方根(RMS:Root-Mean-Square)値として定義され、以下のように計算される。
【0055】
【数5】
ただし、rはサブフレームのインデックスであり、M(r)はサブフレームのサイズであり、これは16、24、32でもよい。mlt(r,n)は第rのサブフレームの第nのMLT係数である。この例では、
1≦r≦10である場合、M(r)は16であり、全てのこれらのサブフレームは第1のグループ0〜4kHzになる。
11≦r≦15である場合、M(r)は24であり、全てのこれらのサブフレームは第2のグループ4kHz〜7kHzになる。
16≦r≦24である場合、M(r)は32であり、全てのこれらのサブフレームは第3のグループ6.8kHz〜14kHzになる。
25≦r≦34である場合、M(r)は32であり、全てのこれらのサブフレームは第4のグループ14〜22kHzになる。
【0056】
rms(r)の値は、対数量子化器で計算され、スカラ量子化される。以下の表1は、対数量子化器のコードブックを示している。
【0057】
【表1】
第1のサブフレームの振幅エンベロープrms(l)は5ビットで量子化され、その量子化インデックスはデコーダに直接送信される。従って、最初の32のコードワードのみが、rms(l)を量子化するために使用される。残りの33の振幅エンベロープは、全ての40のコードワードで量子化され、得られたインデックスは以下のように差分符号化される。
【0058】
【数6】
ただし、i=0,1,2,...である。差分インデックスは[-15,16]の範囲に制約される。負の差分インデックスが最初に調整され、次に正の差分インデックスが調整される。最後に、Huffman符号化が調整された差分インデックスに適用される。Huffman符号化に使用される合計ビットは、単純な符号化(すなわち、Huffman符号化を使用しない)に使用されるビット数と比較される。合計ビットがHuffman符号化のないものより小さい場合、Huffmanコードはチャネルで送信されてもよい。そうでない場合、量子化インデックスの差分コードがデコーダに送信される。従って、エンコードされるビット数は常に最小になり得る。Huffmanコードが使用される場合、Huffmanフラグが設定され、節約されたビットが利用可能ビットに戻される。例えば、Huffman符号化の合計ビットが160ビットである場合、170-160=10ビットが節約される。利用可能なビットは10+1104=1114ビットになる。
【0059】
[適応ビット割り当て方式]
変換係数のグループのエネルギーに基づく適応ビット割り当て方式は、フレームの利用可能なビットをサブフレーム間に割り当てるために使用され得る。一実施例では、改善したビット割り当て方式が使用されてもよい。G.722.1に使用される方式とは異なり、係数インデックスの適応ビット割り当てはカテゴリにより固定されず、振幅エンベロープが量子化されるのと同時の割り当て処理により固定される。ビット割り当ては次のようにされてもよい。
【0060】
Remainderが合計の利用可能なビット数を示すものとし、r(n)が第nのサブフレームに割り当てられたビット数を示すものとする。前記の例では、振幅エンベロープに適用されたHuffman符号化でRemainder=1114である。
【0061】
ステップ0:ビット割り当てをゼロに初期化する。すなわち、r(n)=0、ただしn=1,2,3,...Nであり、Nは合計のサブフレーム数である。前記の例ではNは34である。
【0062】
ステップ1:サブフレームの中で最大のRMSを有するサブフレームのインデックスnを見つける。
【0063】
ステップ2:M(n)ビットを第nのサブフレームに割り当てる。すなわち、r(n)=r(n)+M(n)である(ただし、M(n)は第nのサブフレームの係数の数である)。
【0064】
ステップ3:rms(n)を2で割り、Remainder=Remainder-M(n)とする。
【0065】
ステップ4:Remainder≧16である場合にはステップ1〜3を繰り返す。そうでない場合は終了する。
【0066】
ビット割り当ての後に、小さい残りビットを除いて、全てのビットはサブフレームに割り当てられる。いくつかのサブフレームは割り当てられたビットを有さないことがある。この理由は、これらのサブフレームのRMS値が小さすぎるからである。すなわち、スペクトルのその部分からオーディオ信号に相当の寄与が存在しないからである。スペクトルのその部分は無視されてもよい。
【0067】
[高速格子ベクトル量子化]
従来技術の量子化及びエンコード方法は、前記の実施例を実装し、処理されたオーディオ信号を完全なオーディオスペクトルに拡張するために使用されてもよいが、広い視聴者に最大の可能性をもたらさないことがある。従来技術の方法を使用すると、ビットレートの要件は高くなり、処理された完全なスペクトルのオーディオ信号を送信することが困難になる。この開示の一実施例による新しい高速格子ベクトル量子化(FLVQ:Fast Lattice Vector Quantization)が使用可能であり、これは符号化効率を改善し、ビット要件を低減する。FLVQは、如何なるオーディオ信号の量子化及びエンコードに使用されてもよい。
【0068】
MLT係数は、それぞれ16、24及び32の係数のサブフレームに分割される。各サブフレームのRMS又はノルム(すなわち、サブフレームの係数の2乗平均平方根の値が計算され、係数が量子化されたノルムにより正規化される。各サブフレームの正規化された係数は、高速LVQにより8次元ベクトルで量子化される。高速格子ベクトル量子化は、高レート量子化器(HRQ:higher rate quantizer)と低レート量子化器(LRQ:lower rate quantizer)とを有する。高レート量子化器は、1ビット/係数より大きいレートで係数を量子化するように設計され、低レート量子化器は、1ビット/係数で量子化するために使用される。
【0069】
格子ベクトル量子化器は、均一に分布したソースのみに適している。幾何学的に、格子はN次元のユークリッド空間の点の規則配置である。この場合、ソース(すなわち、MLT係数)は不均一であるため、エントロピー符号化(Huffman符号化)が高レート量子化のインデックスに適用され、HRQの性能を改善する。
【0070】
[高レート量子化]
高レート量子化器は、格子D8のVoronoiコードに基づき、2〜6ビット/係数のレートで正規化されたMLT係数を量子化するように設計されてもよい。このサブ量子化器のコードブックは格子D8の有限領域から構成されてもよく、メモリには格納されない。コードベクトルは簡単な代数方法により生成され得る。
【0071】
格子D8は以下のように定義される。
【0072】
【数7】
ただし、Z8は整数座標での全ての点を有する格子である。D8は整数の格子であり、偶数の和の整数座標を有する点y=(y1,y2,y3,y4,y5,y6,y7,y8)で構成される。例えば、ベクトルy=(-1,-1,0,2,1,-3,2,4)は4の偶数の和を有しており、従ってyはD8の格子点である。
【0073】
Conway及びSloaneは、いくつかの周知の格子についてD8に適用され得る高速量子化アルゴリズムを作っている。しかし、これらのアルゴリズムは、リアルタイムのオーディオ符号化のコードブックとして使用できない無限格子を仮定している。換言すると、所定のレートでは、これらのアルゴリズムは、切り捨てられた格子領域の外にある入力ベクトルを量子化するために使用できない。
【0074】
一実施例では、正規化されたMLT係数は、それぞれ2、3、4及び5ビット/係数のレートで量子化される。パーカッション形式の信号が検出されるときのような他の実施例では、最大量子化レートは6ビット/係数でもよい。所定のレートで歪みを最小化するために、格子D8は切り捨てられ、スケーリング(scale)されてもよい。実際に、Conway他により記述された高速検索アルゴリズムを使用するために、係数は格子コードブックの代わりにスケーリングされ、デコーダで再現された係数を再スケーリングする。更に、“外れ値”を量子化する高速方法も展開されてもよい。
【0075】
所定のレートRビット/次元(1<R<7)では、それぞれの8次元の係数ベクトルx=(x1,x2,x3,x4,x5,x6,x7,x8)は以下のように量子化されてもよい。
【0076】
1)ベクトルxの各成分に小さいオフセットa=2-6を適用し、切り捨てられたVoronoi領域の境界での何らかの格子点を回避する。すなわち、x1=x-aであり、a=(2-6,2-6,2-6,2-6,2-6,2-6,2-6,2-6)である。
【0077】
2)スケーリング因子αでベクトルx1をスケーリングする。すなわち、x2=αx1である。所定のレートRでは、最適なスケーリング因子は以下の表2に示すように実験的に選択される。
【0078】
【表2】
3)スケーリングされたベクトルx2に最も近いD8の格子点vを見つける。これは、Conway及びSloaneに記述された検索アルゴリズムを使用して行われてもよい。
【0079】
4)vが所定のレートRで切り捨てられたVoronoi領域のコードベクトルであると仮定し、vのインデックスベクトルk=(k1,k2,k3,k4,k5,k6,k7,k8)を計算する。ただし、0≦ki<2Rであり、i=1,2,...,8である。インデックスkは以下により得られる。
【0080】
【数8】
ただし、GはD8の生成行列であり、以下のように定義される。
【0081】
【数9】
且つ
【0082】
【数10】
5)Conway他により記述されたアルゴリズムを使用してインデックスベクトルkからコードベクトルyを計算し、yとvとを比較する。y及びvが全く同じである場合、kはx2の最善のコードベクトルのインデックスであり、ここで終了する。そうでない場合、入力ベクトルx2は外れ値であり、以下のステップにより量子化されてもよい。
【0083】
6)ベクトルx2を2でスケールダウンする。すなわち、x2=x2/2である。
【0084】
7)x2に最も近いD8の格子点uを見つけ、uのインデックスベクトルjを計算する。
【0085】
8)インデックスベクトルjからコードベクトルyを見つけ、yとuとを比較する。yがuと異なる場合、ステップ6)〜8)を繰り返す。そうでない場合、w=x2/16を計算する。MLT係数の正規化のため、切り捨てられた格子の外れ値へのコードベクトルを見つけるために、数回の繰り返しが行われてもよい。
【0086】
9)x2=x2+wを計算する。
【0087】
10)x2に最も近いD8の格子点uを見つけ、uのインデックスベクトルjを計算する。
【0088】
11)インデックスベクトルjからコードベクトルyを見つけ、yとuとを比較する。yとuとが全く同じである場合、k=jでステップ9)〜11)を繰り返す。そうでない場合、kはx2に対する最善のコードベクトルのインデックスであり、終了する。
【0089】
高レート量子化器のデコード手順は以下のように実行されてもよい。
【0090】
1)所定のレートRに従ってインデックスベクトルkからコードベクトルyを見つける。
【0091】
2)前記の表2で与えられるスケーリング因子αでコードベクトルyを再スケーリングする。すなわち、y1=y/αである。
【0092】
3)再スケーリングされたコードベクトルy1に量子化処理のステップ1)で使用された同じオフセットaを加算する。すなわち、y2=y1+aであり、終了する。
【0093】
[低レート量子化]
いわゆる循環Gosset格子(rotated Gosset lattice)RE8に基づく低レート量子化は、1ビット/係数のレートで正規化されたMLT係数を量子化するように提供されてもよい。
【0094】
格子RE8は、原点を中心とした半径2√(2r)の同心球に入る点で構成される。ただし、r=0,1,2,3,...である。球の一式の点は球面コード(spherical code)を構成し、量子化コードブックとして使用され得る。
【0095】
低レート量子化では、コードブックは、r=1の球にあるRE8の全ての240の点と、格子RE8に属さない16の更なる点とで構成される。更なる点は、2つのベクトル(-2,0,0,0,0,0,0,0)及び(2,0,0,0,0,0,0,0)の成分の置換により得られ、原点に近い入力ベクトルを量子化するために使用される。高速インデックスアルゴリズムを作るために、コードブックのコードベクトルは特定の順に配置され、以下の表3に示される。
【0096】
それぞれの8次元の係数ベクトルx=(x1,x2,x3,x4,x5,x6,x7,x8)について、量子化は以下のように実行されてもよい。
【0097】
1)ベクトルxの各成分にオフセットa=2-6を適用する。すなわち、x1=x-aであり、a=(2-6,2-6,2-6,2-6,2-6,2-6,2-6,2-6)である。
【0098】
2)スケーリング因子αでベクトルx1をスケーリングする。すなわち、x2=αx1である。最適なスケーリング因子は実験的にα=1.25として選択される。
【0099】
3)x2の成分を降順に並び換えることにより、新しいベクトルx3を得る。
【0100】
4)平均2乗誤差(MSE:mean-squared error)についてx3に最適のベクトルlを表4から見つける。以下の表4で与えられるベクトルは、いわゆるコードベクトルのリーダ(leader)と呼ばれ、コードブックの如何なるコードベクトルもそのリーダの置換により生成され得る。
【0101】
5)lの成分を元の順序に並び換えることにより、最善のコードベクトルyを得る。
【0102】
6)以下の表5でlのフラグベクトルを見つけ、フラグベクトルの成分を元の順序に並び換えることにより、ベクトルzを得る。フラグベクトルは以下のように定められる。リーダが-2、2及び0で構成される場合、-2及び2が1で示され、0が0で示される。リーダが-1及び1で構成される場合、-1が1で示され、1が0で示される。
【0103】
7)以下の表6のリーダlに関するインデックスオフセットKを見つける。
【0104】
8)リーダlが(2,0,0,0,0,0,0,-2)であり、コードベクトルyが成分-2のものより小さいインデックスの成分2を有する場合、オフセットKはK=K+28として調整される。
【0105】
9)ベクトル内積i=zpTを計算する。ただし、p=(1,2,4,8,16,32,64,128)である。
【0106】
10)表7のコードベクトルyに関するインデックスインクリメントjをiから見つける。
【0107】
11)コードベクトルyのインデックスkを計算する。すなわち、k=K+jである。ここで終了する。
【0108】
以下のステップは、低レート量子化器のデコード手順で行われてもよい。
【0109】
1)受信インデックスkから表3のコードベクトルyを見つける。
【0110】
2)スケーリング因子α=1.5でコードベクトルyを再スケーリングする。すなわち、y1=y/αである。
【0111】
3)再スケーリングされたコードベクトルy1にエンコード手順のステップ1)で使用された同じオフセットaを加算する。すなわち、y2=y1+aである。ここで終了する。
【0112】
【表3】
【0113】
【表4】
【0114】
【表5】
【0115】
【表6】
【0116】
【表7】
[量子化インデックスのHuffman符号化]
MLT係数は均一に分布していない。8次元の係数ベクトルは原点の周囲で高い集積率を有することが観測されている。従って、格子ベクトル量子化器のコードブックは不均一のソースには最適ではない。
【0117】
前記の高レート量子化器の性能を改善するために、量子化のインデックスを符号化するためにHuffman符号化器が使用されてもよい。低レート(<2ビット/サンプル)の符号化のため、14-22kHzの帯域に対応する“特別”のサブフレームのほとんどは高レート量子化器により量子化されない。従って、Huffman符号化は特別のサブフレームに使用されない。
【0118】
所定のレートのRビット/次元(1<R<6)では、8次元の係数ベクトルxは高レート量子化器により量子化され、最善のコードベクトルyのインデックスベクトルk=(k1,k2,k3,k4,k5,k6,k7,k8)は0≦ki<2R(i=1,2,...,8)で得られる。kの成分は表8〜11に従ってHuffman符号化される。
【0119】
Huffman符号化を使用することにより、量子化インデックスは、可変のビット数で符号化される。所定のレートRでは、より頻繁なインデックスはR未満のビットを必要とし、あまり頻繁でないインデックスはRより大きいビットを必要とし得る。従って、Huffman符号化の後にコード長が確かめられ、Huffman符号化がサブフレームの最初の3つのグループのそれぞれに適用されたか否かを示すために、3つのフラグビットがフレームで使用される。フラグビットはサイド情報としてデコーダに送信される。サブフレームのグループでは、Huffman符号化を使用することにより必要なビット数がこのグループに利用可能な合計ビット数より大きくない場合にのみ、量子化インデックスはHuffman符号化される。この場合、Huffman符号化フラグは1に設定される。
【0120】
しかし、パーカッション形式の信号の場合、Huffman符号化はもはや量子化インデックスに適用されない。量子化インデックスは直接デコーダに送信される。
【0121】
デコーダでは、Huffman符号化フラグが検査される。サブフレームのグループのHuffman符号化フラグが設定されている場合、このグループの符号化データはHuffmanデコードされ、量子化インデックスを得る。そうでない場合、符号化データは量子化インデックスとして直接使用される。
【0122】
【表8】
【0123】
【表9】
【0124】
【表10】
【0125】
【表11】
[エンコーダにより生成されたビットストリーム]
図3Aは、この開示の実施例によるエンコードされたビットストリームの例を示している。一実施例では、フレームの合計ビット数は、それぞれ32kbps、48kbps及び64kbpsのビットレートに対応して、640、960及び1280ビットである。チャネルで送信されるビットストリームは3つの部分(フラグビット、ノルムコードビット及びMLT係数のコードビット)で構成されてもよい。フラグビットが最初に送信され、ノルムコードビットが次に送信され、MLT係数のコードビットが最後に送信されてもよい。
【0126】
フラグ部分302は様々な目的に使用される複数のフラグビットを有する。この例では、フラグビットは、現在のフレームのモードを示すために使用され、デコーダに送信されるモードフラグを有してもよい。例えば、モードフラグは、パーカッション形式の信号モードを示すために使用されてもよい。他の例として、モードフラグは、音声及び一般の音楽を示すために使用されてもよい。フラグはまた、何個のサブフレームが32kbpsで符号化されるかを示し、デコーダにサイド情報として送信されるフラグを有してもよい。次の部分は、固定長を有する。この例では4ビットを有する。4ビットは、Huffman符号化がノルムとグループ1係数インデックスとグループ2係数インデックスとグループ3係数インデックスとに使用されるか否かを示すために使用される。典型的にはグループ4係数は非常に小さいビットを有しており、典型的にはHuffman符号化はビット要件を低減しないため、典型的にはグループ4はHuffman符号化を使用しない。
【0127】
ビットストリームは、全てのサブフレームのノルムコードビット304を更に有してもよい。Huffman符号化が使用されない場合、長さは固定される。この例では、固定長は170ビット(34ノルム×5ビット/ノルム)である。Huffman符号化が使用される場合、長さはHuffman符号化により決定される。
【0128】
ビットストリームは、グループ1〜4 306のエンコードされた係数インデックスを更に有してもよい。各グループ又は各係数に割り当てられるビット量は変化し得る。これらは、各サブフレームのノルムに従って、ビット割り当てにより決定される。グループ1〜3のインデックスもまた、Huffman符号化が使用されるか否かに依存してもよい。グループ4のインデックスは、典型的にはHuffman符号化を使用しない。しかし、他の部分のビット数が変化し得るため、グループ4に割り当てられるビット量も依然として変化し得る。他のグループがHuffman符号化のため少ないビットを使用する場合、これらの節約されたビットはグループ4に使用されてもよい。
【0129】
図3Bは、この開示の一実施例によるフラグビット302の例示的な構造を示している。この例では、フラグビット302は、現在のフレームのモードを示し、デコーダに送信されるフラグM308を有してもよい。パーカッション形式の信号モードでは、モードフラグ308のみが送信されてもよく、他のフラグは送信される必要がない。音声及び一般の音楽のモードでは、全てのフラグが送信されてもよい。フラグビット302は、何個のサブフレームが低ビットレート(例えば32kbps)で符号化されるかを示すフラグL310を更に有してもよい。フラグビット302は、ノルムがHuffman符号化されるか否かを示すフラグN312を更に有してもよい。フラグビット302は、MLT係数の各グループ(この例では、グループ1〜グループ3)がHuffman符号化されるか否かを示すフラグG1〜G3を更に有してもよい。
【0130】
図3Cは、この開示の一実施例に従って係数コードビット306で量子化(場合によってはHuffman符号化)された変換係数の結合されたセットの例示的な構造を示している。この例では、境界周波数は約7kHzである。ロングフレーム変換係数320は、約7kHzまでの周波数を表す。ショートフレーム変換係数322は約6.8kHz〜約22kHzまでの周波数を表す。ロングフレーム変換及びショートフレーム変換は境界で重複し、遷移をスムーズにする。
【0131】
図3Dは、この開示の他の実施例に従って係数コードビット306で量子化(場合によってはHuffman符号化)された変換係数の結合されたセットの例示的な構造を示している。この例では、境界周波数は約800Hzである。ロングフレーム変換係数324は、約800Hzまでの周波数を表す。ショートフレーム変換係数326は約600Hz〜約22kHzまでの周波数を表す。ロングフレーム変換及びショートフレーム変換は境界で重複し、遷移をスムーズにする。
【0132】
[エンコーダ処理]
この開示の一実施例による全体のエンコード処理の例示的な処理フロー図を示す図4を参照する。エンコード処理はステップ400で始まる。ステップ410において、時間内にオーディオサンプルが変換係数のフレームに変換されるように、2つのMLT変換がオーディオ信号に適用されてもよい。ロングフレーム変換係数は、低周波数(例えば、約20Hz〜約7kHz)の信号に使用され、ショートフレーム変換係数は、高周波数(例えば、約6.8kHz〜約22kHz)の信号に使用される。他の実施例では、単一の変換がオーディオ信号に適用されてもよい。
【0133】
MLT係数は34のサブフレームで4つのグループにグループ化されてもよい。ステップ420において、各サブフレームのノルムが計算され、固定のビット数で量子化される。各サブフレームは、その量子化されたノルムで正規化され、正規化された変換係数が得られる。Huffman符号化は、全ての量子化されたノルムで試されてもよい。使用されるビット数がノルム量子化に割り当てられた合計ビット数より小さい場合、Huffman符号化が使用されてもよい。Huffmanフラグ(フラグN)が設定され、特別のビットがビットの残り(Remainder)に格納される。使用されるビット数が小さくない場合、Huffman符号化は使用されず、Huffmanフラグはクリアされる。残り(Remainder)は合計ビット数から6フラグビットを引いたものと、ノルムにより使用されるものとになる。
【0134】
ステップ430において、フレームの利用可能なビットをサブフレーム間に割り当てるために、適応ビット割り当て方式が使用されてもよい。まず、各サブフレームの全ビットはゼロに設定され(合計で34のサブフレームが存在する)、ビットの残り(Remainder)は、利用可能な合計ビットに設定される。次に、サブフレームの最大のノルムが見つけられ、Mの合計でサブフレームの係数毎に1ビットが割り当てられる。次に、そのノルムをノルム/2にし、Remainder=Remainder-Mにする。16の係数を有するサブフレームでは、M=16であり、24又は32の係数を有するサブフレームでは、Mはそれぞれ24又は32である。残り(Remainder)が16未満である場合には割り当てを中止し、そうでない場合には最後のステップを繰り返す。ビット割り当てが行われると、残り(Remainder)は16未満になる。いくつかのサブフレームは係数毎に数ビットを割り当てられ、いくつかはゼロビットを有してもよい。
【0135】
判定440において、係数毎のビットが1より大きい場合、ステップ450において、量子化は格子D8により高レート量子化が行われてもよい。そうでない場合、ステップ460において、格子RE8を使用して低レート量子化により行われてもよい。各グループに割り当てられるビットは既にわかっている。
【0136】
ステップ470において、Huffman符号化が、任意選択で各サブフレームの量子化係数に試されてもよい。最初の3つのグループの各グループに必要なビットの合計が加算される。Huffman符号化されたビットが割り当てられたビットより小さい場合、Huffman符号化がそのグループに使用されてもよく、そのグループのHuffmanコードフラグが設定される。節約されたビットは残りのビットに割り当てられる。Huffman符号化されたビットが固定の割り当てられたビットより小さくない場合、Huffman符号化は使用されず、Huffmanコードフラグはクリアされる。
【0137】
残りのビットは、前記のビット割り当て方式に従って次のグループに割り当てられる。全てのビットが割り当てられ、処理がステップ480で終了する。ビットストリームが形成され、送信されてもよい。
【0138】
図4に関して説明した例示的なエンコーダ処理に様々な変更が行われてもよい。この開示のある実施例によれば、2重変換は任意選択でもよい。この開示の他の実施例によれば、2つより少ない又は多い変換が存在してもよい。更に、前述のように、如何なる形式の変換(MLT、FFT、DCT等)が使用されてもよい。
【0139】
[デコーダ処理]
デコーダは、基本的にエンコーダの逆の順序で、エンコードされたビットストリームを処理する。合計のビットはわかっており、合意されている。デコーダでは、適切なデコーダがビットストリームに使用されることを確保するために、データ整合性及びエンコードプロトコルが検査される。ビットストリームが前記の例に従ってエンコーダでエンコードされることをデコーダが確かめると、図5に示して以下に説明するようにビットストリームをデコードする。
【0140】
処理フローはステップ500で始まり、デコーダへの入力として、エンコードされたビットストリームを受信する。ステップ510において、フラグビットが検査される。例えば、最初の3つのグループのノルム又は係数インデックスがHuffman符号化されているか否かが決定される。
【0141】
ノルムのHuffmanコードフラグが設定されている場合、ステップ520において、ノルムの量子化インデックスがHuffmanデコードされる。全てのノルムがデコードされた後に、ノルムにより使用される合計のビットがわかる。係数インデックスを符号化するために使用されるビット数(残りのビット)もわかる。
【0142】
Huffmanコードフラグが設定されていない場合、ステップ530において固定レートが使用される。ノルムにより使用されるビット数はわかる。係数インデックスの合計のビット数もわかる。
【0143】
ステップ530において、量子化されたノルムは、量子化インデックスを逆量子化することにより得られる。量子化されたノルムから、適応ビット割り当て540(図4のボックス430と同じ動作)が実行され、何のサブフレームが何個のビットを有するかを決定してもよい。Huffmanフラグがグループに設定されている場合、受信データはHuffmanコードであり、このグループ内の各サブフレームについてデコードされなければならない。Huffmanフラグが設定されていない場合、受信データは係数の量子化インデックスである。
【0144】
量子化されたノルム及び量子化インデックスから、ステップ560において、MLT係数が再現可能である。全くビットを割り当てられていないサブフレームについては、これらのMLT係数はゼロで埋められてもよく、又は乱数で生成されてもよい。1つのロング変換の低周波数の係数及び4つのショート変換の高周波数の係数が復旧され得る。ロング変換の高周波数は0で埋められてもよい。同様に、4つのショート変換の低周波数は0で埋められてもよい。高周波数と低周波数との境界で、何らかの形式のスムーズな遷移が使用されてもよい。例えば、最も簡単なスムーズの関数は、境界近くの数個の係数での緩やかな傾斜である。
【0145】
ロング変換及び4つのショート変換の全ての係数が再現されると、デジタルオーディオサンプルに逆変換可能である。ステップ570において、周波数ドメインから時間ドメインへのロング変換及び4つのショート変換の逆変換が実行される。例えば、2重のIMLTが再現されたMLT係数に適用されてもよい。ここで、同じ20msの時間フレームをそれぞれカバーする2つのデジタルオーディオサンプルが存在する。
【0146】
ステップ580において、2つの時間ドメインの信号が結合され、単一のオーディオ信号を形成する。信号はアナログ信号に変換され、音声として再生される。
【0147】
この開示の様々な実施例の方法は、ハードウェア、ソフトウェア、ファームウェア又は前記のいずれかの組み合わせにより実行されてもよい。例えば、この方法は、電話会議システム又はテレビ会議システムのようなオーディオシステムのエンコーダ若しくはデコーダ又は他のプロセッサにより実行されてもよい。更に、この開示の様々な実施例の方法は、例えばインターネットを介して、ストリーミングオーディオに適用されてもよい。図6は、この開示の様々な実施例によるエンコーダを示している。図7は、この開示の様々な実施例によるデコーダを示している。エンコーダ及びデコーダはある実施例では別々でもよく、ある実施例ではコーデックに結合されてもよい。
【0148】
図6のエンコーダでは、デジタルでサンプリングされた入力オーディオ信号は、少なくとも2つの変換モジュール610及び620に供給されてもよく、これにより、時間内にオーディオサンプルが変換係数のフレームに変換され得る。参照を容易にするため、変換モジュール610及び620はMLTモジュールと呼ばれるが、他の形式の変換モジュールが使用されてもよい。
【0149】
一実施例では、20ms毎に、最近の1920のオーディオサンプルが変換モジュール610に供給されてもよく、5ms毎に、最近の480のオーディオサンプルが変換モジュール620に供給されてもよい。ロングフレーム変換モジュール610は、約960の係数のセットを生じてもよく、ショートフレーム変換モジュール620は、それぞれ約240の係数のセットを生じてもよい。ロングフレーム変換係数は、低周波数の信号に使用されてもよく、ショートフレーム変換係数は、高周波数の信号に使用されてもよい。例えば、一実施例では、ロングフレーム変換係数は、約20Hz〜約7kHzの間の周波数を表し、ショートフレーム変換係数は、約6.8kHz〜約22kHzの間の周波数を表す。
【0150】
他の実施例では、パーカッション形式の信号の存在を示すために、モジュール630が任意選択で提供されてもよい。パーカッション形式の信号が検出された場合、パーカッション形式のモードを示すモードフラグが、送信のためにマルチプレクサ695に送信されてもよい。パーカッション形式の信号が検出された場合、境界周波数は約800Hzに調整されてもよい。このような場合、2重変換の係数は、800Hzまでの周波数を表すロング変換係数と600Hzより上の周波数を表すショート変換係数との組み合わせである。他の実施例では、境界周波数は7kHzでもよく、約800Hzと約7kHzとの間のどこかでもよい。
【0151】
ロングフレーム変換係数及びショートフレーム変換係数は、結合モジュール640により結合される。結合された係数は、各サブフレームのノルムを計算して量子化するノルム量子化モジュール650に適用される。符号化モジュール670がノルムの量子化インデックスに適用される。符号化モジュールは、任意選択でHuffman符号化を実行してもよい。結果のノルムコードビットは、マルチプレクサ695に供給される。ノルムがHuffman符号化されているか否かを示すために、Huffmanコードフラグもマルチプレクサ695に供給されてもよい。
【0152】
ノルム量子化モジュール650からの量子化されたノルムと、結合モジュール640からの結合されたMLT係数とは、MLT係数を正規化する正規化モジュール660に供給される。量子化されたノルムもまた、フレームの利用可能なビットをサブフレーム間に割り当てる適応ビット割り当てモジュール675に供給されてもよい。ビット割り当てが終了すると、正規化されたMLT係数は、高速格子ベクトル量子化モジュール680によりサブフレーム毎に量子化されてもよい。係数毎のビットが1より大きい場合、量子化は高レート量子化器により行われてもよい。そうでない場合、量子化は低レート量子化器により行われてもよい。パーカッション形式の信号が検出された場合、最大量子化レートは、係数毎に6ビットに設定されてもよい。パーカッション形式の信号が検出されない場合、最大量子化レートは係数毎に5ビットに設定されてもよい。
【0153】
Huffman符号化モジュール685は、任意選択でMLT係数の量子化インデックスに適用されてもよい。しかし、パーカッション形式の信号では、Huffman符号化モジュール685はMLT係数の量子化インデックスには適用されない。結果のHuffmanコードビットは、Huffman符号化モジュール685から比較及びデータ選択モジュール690に供給される。比較及びデータ選択モジュール690は、量子化モジュール680から出力された量子化インデックスと、Huffman符号化モジュール685から出力されたHuffmanコードとを比較する。サブフレームの最初の3つのグループの各グループについて、Huffman符号化ビットが割り当てられたビットより小さい場合、Huffman符号化ビットがそのグループについて選択され、そのグループのHuffmanコードフラグが設定される。節約されたビットは残りのビットに割り当てられる。Huffman符号化ビットが固定の割り当てビットより小さくない場合、量子化インデックスがそのグループについて選択され、Huffmanコードフラグはそのグループについてクリアされる。選択されたMLTコードビットは、何らかのHuffmanコードフラグと共にマルチプレクサ695に供給される。ビットストリームが形成され、送信されてもよい。
【0154】
図7のデコーダは、エンコードされたビットストリームからオーディオストリームを再現するように動作可能である。エンコードされたビットストリームは、データをノルムコードビットとMLTコードビットと様々なフラグ(モードフラグ、32kbit/sで符号化されたサブフレーム数に使用されるフラグ、ノルムのHuffmanコードフラグ、MLT係数の各グループのMLTコードフラグ等)に逆多重するデマルチプレクサ710に供給される。参照を容易にするため、この例ではMLTコードビット及びMLT係数の名前が使用されているが、他の形式の変換モジュールが使用されてもよい。
【0155】
ノルムコードビットは、サブフレームのノルムの量子化インデックスをデコードするデコードモジュール720に供給される。Huffman符号がノルムをエンコードするために使用されたことをHuffmanコードフラグ(フラグN)が示す場合、Huffmanデコードが適用されてもよい。逆量子化モジュール725はサブフレームのノルムを逆量子化する。適応ビット割り当てモジュール730は、フレームの利用可能なビットをサブフレーム間に割り当てるために使用されてもよい。
【0156】
MLTコードビットはデマルチプレクサ710からデコードモジュール735に供給される。デコードモジュール735は、MLT係数の量子化インデックスをデコードする。Huffman符号化がMLT係数の何らかのグループをエンコードするために使用されたことをいずれかのHuffmanコードフラグが示す場合、Huffmanデコードが適用されてもよい。Huffman符号化がMLT係数の何らかのグループをエンコードするために使用されたことをHuffmanコードフラグが示さない場合、量子化インデックスは逆量子化モジュール740に渡される。従って、デコードされたMLTコードビット又はMLT係数の量子化インデックスが、MLT係数を逆量子化する逆量子化モジュール740に供給される。
【0157】
量子化されたノルム及び量子化インデックスから、MLT係数は再現モジュール745により再現され得る。MLT係数は、分離モジュール750によりMLT係数のロングフレームとショートフレームMLT係数の4つのセットとに分離される。ロングフレーム逆変換モジュール760がロングフレームMLT係数のセットに適用され、ショートフレーム逆変換モジュール770がショートフレームMLT係数の4つのセットに適用される。逆変換モジュール760及び770は、逆MLT(IMLT:inverse modulated lapped transform)モジュールを有してもよい。結果の時間ドメインの信号が合計され、デジタルからアナログに変換されて音声として再生され得る出力オーディオ信号を生じる。
【0158】
この開示の様々な実施例は、オーディオ会議、テレビ会議、ストリーミング音楽及び音声を含むストリーミングメディアのような分野で有用な用途を見出し得る。この開示の一実施例による例示的な会議システムのブロック図を示す図8を参照する。システムは、ネットワーク850を介して1つ以上の遠隔エンドポイント840と通信するように動作可能なローカルエンドポイント810を有する。通信は、オーディオ、ビデオ及びデータの交換を有してもよい。ビデオ機能は任意選択であり、エンドポイント810は、テレビ会議機能のないオーディオ会議用の装置でもよいことが、当業者にわかる。例えば、エンドポイント810は、スピーカ又は他のオーディオ会議装置を有してもよい。同様に、各遠隔エンドポイント840は、オーディオ会議装置又はテレビ会議装置を有してもよい。
【0159】
ローカルエンドポイント810は、オーディオコーデック812とオーディオI/Oインタフェース814とを有する。オーディオコーデック812は、図6のエンコーダのようなエンコーダを有してもよい。オーディオコーデックは、図7のデコーダのようなデコーダを更に有してもよい。オーディオI/Oインタフェース814は、アナログ・デジタル変換及びデジタル・アナログ変換を実行してもよく、また、1つ以上のマイクロフォン816から受信したオーディオ情報又は1つ以上のスピーカ818に送信されたオーディオ情報を処理することに関する他の信号処理タスクを実行してもよい。1つ以上のマイクロフォン816は、インテリジェントなマイクロフォン合成機能及び動的ノイズ低減機能を備えたゲートマイクロフォン(gated microphone)を有してもよい。ある実施例では、1つ以上のマイクロフォン816は、エンドポイント810と統合されてもよく、エンドポイント810から離れてもよく、これらの組み合わせでもよい。同様に、1つ以上のスピーカ818は、エンドポイント810と統合されてもよく、エンドポイント810から離れてもよく、これらの組み合わせでもよい。エンドポイント810から離れている場合、マイクロフォン816及びスピーカ818は、有線接続又は無線接続を介して情報を送受信してもよい。
【0160】
ローカルエンドポイント810は、1つ以上のマイクロフォン816により生成されたオーディオ情報(典型的にはローカル会議参加者の音声及び音を表す)オーディオ情報を取得し得る。ローカルエンドポイント810は、取得されたオーディオ情報をデジタル化して処理する。オーディオはエンコードされ、ネットワークインタフェース820を介して1つ以上の遠隔エンドポイント840に送信される。
【0161】
エンドポイント810は、遠隔会議エンドポイント840から(典型的には遠隔会議参加者の音声及び音を表す)オーディオ情報を受信し得る。受信されたオーディオ情報はネットワークインタフェース820により受信される。受信されたオーディオ情報は、デコードされ、処理され、アナログに変換され、1つ以上のスピーカ818を介してオーディオとして再生される。
【0162】
ある実施例では、エンドポイント810は、任意選択でビデオ機能を有してもよい。このような実施例では、エンドポイント810は、ビデオコーデック822と、ビデオI/Oインタフェース824と、1つ以上のビデオカメラ826と、1つ以上のディスプレイ装置828とを有してもよい。1つ以上のカメラ826は、エンドポイント810と統合されてもよく、エンドポイント810から離れてもよく、これらの組み合わせでもよい。同様に、1つ以上のディスプレイ装置828は、エンドポイント810と統合されてもよく、エンドポイント810から離れてもよく、これらの組み合わせでもよい。
【0163】
ビデオ可能な実施例では、エンドポイント810は、1つ以上のカメラ816により生成された(典型的にはローカル会議参加者の画像を表す)ビデオ情報を取得し得る。エンドポイント810は、取得されたビデオ情報を処理し、ネットワークインタフェース820を介して処理された情報を1つ以上の遠隔エンドポイント840に送信する。ビデオ入出力インタフェースは、1つ以上のカメラ826から受信して1つ以上のビデオモニタ828に送信されたビデオ情報を変換して処理する。ビデオコーデック824は、ビデオ情報をエンコード及びデコードする。
【0164】
エンドポイント810はまた、遠隔エンドポイント840から(典型的には遠隔会議参加者の画像を表す)ビデオ情報を受信し得る。受信したビデオ情報は、エンドポイント810により処理され、処理されたビデオ情報は、1つ以上のディスプレイ装置828に指示される。エンドポイント810はまた、他の周辺装置(ビデオカセットプレイヤ/レコーダ、ドキュメントカメラ又はLCDプロジェクタ等)から入力を受信してもよく、又は他の周辺装置に出力を指示してもよい。
【0165】
エンドポイント810の様々な構成要素は、少なくとも1つのバス830により通信用に相互接続されてもよい。エンドポイント810の構成要素はまた、中央処理装置(CPU:central processing unit)832を有してもよい。CPU832は、メモリ834からロードされてもよいプログラム命令を解釈して実行する。揮発性RAM、不揮発性ROM、及び/又は磁気ディスクドライブ又はCD-ROMのような記憶装置を様々に有してもよいメモリ834は、実行可能プログラム、データファイル及び他の情報を格納する。
【0166】
更なる構成要素及び機能がエンドポイント810に存在してもよい。例えば、エンドポイント810は、全二重動作を可能にするために、エコーキャンセル又は低減用のモジュールを有してもよい。
【0167】
1つ以上の遠隔エンドポイント840は、ローカルエンドポイント810に関して前述したような同様の構成要素を有してもよい。ネットワーク850は、PSTN(Public Switched Telephone Network)又はIP型ネットワークを有してもよい。
【0168】
本発明の例示的な実施例について図示及び説明したが、本発明の要旨及び範囲を逸脱することなく、様々な変更が行われ得ることがわかる。例示的な実施例を参照して本発明について説明した。本発明の広い要旨及び範囲を逸脱することなく、様々な変更が行われ得ることが、当業者に明らかである。更に、特定の実施例及び特定の用途の実装に関して本発明について説明したが、本発明の有用性はこれに限定されず、本発明は如何なる数の環境及び実装にも有利に利用可能であることを、当業者は認識する。従って、前述の説明及び図面は、限定の意味ではなく、例示の意味でみなされる。
【0169】
以上の実施例に関し、更に、以下の項目を開示する。
【0170】
(1)オーディオ信号を符号化する際に使用される量子化方法であって、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する方法。
【0171】
(2)前記外れ値ソースベクトルを量子化する動作は、
(a)各外れ値ソースベクトルを半分にスケーリングし、スケーリングされた外れ値ソースベクトルを形成し、
(b)前記スケーリングされた外れ値ソースベクトルに最も近い格子点uを決定し、
(c)uのインデックスベクトルjを計算し、
(d)前記インデックスベクトルjからコードベクトルyを決定し、
(e)yとuとを比較し、
(f)yがuと異なる場合に、前記の動作(a)〜(e)を繰り返し、
(g)前記スケーリングされた外れ値ソースベクトルの16分の1を前記スケーリングされた外れ値ソースベクトルに加算し、新しいスケーリングされた外れ値ソースベクトルを形成し、
(h)前記の動作(b)〜(e)を繰り返し、
(i)yがuと等しい場合に、前記の動作(g)〜(h)を繰り返すことを有する、(1)に記載の方法。
【0172】
(3)前記格子は、8次元D8の格子を有する、(1)に記載の方法。
【0173】
(4)量子化のインデックスを可変ビット長符号化することを更に有する、(1)に記載の方法。
【0174】
(5)オーディオ信号を符号化する際に使用される量子化方法であって、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する方法。
【0175】
(6)前記量子化する動作は、
(a)前記ソースベクトルをシフト及びスケーリングし、
(b)前記スケーリングされたソースベクトルの成分を降順に並び換え、
(c)平均2乗誤差に基づいて前記並び換えられたベクトルのリーダベクトルlを決定し、
(d)前記リーダベクトルlの成分の順序を、前記スケーリングされたソースベクトルの成分の元の順序に配置し、前記コードベクトルyを導き、
(e)前記リーダベクトルlのフラグベクトルを決定し、
(f)前記フラグベクトルの成分を元の順序に配置することにより、ベクトルzを導き、
(g)前記リーダベクトルlに関するインデックスオフセットKを決定し、
(h)前記リーダベクトルが(2,0,0,0,0,0,0,-2)であり、前記コードベクトルyが-2の成分より小さいインデックスでの2の成分を有する場合、28を加算することにより前記オフセットKを調整し、
(i)ベクトル内積i=zpTを計算し、p=(1,2,4,8,16,32,64,128)であり、
(j)前記コードベクトルyに関するインデックスインクリメントjを決定し、
(k)前記コードベクトルyのインデックスkを計算し、k=K+jである、(5)に記載の方法。
【0176】
(7)前記格子は、循環Gosset格子RE8を有する、(5)に記載の方法。
【0177】
(8)オーディオ信号を符号化する際に使用される量子化方法であって、
係数毎に1ビットより大きいレートで変換係数を量子化するために第1の格子ベクトル量子化器を使用し、
係数毎に1ビットのレートで変換係数を量子化するために第2の格子ベクトル量子化器を使用することを有する方法。
【0178】
(9)前記第1の格子ベクトル量子化器を使用する動作は、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する、(8)に記載の方法。
【0179】
(10)前記第2の格子ベクトル量子化器を使用する動作は、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する、(8)に記載の方法。
【0180】
(11)前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化することを更に有する、(8)に記載の方法。
【0181】
(12)オーディオ信号をエンコードする方法であって、
前記オーディオ信号のサンプルのグループを時間ドメインから周波数ドメインに変換し、変換係数のフレームを形成し、
変換係数の各フレームを複数のグループにグループ化し、各グループは複数のサブフレームを有し、各サブフレームは特定の数の変換係数を有し、
前記サブフレームのrmsに基づいて前記サブフレームのそれぞれのノルムを決定し、
各サブフレームの前記rmsを量子化し、
前記サブフレームの前記量子化されたrmsで前記サブフレーム内の各係数を除算することにより、各サブフレームの係数を正規化し、
第1の格子ベクトル量子化を使用し、係数毎に1ビットより大きいレートで係数を量子化し、
第2の格子ベクトル量子化器を使用し、係数毎に1ビットのレートで係数を量子化することを有する方法。
【0182】
(13)前記第1の格子ベクトル量子化器を使用する動作は、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する、(12)に記載の方法。
【0183】
(14)前記第2の格子ベクトル量子化器を使用する動作は、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する、(12)に記載の方法。
【0184】
(15)前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化することを更に有する、(12)に記載の方法。
【0185】
(16)変換係数の結合されたセットをサブグループにグループ化し、各サブグループはサブフレームを有し、各サブフレームは特定の数の係数を有し、
前記サブフレームのうち1つのrmsを計算し、
前記サブフレームの前記rmsで前記サブフレーム内の各係数を除算することにより、前記サブフレームの係数を正規化し、
各サブグループのHuffman符号化フラグを維持し、
各サブグループの固定のビット数を維持し、
サブグループについてHuffman符号化を使用するために必要なビット数を計算し、
前記Huffman符号化を使用するために必要なビット数が前記サブグループの固定のビット数より小さい場合に、前記Huffmanフラグを設定し、Huffman符号化を使用し、
前記Huffman符号化を使用するために必要なビット数が前記サブグループの固定のビット数より小さくない場合に、前記Huffmanフラグをクリアし、固定のビット符号化数を使用することを更に有する、(12)に記載の方法。
【0186】
(17)プログラムを具現するコンピュータ可読媒体であって、
(1)、(5)、(8)又は(12)に記載の方法を実行するように機械により実行可能なコンピュータ可読媒体。
【0187】
(18)オーディオ信号をエンコードする22kHzエンコーダであって、
前記オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールと、
係数毎に1ビットより大きいレートで変換係数を量子化するように動作可能な第1の格子ベクトル量子化モジュールと、
係数毎に1ビットのレートで変換係数を量子化するように動作可能な第2の格子ベクトル量子化モジュールと
を有する22kHzエンコーダ。
【0188】
(19)前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有する、(18)に記載のエンコーダ。
【0189】
(20)オーディオ入出力インタフェースと、
前記オーディオ入出力インタフェースに通信可能に結合されたマイクロフォンと、
前記オーディオ入出力インタフェースに通信可能に結合されたスピーカと、
前記オーディオ入出力インタフェースに通信可能に結合された22kHzオーディオエンコーダと
を有するエンドポイントであって、
前記22kHzオーディオエンコーダは、
オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールと、
係数毎に1ビットより大きいレートで係数を量子化するように動作可能な第1の格子ベクトル量子化モジュールと、
係数毎に1ビットのレートで係数を量子化するように動作可能な第2の格子ベクトル量子化モジュールと
を有するエンドポイント。
【0190】
(21)前記22kHzオーディオエンコーダは、前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有する、(20)に記載のエンドポイント。
【0191】
(22)前記22kHzオーディオエンコーダは、
前記オーディオ入出力インタフェースに通信可能に結合されたバスと、
前記バスに通信可能に結合されたビデオ入出力インタフェースと、
前記ビデオ入出力インタフェースに通信可能に結合されたカメラと、
前記ビデオ入出力インタフェースに通信可能に結合されたディスプレイ装置と
を更に有する、(20)に記載のエンドポイント。
【符号の説明】
【0192】
810 エンドポイント
812 オーディオコーデック
814 オーディオI/Oインタフェース
816 マイクロフォン
818 スピーカ
820 ネットワークインタフェース
822 ビデオI/Oインタフェース
824 ビデオコーデック
826 カメラ
828 ディスプレイ
832 CPU
834 メモリ
840 エンドポイント
850 ネットワーク
【特許請求の範囲】
【請求項1】
オーディオ信号を符号化する際に使用される量子化方法であって、
係数毎に1ビットより大きいレートで変換係数を量子化するために、第1の格子に基づく第1の格子ベクトル量子化器を使用し、
係数毎に1ビットのレートで変換係数を量子化するために、前記第1の格子と異なる第2の格子に基づく第2の格子ベクトル量子化器を使用することを有する方法。
【請求項2】
前記第1の格子ベクトル量子化器を使用する動作は、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する、請求項1に記載の方法。
【請求項3】
前記第2の格子ベクトル量子化器を使用する動作は、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する、請求項1に記載の方法。
【請求項4】
前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化することを更に有する、請求項1に記載の方法。
【請求項5】
オーディオ信号をエンコードする方法であって、
前記オーディオ信号のサンプルのグループを時間ドメインから周波数ドメインに変換し、変換係数のフレームを形成し、
変換係数の各フレームを複数のグループにグループ化し、各グループは複数のサブフレームを有し、各サブフレームは特定の数の変換係数を有し、
前記サブフレームのrmsに基づいて前記サブフレームのそれぞれのノルムを決定し、
各サブフレームの前記rmsを量子化し、
前記サブフレームの前記量子化されたrmsで前記サブフレーム内の各係数を除算することにより、各サブフレームの係数を正規化し、
第1の格子に基づく第1の格子ベクトル量子化器を使用し、係数毎に1ビットより大きいレートで係数を量子化し、
前記第1の格子と異なる第2の格子に基づく第2の格子ベクトル量子化器を使用し、係数毎に1ビットのレートで係数を量子化することを有する方法。
【請求項6】
前記第1の格子ベクトル量子化器を使用する動作は、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する、請求項5に記載の方法。
【請求項7】
前記第2の格子ベクトル量子化器を使用する動作は、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する、請求項5に記載の方法。
【請求項8】
前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化することを更に有する、請求項5に記載の方法。
【請求項9】
請求項1又は5に記載の方法をコンピュータに実行させるプログラムを記録したコンピュータ可読記録媒体。
【請求項10】
オーディオ信号をエンコードする22kHzエンコーダであって、
前記オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールと、
係数毎に1ビットより大きいレートで変換係数を量子化するように動作可能な、第1の格子に基づく第1の格子ベクトル量子化モジュールと、
係数毎に1ビットのレートで変換係数を量子化するように動作可能な、前記第1の格子と異なる第2の格子に基づく第2の格子ベクトル量子化モジュールと
を有する22kHzエンコーダ。
【請求項11】
前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有する、請求項10に記載のエンコーダ。
【請求項12】
オーディオ入出力インタフェースと、
前記オーディオ入出力インタフェースに通信可能に結合されたマイクロフォンと、
前記オーディオ入出力インタフェースに通信可能に結合されたスピーカと、
前記オーディオ入出力インタフェースに通信可能に結合された22kHzオーディオエンコーダと
を有するエンドポイントであって、
前記22kHzオーディオエンコーダは、
オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールと、
係数毎に1ビットより大きいレートで係数を量子化するように動作可能な、第1の格子に基づく第1の格子ベクトル量子化モジュールと、
係数毎に1ビットのレートで係数を量子化するように動作可能な、前記第1の格子と異なる第2の格子に基づく第2の格子ベクトル量子化モジュールと
を有するエンドポイント。
【請求項13】
前記22kHzオーディオエンコーダは、前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有する、請求項12に記載のエンドポイント。
【請求項14】
前記22kHzオーディオエンコーダは、
前記オーディオ入出力インタフェースに通信可能に結合されたバスと、
前記バスに通信可能に結合されたビデオ入出力インタフェースと、
前記ビデオ入出力インタフェースに通信可能に結合されたカメラと、
前記ビデオ入出力インタフェースに通信可能に結合されたディスプレイ装置と
を更に有する、請求項12に記載のエンドポイント。
【請求項1】
オーディオ信号を符号化する際に使用される量子化方法であって、
係数毎に1ビットより大きいレートで変換係数を量子化するために、第1の格子に基づく第1の格子ベクトル量子化器を使用し、
係数毎に1ビットのレートで変換係数を量子化するために、前記第1の格子と異なる第2の格子に基づく第2の格子ベクトル量子化器を使用することを有する方法。
【請求項2】
前記第1の格子ベクトル量子化器を使用する動作は、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する、請求項1に記載の方法。
【請求項3】
前記第2の格子ベクトル量子化器を使用する動作は、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する、請求項1に記載の方法。
【請求項4】
前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化することを更に有する、請求項1に記載の方法。
【請求項5】
オーディオ信号をエンコードする方法であって、
前記オーディオ信号のサンプルのグループを時間ドメインから周波数ドメインに変換し、変換係数のフレームを形成し、
変換係数の各フレームを複数のグループにグループ化し、各グループは複数のサブフレームを有し、各サブフレームは特定の数の変換係数を有し、
前記サブフレームのrmsに基づいて前記サブフレームのそれぞれのノルムを決定し、
各サブフレームの前記rmsを量子化し、
前記サブフレームの前記量子化されたrmsで前記サブフレーム内の各係数を除算することにより、各サブフレームの係数を正規化し、
第1の格子に基づく第1の格子ベクトル量子化器を使用し、係数毎に1ビットより大きいレートで係数を量子化し、
前記第1の格子と異なる第2の格子に基づく第2の格子ベクトル量子化器を使用し、係数毎に1ビットのレートで係数を量子化することを有する方法。
【請求項6】
前記第1の格子ベクトル量子化器を使用する動作は、
切り捨てられた格子からコードブックを構成し、前記格子は、偶数の和の整数座標を有する全てのコードベクトルの多次元格子を有し、
前記切り捨てられた格子の外側にある外れ値ソースベクトルを量子化することを有する、請求項5に記載の方法。
【請求項7】
前記第2の格子ベクトル量子化器を使用する動作は、
同心球に入る全てのコードベクトルの多次元格子を有する格子からコードブックを構成し、
ソースベクトルを量子化することを有する、請求項5に記載の方法。
【請求項8】
前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化することを更に有する、請求項5に記載の方法。
【請求項9】
請求項1又は5に記載の方法をコンピュータに実行させるプログラムを記録したコンピュータ可読記録媒体。
【請求項10】
オーディオ信号をエンコードする22kHzエンコーダであって、
前記オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールと、
係数毎に1ビットより大きいレートで変換係数を量子化するように動作可能な、第1の格子に基づく第1の格子ベクトル量子化モジュールと、
係数毎に1ビットのレートで変換係数を量子化するように動作可能な、前記第1の格子と異なる第2の格子に基づく第2の格子ベクトル量子化モジュールと
を有する22kHzエンコーダ。
【請求項11】
前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有する、請求項10に記載のエンコーダ。
【請求項12】
オーディオ入出力インタフェースと、
前記オーディオ入出力インタフェースに通信可能に結合されたマイクロフォンと、
前記オーディオ入出力インタフェースに通信可能に結合されたスピーカと、
前記オーディオ入出力インタフェースに通信可能に結合された22kHzオーディオエンコーダと
を有するエンドポイントであって、
前記22kHzオーディオエンコーダは、
オーディオ信号の時間ドメインのサンプルのフレームを周波数ドメインに変換し、変換係数のフレームを形成するように動作可能な変換モジュールと、
係数毎に1ビットより大きいレートで係数を量子化するように動作可能な、第1の格子に基づく第1の格子ベクトル量子化モジュールと、
係数毎に1ビットのレートで係数を量子化するように動作可能な、前記第1の格子と異なる第2の格子に基づく第2の格子ベクトル量子化モジュールと
を有するエンドポイント。
【請求項13】
前記22kHzオーディオエンコーダは、前記第1の格子ベクトル量子化器により量子化された係数の量子化のインデックスを可変ビット長符号化するように動作可能なコーダモジュールを更に有する、請求項12に記載のエンドポイント。
【請求項14】
前記22kHzオーディオエンコーダは、
前記オーディオ入出力インタフェースに通信可能に結合されたバスと、
前記バスに通信可能に結合されたビデオ入出力インタフェースと、
前記ビデオ入出力インタフェースに通信可能に結合されたカメラと、
前記ビデオ入出力インタフェースに通信可能に結合されたディスプレイ装置と
を更に有する、請求項12に記載のエンドポイント。
【図1】
【図2A】
【図2B】
【図3A】
【図3B】
【図3C】
【図3D】
【図4】
【図5】
【図6】
【図7】
【図8】
【図2A】
【図2B】
【図3A】
【図3B】
【図3C】
【図3D】
【図4】
【図5】
【図6】
【図7】
【図8】
【公開番号】特開2012−118546(P2012−118546A)
【公開日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願番号】特願2012−4209(P2012−4209)
【出願日】平成24年1月12日(2012.1.12)
【分割の表示】特願2007−269121(P2007−269121)の分割
【原出願日】平成19年10月16日(2007.10.16)
【出願人】(500080720)ポリコム・インコーポレイテッド (22)
【Fターム(参考)】
【公開日】平成24年6月21日(2012.6.21)
【国際特許分類】
【出願日】平成24年1月12日(2012.1.12)
【分割の表示】特願2007−269121(P2007−269121)の分割
【原出願日】平成19年10月16日(2007.10.16)
【出願人】(500080720)ポリコム・インコーポレイテッド (22)
【Fターム(参考)】
[ Back to top ]