(58)【調査した分野】(Int.Cl.,DB名)
パラメータの結びつけられた少なくとも1つの順序づけられたベクトルを生成するために、少なくとも1つのベクトル絶対タプルの順序にしたがって、前記少なくとも1つのパラメータのベクトルをソートするステップは、
加重距離決定のための重みを決定するステップと、
ソートされた重みベクトルを生成するために、前記少なくとも1つのベクトル絶対タプルの前記順序に基づいて前記重みをソートするステップと、
前記ソートされた重みベクトルを前記少なくとも1つの順序づけられたベクトルに適用するステップと、
を含む、請求項1ないし3のいずれか1項に記載の方法。
パラメータの結びつけられた少なくとも1つの順序づけられたベクトルを生成するために、少なくとも1つのベクトル絶対タプルの順序にしたがって、前記少なくとも1つのパラメータのベクトルをソートする前記手段は、
加重距離決定のための重みを決定する手段と、
ソートされた重みベクトルを生成するために、前記少なくとも1つのベクトル絶対タプルの前記順序に基づいて前記重みをソートする手段と、
前記ソートされた重みベクトルを前記少なくとも1つの順序づけられたベクトルに適用する手段と、
を備える、請求項6ないし8のいずれか1項に記載の装置。
【発明を実施するための形態】
【0033】
以下では、より詳細に、階層化またはスケーラブル可変レート音声およびオーディオ・コーデックを含む可能なステレオおよび多重チャネル音声およびオーディオ・コーデックを記述する。
【0034】
圧縮効率的格子の使用は、大幅に量子化を改善することができるという点で、現在の変換符号化アプローチに関して問題があり得る。しかしながら、それは、大幅なコーデックの複雑さのコストにおいて、そのような改善を実現することができる。
【0035】
ここで、実施形態によって詳述する概念は、転置ベクトル空間において量子化歪みを評価することによって、顕著な符号化の複雑さを減少することが可能なアプローチを提案する。
【0036】
この点について、最初に、例示的な電子デバイスまたは装置10の概略ブロック図を示す
図1を参照する。これは、本願の実施形態にしたがうコーデックを組み込むことができる。
【0037】
装置10は、たとえば、無線通信システムのモバイル端末またはユーザ装置であることができる。他の実施形態において、装置10は、ビデオ・カメラ、テレビ(TV)レシーバ、音声レコーダまたはmp3レコーダ/プレーヤのようなオーディオプレーヤ、メディア・レコーダ(また、mp4レコーダ/プレーヤとして知られる)、あるいは、オーディオ信号を処理する適切な任意のコンピュータなど、オーディオ・ビデオ・デバイスであることができる。
【0038】
いくつかの実施形態において、前記電子デバイスまたは装置10は、マイクロフォン11を含み、それは、アナログ‐デジタル変換器(ADC)14を介して、プロセッサ21にリンクしている。プロセッサ21は、さらに、デジタル/アナログ・コンバータ(D/A変換器)32を介して、ラウドスピーカ33にリンクしている。プロセッサ21は、さらに、トランシーバ(RX/TX)13、ユーザ・インタフェース(UI)15、および、メモリ22にリンクしている。
【0039】
プロセッサ21は、いくつかの実施形態において、種々のプログラム・コードを実行するように構成することができる。インプリメントされたプログラム・コードは、いくつかの実施形態において、ここに記述されるように、オーディオ符号化または復号化コードを備える。インプリメントされたプログラム・コード23は、いくつかの実施形態において、必要なときはいつでもプロセッサ21によって検索するために、たとえば、メモリ22に、格納されることができる。メモリ22は、データ、たとえば、アプリケーションにしたがって、符号化されたデータを格納するために、さらに、セクション24を提供することができる。
【0040】
符号化および復号化コードは、実施形態において、少なくとも部分的には、ハードウェアやファームウェアでインプリメントすることができる。
【0041】
ユーザ・インタフェース(UI)15は、ユーザが、電子デバイス10に、たとえばキーパッドを介して、コマンドを入力すること、および/または、電子デバイス10から、たとえばディスプレイを介して、情報を得ることを可能にする。いくつかの実施形態において、タッチ・スクリーンは、ユーザ・インタフェースの入力および出力機能を提供することができる。装置10は、いくつかの実施形態で、たとえば無線通信ネットワークを介して、他の装置との通信を可能にするのに適切なトランシーバ(RX/TX)13を備える。
【0042】
トランシーバ13は、任意の適切な既知の通信プロトコルによって、更なる、デバイスと通信することができる。たとえば、いくつかの実施形態で、トランシーバ13またはトランシーバ手段は、適切なUMTS(universal mobile telecommunications system)プロトコル、たとえばIEEE 802.Xなどの無線LAN(WLAN)プロトコル、例えば、ブルートゥース(登録商標)、または、赤外線通信経路(IRDA:infrared data communication pathway)など適切な短距離RF(short−range radio frequency)通信プロトコルを使用することができる。
【0043】
また、装置10の構造は、様々なやり方で、補うことができ、変化させることができることが良く理解される。
【0044】
装置10のユーザは、たとえば、マイクロフォン11をいくつかの他の装置に送信されるべき、または、メモリ22のデータ・セクション24に格納すべき音声または他のオーディオ信号を入力するのに使用することができる。いくつかの実施形態において、対応するアプリケーションを、このために、ユーザ・インタフェース15を介して起動することができる。このアプリケーションを、これらの実施形態において、プロセッサ21により、実行することができ、プロセッサ21に、メモリ22に格納された符号化コードを実行させる。以下の例において、マイクロフォン11は、入力のためにオーディオ信号を生成するように構成されるのであるが、入力オーディオ信号は、例えば、メモリ22からの、特に、メモリ22の格納データ24セクションの中からのどんな適切な入力からでも受信することができることが理解される。いくつかの実施形態において、入力オーディオ信号、または、少なくとも1つのオーディオ信号は、トランシーバ13を介して受信することがあり得る。たとえば、トランシーバ13は、装置10の外部のマイクロフォン、たとえば、トランシーバ13を介して装置に結合されたブルートゥース(登録商標)・デバイスなど、によって生成されるオーディオ信号を受信するように構成することができる。
【0045】
アナログ・デジタル変換器(ADC)14は、いくつかの実施形態で、入力アナログ・オーディオ信号をデジタル・オーディオ信号に変換し、デジタル・オーディオ信号をプロセッサ21に提供する。いくつかの実施形態において、マイクロフォン11は、一体化マイクロフォンおよびADC機能を備えることができ、処理のためにプロセッサに直接、デジタル・オーディオ信号を提供する。
【0046】
プロセッサ21は、そのような実施形態において、次に、
図2に示されるシステム、および、特に
図3に示されるエンコーダ、および、
図5に示されるエンコーダの詳細を参照して記述されたような方法で、デジタル・オーディオ信号を処理する。
【0047】
結果として生じるビット・ストリームは、いくつかの実施形態において、別の装置へ伝送するために、トランシーバ13に提供することができる。代替的に、符号化した音声データは、いくつかの実施形態において、たとえば、後の伝送のために、または、同じ装置10による後の表現のために、メモリ22のデータ・セクション24に格納することができる。
【0048】
装置10は、いくつかの実施形態において、また、トランシーバ13を介して、別の装置からの、対応して符号化されたデータのビット・ストリームを受信することもできる。この例においては、プロセッサ21は、メモリ22に格納された復号化プログラム・コードを実行することができる。プロセッサ21は、そのような実施形態においては、受信データを復号化し、そして、デジタル/アナログ変換器32に復号化されたデータを提供する。デジタル/アナログ変換器32は、アナログ音声データにデジタル復号化されたデータを変換し、いくつかの実施形態において、ラウドスピーカ33を介して、アナログ・オーディオを出力することができる。復号化プログラム・コードの実行は、いくつかの実施形態において、ユーザ・インタフェース15を介して、ユーザにより呼び出されるアプリケーションによってと同様に、トリガーされることができる。
【0049】
受信した符号化されたデータは、いくつかの実施形態において、また、たとえば、後の復号化と表現、または、復号化と別の装置への転送のためにメモリ22のデータ・セクション24において、ラウドスピーカ33を介する直接的な表現の代わりに格納することができる。
【0050】
図3および
図5において記述された概略構造、および、
図4および
図6に示された方法のステップは、オーディオ・コーデックの動作の一部分だけ、具体的には、
図1において示される装置において例示的にインプリメントが示されたように、オーディオ・オーディオ・エンコーダ装置または方法の部分を表すことが理解される。
【0051】
実施形態によって使用されるような、オーディオ・コーデックの一般的な動作は、
図2において示される。一般的なオーディオ符号化/復号化システムは、
図2で図式的に示されるようにエンコーダとデコーダとの両方を備える。しかしながら、いくつかの実施形態は、エンコーダかデコーダのどちらか、または、エンコーダとデコーダとの両方をインプリメントすることができることが理解される。エンコーダ104、ストレージまたはメディア・チャネル106、および、デコーダ108を有するシステム102が
図2によって示される。先に述べたように、いくつかの実施形態は、エンコーダ104およびデコーダ108のうちの1つ、あるいは、両方を備える、または、インプリメントすることができることが理解される。
【0052】
エンコーダ104は、入力オーディオ信号110を圧縮し、ビット・ストリーム112を生成する。それは、いくつかの実施形態において、格納、または、メディア・チャネル106を通して送信することができる。エンコーダ104は、いくつかの実施形態において、2つ以上のオーディオ信号を符号化するマルチ・チャネル・エンコーダを備えることができる。
【0053】
ビット・ストリーム112は、デコーダ108の内部で受信することができる。デコーダ108は、ビット・ストリーム112を解凍し、出力オーディオ信号114を生成する。デコーダ108は、変換デコーダを全体的な復号化動作の部分として備えることができる。デコーダ108は、また、2つ以上のオーディオ信号を復号化するマルチチャネル・デコーダを備えることができる。入力信号110に関係したビット・ストリーム112のビット・レートおよび出力オーディオ信号114の品質は、符号化システム102のパフォーマンスを規定する主要な特徴である。
【0054】
図3は、いくつかの実施例にしたがう、図式的にエンコーダ104を示す。
【0055】
図4は、いくつかの実施例にしたがう、エンコーダ104の動作を図示するフローチャートを示す。
【0056】
ここに記述される実施形態のための概念は、効果的な高品質および低ビット・レートの現実的符号化を生成するために、オーディオ信号への符号化を決定し適用することである。その点について、
図3において、いくつかの実施例にしたがって、例示的エンコーダ104が示される。さらにまた、
図4について、エンコーダの動作が、更に詳細に示される。以下の例において、エンコーダは、オーディオ信号を表す周波数領域パラメータを生成し、適切なベクトル束量子化を用いて生成された周波数領域パラメータを符号化するように構成される。しかしながら、いくつかの実施形態において、格子量子化において使用されるパラメータは、ここに記載されるように、オーディオ信号あるいは(たとえば、画像やビデオなど)他のタイプの信号を定義または表現するいかなる適切なパラメータでもありえることは理解されるであろう。
【0057】
エンコーダ104は、いくつかの実施形態において、フレーム・セクション分割器201またはオーディオ信号をセクション分割するための適切な手段を備える。フレーム・セクション分割器201は、(たとえば、モノラル、左右のステレオ、または、任意の多重チャネル音声表現など)オーディオ信号を受信し、オーディオ信号を入力し、およびセクションオーディオ信号データを、周波数または他のドメイン変換のために適切なセクションまたはフレームにセクション化またはセグメント化するように構成される。フレーム・セクション分割器201は、いくつかの実施形態において、任意の適切なウインドウ化機能にしたがって、これらのフレームまたはオーディオ信号データのセクションをウインドウに表示するようにさらに構成することができる。たとえば、フレーム・セクション分割器201は、いくつかの実施形態において、前のフレームおよび次のフレームにそれぞれ10msづつオーバラップする20msのフレームを生成するように構成することができる。
【0058】
音声フレームを生成する動作は、ステップ501によって、
図4に示される。
【0059】
いくつかの実施形態において、音声フレームは、パラメータ決定器203にパスすることができる。
【0060】
いくつかの実施形態において、このエンコーダは、入力オーディオ信号または入力オーディオ信号フレームを表わす少なくとも1つのパラメータを決定する適切な手段のパラメータ決定器203を備える。以下の例において、パラメータは、線スペクトル周波数(LSF)パラメータであるが、しかしながら、いくつかの実施形態において、任意の適切なパラメータを決定することができることは理解されるであろう。
【0061】
たとえば、いくつかの実施形態において、パラメータ決定器は、変換器203または変換の適切な手段を備える。変換器203は、いくつかの実施形態において、これらのオーディオ信号の周波数領域(または他の適切なドメイン)パラメータ表現を生成するように構成される。これら周波数ドメイン・パラメータ表現は、いくつかの実施形態において、パラメータ・エンコーダ205にパスされることができる。
【0062】
いくつかの実施形態において、変換器203は、オーディオ信号データにおいて任意の適切な時間領域−周波数領域変換を実行するように構成することができる。たとえば、その時間領域−周波数領域変換は、離散フーリエ変換(DFT)、高速フーリエ変換(FFT)、修正離散コサイン変換(MDCT)であり得る。以下の例において、高速フーリエ変換(FFT)が、使用されている。
【0063】
さらにまた、この変換器は、各々の入力チャネル・オーディオ信号データの別の周波数帯域ドメイン・パラメータ表現(サブバンド・パラメータ表現)を生成するようにさらに構成されることができる。これらの帯域を、任意の適切な方法において、配置することができる。たとえば、これらの帯域を、線形に間隔をあけるように、あるいは、知覚的に、または、音響心理学的に割り当てることができる、生成されるパラメータは、任意の適切なパラメータであることができる。
【0064】
パラメータ表現を決定する、または、生成する動作は、
図4において、ステップ503によって示される。
【0065】
いくつかの実施形態において、LSFパラメータなどの表現は、パラメータ・エンコーダ205にパスされる。
【0066】
いくつかの実施形態において、エンコーダ104は、パラメータ・エンコーダ205を備えることができる。パラメータ・エンコーダ205は、オーディオ信号入力のパラメータ表現、たとえば、決定されたLSFパラメータを受信するように構成することができる。パラメータ・エンコーダ205は、さらに、いくつかの実施形態において、LSFパラメーター値の各々をサブベクトルとして使用し、ベクトル量子化器に入力するベクトルを作成するために各々のサブベクトルを結合するように構成されることができる。言い換えると、その装置は、少なくとも1つのオーディオ信号を規定するパラメータの第1のベクトル(または、パラメータを表す第1のベクトルのタプル)を生成するように構成されたベクトル生成器を備えることができる。
【0067】
ベクトル量子化器の出力は、いくつかの実施形態において、エンコーダであり、したがって、ベクトル量子化されたオーディオ信号出力は、オーディオ信号の「符号化された」またはパラメータ符号化された表現である。
【0068】
パラメータを符号化またはベクトル量子化する動作は、
図4において、ステップ505によって示される。
【0069】
いくつかの実施形態において、パラメータ・エンコーダ205は、ベクトル生成器451を備える。ベクトル生成器451は、LSFパラメータを受信し、これらの値からN次元ベクトルを生成するように構成される。
【0070】
入力パラメータからベクトルを生成する動作は、
図4において、サブステップ551によって示される。
【0071】
生成されたベクトルは、いくつかの実施形態において、格子ベクトル量子化器453にパスすることができる。
【0072】
いくつかの実施形態において、パラメータ・エンコーダ205は、格子ベクトル量子化器453を備える。格子ベクトル量子化器453は、LSFパラメータから生成された入力ベクトルを受信し、規定された格子の範囲内で起こる、最近接の、またはNN出力を生成する。したがって、デコーダにおいて同様の格子を使用して復号化することができる。
【0073】
ベクトルを格子量子化する動作は、
図4において、サブステップ553によって示される。
【0074】
この符号化された信号は、出力することができる。
【0075】
符号化された信号を出力する動作は、
図4において、ステップ507によって示される。その例にたいして、これは、
図4に示されたように、サブステップ557によって量子化された格子ベクトルを出力する動作でありえる。
【0076】
図5を参照して、いくつかの実施例にしたがう、格子ベクトル量子化器453の例が示される。格子量子化器453は、いくつかの実施形態において、具体的なストレージ・メディア・メモリ22の上に格納されたコンピュータ・プログラムのそれぞれのプログラム・コード23によって規定することができる。
【0077】
本願発明に関するコンセプトと実施形態を導入する前に、従来の格子ベクトル量子化を、まず最初に検討する。いくつかの格子量子化器において、ポテンシャル・ベース・コード・ベクトルのセットの初期生成または決定は、このポテンシャル・ベース・コード・ベクトルのセットの決定された各々のポテンシャル・ベース・コード・ベクトルが、ベース・コード・ベクトルのセットの異なるセットのポテンシャル・ベース・コード・ベクトルに結びついているような場合に、実行される。
【0078】
ポテンシャル・ベース・コード・ベクトルの各々のセットは、少なくとも1つのベース・コード・ベクトルを含む。ベース・コード・ベクトルの各々のセットが、複数のスケール表現のうちのすくなくとも1つのスケール表現と結びついているので、コード・ベクトルは、ポテンシャル・ベース・コード・ベクトルのセットのうちのベース・コード・ベクトル、および、ポテンシャル・ベース・コード・ベクトルのセットに結びついた少なくとも1つのスケール表現のうちのスケール表現に基づいて,決定することができる。言い換えると、コード・ベクトルは、それぞれのスケール表現によってスケーリングされたベース・コード・ベクトルに基づいて、表わすことができる。たとえば、スケール表現は、コード・ベクトルを、前記ベース・コード・ベクトルおよびそれぞれのスケール値の乗算に基づいて、決定することができるような場合に、スケール値を表現することができる。さらにまた、いくつかの実施形態において、コードブックが、ベース・ベクトルの(正負符号付き)置換を適用することによって得られる。
【0079】
たとえば、ベース・コード・ベクトルの少なくとも1つのセットは、少なくとも2つのスケール表現に結びついている。
【0080】
したがって、例として、コードブックは、ベース・コード・ベクトルの複数のセットに基づいて、および、複数のベース・コード・ベクトルのうちのベース・コード・ベクトルのそれぞれのセットに結びついたそれぞれの少なくとも1つのスケール値に基づいて、コード・ベクトルを含むコード・ベクトルのセットを備えることができる。そのコード・ベクトルのセットは、ベース・コード・ベクトルの各々のセットの各々のベース・コード・ベクトルに対して、また、ベース・コード・ベクトルのそれぞれのセットに結びついた少なくとも1つのスケール表現の各々に対して、それぞれのスケール表現によってスケーリングされたそれぞれのベース・コード・ベクトルに基づくコード・ベクトルを備えることができる。
【0081】
たとえば、ベース・コード・ベクトルの前記セットは、リーダー・クラスを表現することができる。ここで、各々のリーダー・クラスは、異なるリーダー・ベクトル、および、リーダー・ベクトルの順列を備える。このように、前記のリーダー・ベクトルおよび前記リーダー・ベクトルの順列は、ベース・コード・ベクトルのそれぞれのセットのベース・コード・ベクトルを表現することができる。
【0082】
ベース・コード・ベクトルの複数のセットは、ベース・コード・ベクトルの第2の複数のセットのサブセットを表現することができる。たとえば、ベース・コード・ベクトルの各々のセットはリーダー・クラスを表現するとの仮定のもとで、複数のリーダー・クラスは、第2の複数のリーダー・クラスのサブセットを表現することができる。このように、複数のリーダー・クラスは、第2の複数のリーダー・クラスに関して、切り詰めた複数のリーダー・クラスとして考えることができる。
【0083】
たとえば、それぞれのポテンシャル・ベース・コード・ベクトルは、符号化するべき入力ベクトルに最も近いベース・コード・ベクトルのそれぞれのセットの少なくとも1つのベース・コード・ベクトルのベース・コード・ベクトルを決定することによって決定することができる。任意の種類の適切な基準を、符号化するべき入力ベクトルに関して、最も近いベース・コード・ベクトルを見つけるために使用することができる。
【0084】
例として、ポテンシャル・ベース・コード・ベクトルを、絶対値入力ベクトルに関して最も近いベース・コード・ベクトルに基づいて、および、入力ベクトルの値の正負符号の情報に基づいて、決定することができる。ここで、この情報は、入力ベクトルにおけるそれぞれの値のそれぞれの位置の正負符号を備えることができ、そして、正負符号を決定されたポテンシャル・ベース・コード・ベクトルの値に割り当てるのに用いられる。更にまた、例として、絶対値入力ベクトルに最も近いベース・コード・ベクトルを、決定することができる。ここで、絶対値入力ベクトルは、入力ベクトルの値に対応する絶対値を含む。ここで、ポテンシャル・ベース・コード・ベクトルは、決定された最も近いベース・コード・ベクトルを表現する。ここで、ポテンシャル・ベース・コード・ベクトルの値の正負符号は、ベクトルにおける同じ位置での入力ベクトルの値の正負符号に対応する。ここで、これは、ベース・コード・ベクトルのセットのベース・コード・ベクトルのパリティが、0であるならば保つことができる。別の例として、ベース・コード・ベクトルのセットのベース・コード・ベクトルのパリティが、−1であるならば、ポテンシャル・ベース・コード・ベクトルの値の正負符号は、それぞれ、ベクトルにおける同じ位置での入力ベクトルの値の正負符号に対応して割り当てることができる。そして、奇数の負コンポーネントがないならば、最も低い非空白絶対値を有するポテンシャル・ベース・コード・ベクトルの値は、その正負符号を変えることができる。あるいは、もう一つの例としてあげると、ベース・コード・ベクトルのセットのベース・コード・ベクトルのパリティが、+1であるならば、ポテンシャル・ベース・コード・ベクトルの値の正負符号は、それぞれ、ベクトルにおける同じ位置での入力ベクトルの値の正負符号に対応して割り当てることができる。そして、偶数の負コンポーネントがないならば、最も低い非空白絶対値を有するポテンシャル・ベース・コード・ベクトルの値は、その正負符号を変えることができる。
【0085】
入力ベクトル符号化のためのコード・ベクトルは、次に、従来は、決定されたポテンシャル・コード・ベクトルのセットに基づいて、決定される。ここで、決定されたポテンシャル・コード・ベクトルのセットは、コード・ベクトルのサブセットを定義し、前記のコード・ベクトルのサブセットは、各々の決定されたポテンシャル・ベース・コード・ベクトル、および、それぞれのポテンシャル・ベース・コード・ベクトルのベース・コード・ベクトルのセットに結びついた各々のスケール表現に対して、それぞれのスケール表現によってスケーリングされたそれぞれのポテンシャル・ベース・コード・ベクトルに基づいたコード・ベクトルを備える。
【0086】
したがって、入力ベクトル符号化のためのコード・ベクトルの検索は、決定されたポテンシャル・コード・ベクトルによって規定され、それぞれの決定されたポテンシャル・コード・ベクトルのベース・コード・ベクトルのセットに結びついたそれぞれの少なくとも1つのスケール表現によって規定されるコード・ベクトルのサブセットにおいて、実行された。コード・ベクトルのこのサブセットは、コードブックに結びついたコード・ベクトルのサブセットを表現することができるから、コード・ベクトルのこのサブセットのコード・ベクトルの数は、そのコード・ベクトルのセットのコード・ベクトルの数よりも小さいことがあり得る。
【0087】
例として、その複数のスケール表現の各々のスケール表現は、コード・ベクトルの少なくとも1つのセットに結びついていることができる。ここで、それぞれのスケール表現と結びついたコード・ベクトルの前記の少なくとも1つのセットのコード・ベクトルの各々のセットは、それぞれのスケール表現と結びついた前記のコード・ベクトルの少なくとも1つのセットのコード・ベクトルの各々のセットが、それぞれのスケール表現を有するベース・ベクトルの結びついたそれぞれのセットのベース・ベクトルをスケーリングすることによって得られたコード・ベクトルを備えるように、ベース・コード・ベクトルの複数のセットのベース・コード・ベクトルのセットと結びついている。
【0088】
したがって、複数のスケール表現のそれぞれのスケール表現と結びついたベース・コード・ベクトルの少なくとも1つのセットのコード・ベクトルは、このスケール表現を有するスケール表現に結びついたベース・コード・ベクトルの各々のセットのベース・コード・ベクトルのスケーリングに基づいて決定することができる。
【0089】
たとえば、ベース・コード・ベクトルの前記のセットがリーダー・クラスを表現する場合に、それぞれのスケール表現と結びついたベース・コード・ベクトルのその少なくとも1つのセットは、リーダー・クラスの結合と考えることができる。通常、リーダー・クラスの結合は、スケールとは独立であることが理解される。このように、コードブックは、リーダー・クラスの少なくとも1つの結合を備えることができる。ここで、リーダー・クラスの各々の結合は、少なくとも1つのスケール表現のうちの1つと、複数のベース・コード・ベクトルのうちのベース・コード・ベクトルの少なくとも1つのセットとに結びついている。例として、この少なくとも1つのスケール表現は、少なくとも2つのスケール表現を含むことができる複数のスケール表現を表すことができる。
【0090】
このように、たとえば、b
xは、ここで、x∈{0,1,...X−1} であるが、ベース・コード・ベクトルの複数のセットのベース・コード・ベクトルのセットを表す。ここで、Xは、ベース・コード・ベクトルの複数のセットのセット数を表す。ベース・コード・ベクトルの各々のセットは、少なくとも1つのベース・コード・ベクトルb
x,yに関連する、あるいは、それを含む。ここで、B
xは、ベース・コード・ベクトルb
xのそれぞれのセットのベース・コード・ベクトルの数を表す。すなわち、y∈{0,1,...,B
x−1}が保たれる。たとえば、ベース・コード・ベクトルのセットのベース・コード・ベクトルの数B
xは、ベース・コード・ベクトルの異なるセットに対して異なることができ、および/または、ベース・コード・ベクトルの少なくとも2つのセットに対して同一であることができる。
【0091】
言い換えると、リーダー・ベクトルは、1つのベクトルにすぎない。リーダー・ベクトルのすべての正負符号付き順列と一緒に、次に、このセットは、リーダー・ベクトルのリーダー・クラス(または、ここに記述したように、ベース・コード・ベクトル)を形成する。いくつかのリーダー・クラスをまとめるとき、リーダー・クラスの結合が形成される。次に、この結合に対して、1つ以上のスケールを、付加することができる。
【0092】
このように、たとえば、コード・ベクトルc
x,z,yを、ベース・コード・ベクトルb
x,yに基づいて、また、スケール表現s
zに基づいて、決定することが可能である。ここで、インデックスzは、複数のスケール表現s
0,...,s
S−1のそれぞれのスケール表現のインデックスを表す。すなわち、z∈{0,1,...,S−1}が保たれる。
【0093】
たとえば、ベース・コード・ベクトルb
x,y=[b
x,y,
0,b
x,y,1,...,b
x,y,n−1]の値b
x,y,tが、絶対値を表し、ここで、t∈{0,1,n−1}が保たれ、nは、それぞれのベース・コード・ベクトルb
x,yの長さを表す場合に、絶対値入力ベクトルが、ベース・コード・ベクトルのそれぞれのセットのポテンシャル・コード・ベクトルを決定するために使用されるならば、決定された最も近いベース・コード・ベクトルb
x,yの(t+1)番目の位置における各々の値b
x,y,tの正負符号は、コード・ベクトルc
x,z,yの決定が、ベース・コード・ベクトルb
x,yに基づいて、また、スケール表現s
zに基づいて、実行される、前に、入力ベクトルiの(t+1)番目の位置における、それぞれの値i
tの正負符号に基づいて割り当てられることができる。
【0094】
例として、i=[i
0,i
1,...,i
n−1]が入力ベクトルを表すならば、絶対値入力ベクトルは、[|i
0|,|i
1|,...,|i
n−1|]によって表わすことができる。たとえば、決定された最も近いベース・コード・ベクトルb
x,yの(t+1)番目の位置における各々の値b
x,y,tの正負符号が、それぞれ、入力ベクトルの(t+1)番目の位置においてそれぞれの値i
tの正負符号に割り当てられることができる。ここで、ベース・コード・ベクトルb
xのセットのベース・コード・ベクトルb
x,yのパリティが、0であるならば、これは保つことができる。別の例として、ベース・コード・ベクトルb
xのセットのベース・コード・ベクトルb
x,yのパリティが、−1であるならば、ポテンシャル・ベース・コード・ベクトルの値b
x,y,tの正負符号は、それぞれ、ベクトルの同じ位置における入力ベクトルの値の正負符号に対応して割り当てることができる。そして、奇数の負コンポーネントがないならば、最も低い非空白絶対値を有するポテンシャル・ベース・コード・ベクトルにおける値b
x,y,tは、その正負符号を変えることができる。あるいは、もう一つの例としてあげると、ベース・コード・ベクトルb
xのセットのベース・コード・ベクトルb
x,yのパリティが、+1であるならば、ポテンシャル・ベース・コード・ベクトルの値b
x,y,tの正負符号は、それぞれ、ベクトルの同じ位置における入力ベクトルの値の正負符号に対応して割り当てられることができる。そして、偶数の負コンポーネントがないならば、最も低い非空白絶対値を有するポテンシャル・ベース・コード・ベクトルにおける値b
x,y,tは、その正負符号を変えることができる。
【0095】
非限定的な例として、コード・ベクトルc
x,z,yは、c
x,z,y=[b
x,y,0・s
z,...,b
x,y,n−1・s
z]によって、決定することができる。
【0096】
z∈{0,1,...S−1}であるような場合に、スケール表現s
zの各々は、ベース・コード・ベクトルの少なくとも1つのセットと結びついている。たとえば、非限定的な例として、ベース・コード・ベクトルのこのそれぞれの少なくとも1つのセットは、x∈{0,1,...n
z−1}であるベース・コード・ベクトルb
xのセットで表わすことができる。ここで、n
zは、それぞれのスケール表現s
zに結びついたベース・コード・ベクトルのセットの数を表すことができる。ここで、0<n
z<Xである。それぞれのスケール表現s
zと、x∈{0,1,...n
z−1}である、ベース・コード・ベクトルb
xの結びついた少なくとも1つのセットとの間のこのリンクに基づいて、x∈{0,1,...n
z−1}およびy∈{0,1,...,B
x−1}およびz∈{0,1,...S−1}である、コード・ベクトルc
x,z,yの少なくとも1つを決定することができる。
【0097】
このように、例として、上に述べたコードブックのコードブック構造は、複数のスケール表現s
z、ベース・コード・ベクトルb
xの複数のセット、および、ベース・コード・ベクトルの関連する少なくとも1つのセットを有する各々のスケール表現の間のリンクにより規定することができる。
【0098】
例えば、少なくとも、ベース・コード・ベクトルb
0のセットなどベース・コード・ベクトルの少なくとも1つのセットは、少なくとも2つのスケール表現に結びついているから、ベース・コード・ベクトルの同一のセットは、第1のスケール表現と結びついたコード・ベクトルの少なくとも1セットから、コード・ベクトルを造るのに、そして、少なくとも1つの更なるスケール表現と結びついたコード・ベクトルの少なくとも1セットから、コード・ベクトルを造るのに、使うことができる。
【0099】
ベース・コード・ベクトルの複数のセットのベース・コード・ベクトルの各々のセットに対して、他のように、入力ベクトルを符号化するためのポテンシャル・ベース・コード・ベクトルを決定することが可能である。
【0100】
たとえば、コード・ベクトルのサブセットから入力ベクトルを符号化するためにコード・ベクトルを決定することは、決定された歪曲メトリックまたは距離、または、エラー値に基づいている。
【0101】
そのような例においては、複数のスケール表現のうちの1つのスケール表現が、選択される。
【0102】
さらにまた、選択されたスケール表現と結びついたベース・コード・ベクトルのセットの決定されたポテンシャル・ベース・コード・ベクトルが、選択される。
【0103】
コード・ベクトルを、つぎに、選択されたポテンシャル・ベース・コード・ベクトルに基づいて、また、選択されたスケール表現の上で決めることができる。ここで、このコード・ベクトルを決定することを、ここに記述された方法に関して記載したように、実行することができる。
【0104】
いくつかの例において、決定されたコード・ベクトルおよび入力ベクトルに基づいて、歪曲メトリックが決定される。たとえば、前記の歪曲メトリックは、決定されたコード・ベクトルと入力ベクトルとの間の任意の適切な距離に基づいたものであることができる。例として、ハミング距離またはユークリッド距離、あるいは、任意の他の距離を、使用することができる。例として、コード・ベクトルを決定することは、省略されることができ、歪曲メトリックを、選択されたスケール表現と結びついたそれぞれのコード・ベクトルと、この選択されたスケール表現と結びついたベース・コード・ベクトルのセットとを本来的に考慮することによって計算することができる。
【0105】
たとえば、c
x,z,y=[c
x,z,y,0,c
x,z,1,...,c
x,z,n−1]が、ステップ430において、決定されたコード・ベクトルを表し、i=[i
0,i
1,...,i
n−1]が、入力ベクトルを表すならば、距離dは、
【数1】
に基づいて計算することができる。
【0106】
上記の方程式にしたがう、この距離dは、
【数2】
に基づいて計算された距離d’に置き換えることができる。
【0107】
あるいは、もう一つの例として、歪曲メトリックが、重み関数に基づいて決定される場合に、上記の方程式にしたがう距離dは、
【数3】
のように、補正することができる。ここで、w
kは、重み関数の重み係数を表す。
【0108】
したがって、上記の方程式にしたがう距離d’fは、
【数4】
のように、重み関数の手段により重みづけることができる。
【0109】
たとえば、第1の決定された歪曲メトリックならば、または、格納された歪曲メトリックと比較することができるならば、歪曲メトリックd、またはd’、またはd
w、またはd
w’を格納することができる。ここで、新しく決定された歪曲メトリックが、格納された歪曲メトリックよりも良いならば、格納された歪曲メトリックは置き換えられる。更にまた、格納された歪曲メトリックと関連したコード・ベクトルを格納することができる、または、このコード・ベクトルの識別子を格納することができる。
【0110】
次に、たとえば、その動作は、選択されたスケール表現と結びついたベース・コード・ベクトルのセットが更に存在するかどうかをチェックできる。そうであるならば、選択されたスケール表現と結びついたベース・コード・ベクトルのこの更なるセットの決定されたポテンシャル・ベース・コード・ベクトルが、選択される。そうでないならば、複数のスケール表現の更なるスケール表現に対してチェックがなされる。
【0111】
複数のスケール表現の更なるスケール表現が存在するならば、その更なるスケール表現が、選択され、さもなければ、最良の距離メトリックに関連したコード・ベクトルを、入力ベクトルを符号化するために選択することができる。
【0112】
たとえば、ベース・コード・ベクトルのセットが、リーダー・クラスを表現することができる場合に、各々のリーダー・クラスが、異なるリーダー・ベクトル、および、リーダー・ベクトルの順列を備える。このように、リーダー・ベクトルおよび前記リーダー・ベクトルの順列は、ベース・コード・ベクトルのそれぞれのセットのベース・コード・ベクトルを表現することができる。例として、リーダー・ベクトルは、n次元ベクトル(nは、整数を示す)であり、その(正の)コンポーネントは、(例えば、漸減的に)順序づけられている。そのリーダー・ベクトルに対応するリーダー・クラスが、次に、リーダー・ベクトル、および、(いくつかの可能性がある制限を有する)リーダー・ベクトルのすべての正負符号付き順列を通して得られるすべてのベクトルから成る。
【0113】
リーダー・クラスの結合を、複数のスケール表現の同一のスケール表現、および、それぞれのスケール表現と結びついたベース・コード・ベクトルのセットで規定することができる。たとえば、リーダー・クラスの結合を、そのスケール表現を有するベース・コード・ベクトルの結びついたステップのベース・コード・ベクトルをスケーリングする手段によって得られるコード・ベクトルのセットと結びつけることができる。
【0114】
そのようなリーダー・クラスの結合は、切り詰めとして考えることができる。このように、複数のスケール表現が、nスケール表現であるならば、リーダー・クラスのn結合を、リーダー・クラスの各々の結合が、それぞれのスケール表現、および、それぞれのスケール表現に結びついたベース・コード・ベクトルのセットの手段により規定されるような場合に、規定することができる。
【0115】
したがって、複数のスケール表現、および、ベース・コード・ベクトルの複数のセットは、リーダー・クラスの複数の結合を定義することができ、それによって、コードブックを定義する。ここで、例として、リーダー・クラスの各々の結合は、スケーリングされたリーダー・クラスの結合として考えることができる。
【0116】
これらの音声およびオーディオ・コーデックの範囲内で使用されるコードブックは、たとえば、引用文献、A. Vasilache、B. Dumitrescu、および、I. Tabus著、「Multiple−scale leader−lattice VQ with application to LSF quantization」、Signal Processing、2002、第82巻、ページ563−586、Elsevierに記載されたように、格子構造に基づいていることができる。これは、参照により、本願明細書に、その全体が組みこまれる。たとえば、D10+格子は、量子化に対して考えることができるが、しかし、他のどの適切な格子量子化もまた、考えることができる。
【0117】
たとえば、ベース・コード・ベクトルのセットが、リーダー・クラスであり、ここで、各々のリーダー・クラスが、異なるリーダー・ベクトル、および、リーダー・ベクトルの順列を備え、また、ここで、各々のリーダー・ベクトルは、降順または昇順に配列されたn絶対値を備えるn次元ベクトルを表す。
【0118】
ベース・コード・ベクトルb
xのそれぞれのセットのリーダー・ベクトルlは、l=[l
0,l
1,...,l
n−1]によって表わすことができ、ここで、l
0,l
1,...,l
n−1は、絶対値である。降順の場合には、l
0は、1ー最高値を表し、l
1は、2ー最高値を表し、そして、l
n−1は、nー最高値を表す。昇順の場合にはl
0は、1−最低値を表し、l
1は、2−最低値を表し、そして、l
n−1は、n−最低値を表す。
【0119】
それぞれのリーダー・ベクトルの値l
k−1は、それぞれのリーダー・ベクトルにおけるk番目の位置における値を表すが、入力ベクトルにおいて、(降順リーダー・ベクトルの場合には)kー最高絶対値の、または、(昇順リーダー・ベクトルの場合には)kー最低絶対値の位置に対応するポテンシャル・ベース・コード・ベクトルにおける位置に割り当てることができる。たとえば、この位置は、位置mとして示すことができる。例として、ポテンシャル・ベース・コード・ベクトルは、p=[p
0,p
1,...,p
n−1]によって表わすことができる。
【0120】
たとえば、非限定的な例として、例示的な入力ベクトルは、i=[−2.4,5.0,−1.3,0.2]であることができる。ここで、対応する絶対値入力ベクトルは、i
a=[2.4,5.0,1.3,0.2]であることができる。
【0121】
リーダー・ベクトルの降順の場合には、リーダー・ベクトルの位置kの値、すなわち値l
k−1は、入力ベクトルにおいてkー最高絶対値の位置に対応するポテンシャル・ベース・コード・ベクトルにおける位置に割り当てられる。たとえば、カウンターk=1によって表される第1の位置を出発して、入力ベクトルの1−最高絶対値の位置は、位置m=2である。値5.0が、絶対値入力ベクトルにおいて1−最高値であり、位置m=2に位置するすなわち、ia
1であるからである。したがって、値l
0は、ポテンシャル・ベース・コード・ベクトルにおいて、位置m=2に割り当てられる。すなわち、p
1=l
0を保つことができる。
【0122】
更にまた、ポテンシャル・ベース・コード・ベクトルp
m−1における代入値の正負符号(+あるいは、−)は、kー最高絶対値と結びついた入力ベクトルの値の正負符号にしたがってセットされる。したがって、p
m−1=l
k−1・sign(im−1)を保つことができる。
【0123】
このように、例示的な入力ベクトルi=[−2.4, 5.0, −1.3, 0.2]の非限定的な例において、p
1=l
0を保持することができる。値i
1=5.0が正の正負符号を有するからである。
【0124】
位置カウンターkは、インクリメントすることができ、そして、別の値がリーダー・ベクトルに存在するかあるかどうか、すなわち、k≦が保たれるかどうかをチェックすることができる。
【0125】
そうであるならば、この方法は進み、非限定的な例、において、位置k=2に関して、位置m=1の値2.4は、入力ベクトルにおいて2ー最高(kー最高)絶対値を表す。このように、P
0=l
1・sign(i
0)=−l
1を、それぞれの正負符号を有するl
1を割り当てるために保つことができる。入力ベクトルの値i
0=−2.4は、負の正負符号を有するからである。
【0126】
このようにして、この非限定的な例において、
k=3→m=3→P
2=l
2・sign(i
2)=−l
2; および、
k=4→m=4→P
3=l
3・sign(i3)=+l
3
のように、リーダー・ベクトルの位置を通してループを繰り返すことができる。
【0127】
したがって、例の方法によって得られるそれぞれのポテンシャル・コード・ベクトルは、それぞれのリーダー・ベクトルlの順序の降順の場合には、p=[−l1,l
0,−l
2,l
3]の結果となる。
【0128】
リーダー・ベクトルlが、昇順の順序であるならば、上述の方法は、絶対値入力ベクトルにおいて、k−最低値の位置を表しているmで実行することができる。ここで、p
m−1=l
k−1・sign(i
m−1)を保つことができる。
【0129】
得られたポテンシャル・コード・ベクトルpは、ベース・コード・ベクトルb
xのそれぞれのセットに結びついている。ここで、lは、ベース・コード・ベクトルのこのそれぞれのセットのリーダー・ベクトルを表す。たとえば、上で記述されたベース・コード・ベクトルb
x,y,tおよびスケール表現s
zに基づいてコード・ベクトルを決定する例示的プロセスに関して、ポテンシャル・コード・ベクトルpは、入力ベクトルに関するベース・コード・ベクトルb
xのセットの最も近いベース・コード・ベクトルb
x,yを表す。ここで、絶対値入力ベクトルが、ベース・コード・ベクトルのそれぞれのセットのポテンシャル・コード・ベクトルを決定するために使用され、また、決定された最も近いベース・コード・ベクトルb
x,yのk番目の位置における各々の値b
x,y,k−1の正負符号が、入力ベクトルiのk番目の位置における、それぞれの値i
kの正負符号に割り当てられる。ここで、0<k≦nが保たれる。
【0130】
このように、ポテンシャル・コード・ベクトルpを表すこの最も近いベース・コード・ベクトルb
x,yを、上記したように、最も近いベース・コード・ベクトルb
x,yに基づいて、また、それぞれのスケール表現s
zに基づいて、コード・ベクトルc
x,z,yを決定するのに使用することができる。
【0131】
各々の切り詰めに対して、異なるスケール表現が、(例えばトレーニングを通して)割り当てられる。例えば、
float scale[]={0.8,1.2,2.7}
である。
【0132】
したがって、たとえば、コードブックの複数のコード・ベクトルのうちのコード・ベクトルの第1のセットが、第1のスケール表現0.8によってスケーリングされた第1の切り詰めによって規定される。コードブックの複数のコード・ベクトルのうちのコード・ベクトルの第2のセットが、第1のスケール表現1.2によってスケーリングされた第2の切り詰めによって規定される。および、コードブックの複数のコード・ベクトルのうちのコード・ベクトルの第3のセットが、第1のスケール表現2.7によってスケーリングされた第3の切り詰めによって規定される。このコードブックは、多重スケール格子構造を有する。
【0133】
例として、多重スケール格子構造の検索は、2つのフェーズを有すると見ることができる。第1のものは、各リーダー・クラスごとに、すなわち、ベース・コード・ベクトルのセットごとにポテンシャル・コード・ベクトルを計算することができる。そして、第2のものは、ポテンシャル・コード・ベクトルのためにだけ歪みを計算することができる。
【0134】
たとえば、絶対値関数を、絶対値入力ベクトルiaがベクトルiの絶対値を備え、そして、次に、その絶対値入力ベクトルを降順に(または、代替的に、昇順に)ソートされることができるように、入力ベクトルiに適用することができる。
【0135】
例として、インデックス表現は、降順に(または昇順に)順序付けられた絶対値ベクトルにおける、各々の入力ベクトルiのインデックスを示す表現を含むことができる。たとえば、そのインデックス表現は、整数アレイ「indx」であることができる。
【0136】
例えば、入力ベクトルが、[−2.4 5.0 −1.3 0.2]であるならば、絶対値ベクトルは、[2.4 5.0 1.3 0.2]である。そして、「indx」アレイが、[1 0 2 3]である。リーダー・ベクトルは、降順に順序付けされることができるから、最も近い隣人サーチアルゴリズムの間に、リーダー・ベクトルの第1の値は、入力ベクトルその他の最高絶対値コンポーネントに対応する位置の上に割り当てることができる。
【0137】
以下の非限定的な例において、「idx_lead_max」は、すべての切り詰めからのリーダー・クラスの最大数であり、それは、Xに対応するものであり得え、この例において、9であることができる。したがって、ベース・コード・ベクトルの9つのセットが、9つのリーダー・クラスの手段により規定されている。ここで、第n番目のリーダー・クラスは、&pl[n−1]によって規定される。
【0138】
たとえば、アレイ「sign」は、入力ベクトル・コンポーネントの正負符号を格納することができる。
【数5】
【0139】
カウンターuにより定義された外側ループは、各々のuをそれぞれのリーダー・ベクトルに結びつけると考えることができる。このように、カウンターuにしたがって、ベース・コード・ベクトルの対応するセットが、外側ループの手段により選択される。各々のリーダー・ベクトルが、複数のベース・コード・ベクトルのうちのベース・コード・ベクトルの異なるセットに対応するからである。
【0140】
整数値jによって定義される内側ループは、ベース・コード・ベクトルの選択されたセットに結びついたポテンシャル・ベース・コード・ベクトルを決定するものと考えることができる。j_crtは、入力ベクトルにおける(j+1)最高絶対値の位置を示している。
【0141】
このように、異なるポテンシャル・ベース・コード・ベクトルcv_potは、検索のこの例示的な第1の部分の手段により決定される。
【0142】
検索の第2の部分は、コード・ベクトルのサブセットから、入力ベクトルを符号化するようにコード・ベクトルを決定するために使用することができる。
【数6】
【0143】
外側ループは、カウンターlによって、定義することができる。ここで、lは、複数のスケール表現のうちの1つのスケール表現scale[l]を選択するために発行される。
【0144】
LATTICE_DIMは、符号化される入力ベクトルの長さに対応することができるコード・ベクトルの長さを定義する。
【0145】
その後に、(0,...,LATTICE_DIM)における各kに対する値ws1[k]およびws2[k]が、計算され、これは、歪曲メトリック(X3)のその部分であると考えることができる。それは、ポテンシャル・ベース・コード・ベクトルから独立している。値w[k]は、各kに対する重み関数の値を表す。
【0146】
上で示されたコード例は、更に、内部のjループ「for(j=0; j<no_leaders[l]; j++)」を有する。ここで、no_leaders[l]は、選択されたスケール表現scale[l]と結びついたリーダー・ベクトルのセットを定義する。すなわち、no_leaders[l]は、それぞれのスケール表現scale[l]と結びついたベース・コード・ベクトルのセット数を表すnzに対応することができる。このように、選択されたスケール表現scale[l]と結びついたリーダー・ベクトルの各々のセットを通してこのループを繰り返す。ここで、リーダー・ベクトルのこのセットのリーダー・ベクトルに対して、1つのポテンシャル・ベース・コード・ベクトルcv_potが、決定された。このように、たとえば、このループは、反復的に、選択されたスケール表現と結びついたベース・コード・ベクトルのセットから各々のポテンシャル・ベース・コード・ベクトルcv_potを選択するここで、cv_pot[j]は、ベース・コード・ベクトルのこのセットのそれぞれj番目のベース・コード・ベクトルを表すことができる。
【0147】
これらのベース・コード・ベクトルの各々、および、選択されたスケール表現に対して、それぞれのベース・コード・ベクトルおよび選択されたスケール表現と結びついているコード・ベクトルに対するそれぞれの歪曲メトリックを例えば、以下のようにして歪曲メトリックに基づくなどで決定することができる。
【数7】
【0148】
最も低い値を有する歪曲メトリックが、最良の歪曲メトリックを表すものとして決定される。ここで、この歪曲メトリック・コード・ベクトルと結びついたコード・ベクトルを、入力ベクトルを符号化するために使用することができる。たとえば、このコード・ベクトルを、最良のスケール表現およびポテンシャル・ベース・コード・ベクトルのセットの最良のポテンシャル・ベース・コード・ベクトルによって定義することができる。
【0149】
ここに記述される実施形態は、ポテンシャル・コード・ベクトル・アレイcv_potを計算しないで、しかし、入力ベクトルのバージョンをソートした絶対値を採用し、適切な転置空間において、歪曲計算を決定または生成することによって、ベクトル量子化の複雑さを減少する。
【0150】
いくつかの実施形態において、格子ベクトル量子化器は、入力ベクトル・ソータ402を備える。この入力ベクトル・ソータ402または入力ベクトルをソートする適切な手段は、入力ベクトルを受信するように構成することができる。
【0151】
入力ベクトルを受信する動作は、
図6において、ステップ501によって示される。
【0152】
格子ベクトル量子化器および入力ベクトル・ソータ402は、入力ベクトルを絶対値降順にソートするように構成される(いくつかの実施形態において、ソーティングは、以下の動作を適切に変えて絶対値昇順に実行されることができることが理解される。)。
【0153】
このように、たとえば、入力ベクトルが、
I=[−2.4 5.0 −1.3 0.2]
であるならば、絶対値ベクトルは、
absi=[2.4 5.0 1.3 0.2]
である。これは、
cv_pot1=[5.0 2.4 1.3 0.2]、
および、ソーティング置換「indx」=[1 0 2 3]
として定義されるソートされた絶対値ベクトルである。
【0154】
入力ベクトルのソーティングが、
図6において、ステップ503によって示される。
【0155】
この入力ベクトル・ソータは、つぎに、ソートされたベクトルおよびソート置換をコード・ベクトル決定器403にパスすることができる。
【0156】
いくつか実施形態において、格子ベクトル量子化器453は、ポテンシャル・コード・ベクトル決定器401を備える。このポテンシャル・コード・ベクトル決定器またはポテンシャル・コード・ベクトルを決定する適切な手段は、コード・ベクトルを生成するのに用いられるリーダー・クラスを格納または生成するように構成される。
【0157】
たとえば、リーダー・クラスを、下のように(Q1値、言い換えると、2を乗じたもの)定義することができる。
【数8】
【0158】
これらのリーダー・クラスは、いくつかの実施形態において、コード・ベクトル決定器403にパスされることができる。
【0159】
いくつか実施形態において、格子ベクトル量子化器453は、コード・ベクトル決定器403を備える。コード・ベクトル決定器403またはコード・ベクトルを決定することの適切な手段は、いくつかの実施形態において、リーダー・クラスおよび、また、ソートされた入力ベクトルおよび順列ベクトルを受信することができる。コード・ベクトル決定器は、次に、これらの値から、入力ベクトルと結びついた出力コード・ベクトルを決定することができる。
【0160】
決定される距離が、加重ユークリッド距離である場合には、いくつかの実施形態において、重みが、順列ベクトルにしたがって転置され、そして、中間入力ベクトル生産物が生成される。いくつかの実施形態において、重みは一様である、または、重みづけ動作は、非重みづけユークリッド距離が採用された場合のオプションであることが理解される。
【0161】
これの例を、以下のコードによって示すことができる。
【数9】
【0162】
ソートされた入力ベクトルおよび転置された重みに基づいて、中間生産物を生成するために、重みを転置し適用する動作が、
図6において、ステップ505によって示される。
【0163】
いくつか実施形態において、コード・ベクトル決定器は、第1のスケール値scale[0]に対して、距離コンポーネントsum1およびsum2を決定することができる。
【0164】
この動作は、以下のステップに分割することができる。
【0165】
第1に、第1のスケール値scale[0]に対して、スケールおよびスケール値の二乗を初期化する。スケールおよびスケール値の二乗の初期化の動作は、
図6において、ステップ506によって示される。
【0166】
第2に、リーダー・ベクトルをリーダー・クラス・マトリクスから選択する。これは、上記のマトリクス例において、マトリクスpl_crtとして示される。
【0167】
リーダー・ベクトルを選択する動作は、
図6において、ステップ507によって示される。
【0168】
第3に、中間距離値sum1およびsum2を中間値および選択されたリーダー・ベクトルに基づいて生成する。
【0169】
選択されたリーダー・ベクトルに基づいて、中間距離値を生成する動作は、
図6において、ステップ509によって示される。
【0170】
第4に、リーダー・ベクトルが、第7の位置に到着しない場合、パリティ条件をチェックし、入力ベクトルにおけるマイナス符号の数が、リーダー・クラス・パリティにおいて与えられた制約と異なる場合、sum1値を修正する。
【0171】
リーダー・ベクトルが、第7の位置に到着しない場合、パリティ条件をチェックし、入力ベクトルにおけるマイナス符号の数が、リーダー・クラス・パリティにおいて与えられた制約と異なる場合、sum1値を修正する動作は、
図6において、ステップ511によって示される。
【0172】
第5に、sum1およびsum2値から距離またはエラー値を決定する。そして、次に、ここで、現在のリーダー・ベクトル距離が、最も小さい場合、最小ベクトルのインデックスを示す。
【0173】
リーダー・ベクトルに対する距離を決定する動作は、
図6において、ステップ513によって示される。
【0174】
その動作は、つぎに、リーダー・ベクトルのすべてが選択されるまでループして周ることができる。
【0175】
リーダー・ベクトルのすべてが選択されたかどうかをチェックして、リーダー・ベクトルのすべてが選択されてはいない場合、ループ・バックする動作は、
図6ステップ514に示される。
【0176】
これらのステップは、以下のコードで示すことができる。
【数10】
【0177】
次に、いくつかの実施形態において、コード・ベクトル決定器は、他のスケールに対して歪曲距離を決定するために、sum1およびsum2値を使用するように構成することができる。「最良(best)」スケール値をチェックする同様の動作を、さらに、作ることができる。
【0178】
他のスケールの歪曲距離を決定する動作は、
図6において、ステップ515によって示される。
【0179】
歪曲距離を決定することする動作は、他のスケールに対して、sum1およびsum2値を使用して行うことができる。これは、以下のコード例を使用してインプリメントすることができる。
【数11】
【0180】
さらにまた、いくつかの実施形態において、コード・ベクトル決定器は、一旦、最良のリーダー・クラスと最良のスケールが見つかると、結果として生じるコード・ベクトル「cv_out」を計算するように構成することができる。
【0181】
コード・ベクトルを計算するために逆転置を実行する動作は、
図6において、ステップ517によって示される。
【0182】
いくつか実施形態において、コード・ベクトルを計算すること動作は、以下のコード例によってインプリメントすることができる。
【数12】
【0183】
いくつか実施形態において、変数sum1とsum2の計算は、第1の切り詰め(no_leaders[0])からリーダーの数まで行われる。これは、リーダーの数が降順に順序づけられなければならず、それらの対応するスケールが同様に順序づけられることを意味する。
【0184】
そのような実施形態においては、追加的な複雑さの減少が生成される。1つの構造に対するリーダーの最大数を計算する必要がないが、しかし、第1の位置にあることは既知であるからである。
【0185】
複雑さ減少の大部分は、勝ったリーダー・ベクトルだけが、転置しなければならないものであって、リーダー・ベクトルの全てではないという事実から来ていることが理解される。その計算は、正の値の上でなされる(リーダー・ベクトルと入力ベクトルとの両方とも、絶対値である)。これは、入力ベクトル・コンポーネントと量子化されたものとが、同じ正負符号を有するものである限り、OKである。
【0186】
正負符号の差異は、考慮するリーダー・ベクトルにパリティ制約(奇数または偶数の負コンポーネント)があるとき、現れ、そして、この制約は、入力ベクトルによって配慮されない。この場合において、最小入力ベクトル・コンポーネントの量子化値の正負符号は、その反転した正負符号である。最小入力ベクトル・コンポーネントは、転置空間において、最後のコンポーネントに対応する。これは、sum1およびsum2を計算するため第1のループが、なぜ、「while(l<LATTICE_DIM−1)」であるかの理由である。実際の非転置空間において、これは、smallest=indx[LATTICE_DIM−1]に対応する、LATTICE_DIMは、考慮された格子の次元である。
【0187】
上記の例が、装置10の内部のコーデックの内で動作するアプリケーションの実施形態を記述するが、下に記述される発明は、任意の可変レート/適応レート・オーディオ(または音声)コーデックを含む、任意のオーディオ(または音声)コーデックの部分として、インプリメントすることができることが理解される。このように、たとえば、アプリケーションの実施形態を、オーディオ・コーデックでインプリメントすることができる。それは、固定または有線通信経路の上でオーディオ・コーディングをインプリメントすることができる。
【0188】
このように、ユーザ装置は、上記のアプリケーションの実施形態において記述されるものなどの音声コーデックを備えることができる。
【0189】
用語「ユーザ装置」は、携帯電話、携帯用データ処理装置、あるいは、携帯型ウェブ・ブラウザなど、無線ユーザ装置のどんな適切なタイプでもカバーすることを意図することが認識される。
【0190】
さらに、PLMN(public land mobile network)の要素は、また、上記したように、音声コーデックを備えることができる。
【0191】
一般に、アプリケーションの種々の実施形態は、ハードウェア、または特殊目的回路、ソフトウェア、論理、または、それらの任意の組合せでインプリメントすることができる。例えば、いくつかの態様は、ハードウェアで、インプリメントすることができ、一方、他の態様は、ファームウェアまたはソフトウェアでインプリメントすることができ、それは、コントローラ、マイクロプロセッサまたは、他のコンピューティング・デバイス、で、実行することができる。しかしながら、本願発明は、それらに制限されるものではない。一方、アプリケーションの種々の態様を、ブロック図、フローチャートとして、または、いくつかの他の図表現を用いて、図示し、記述することができる。これらのブロック、装置、システム、技術またはここに記述される方法は、非限定的な例としてあげると、ハードウェア、ソフトウェア、ファームウェア、特殊目的回路または論理、汎用ハードウェア、またはコントローラまたは、他のコンピューティング・デバイス、または、それらのいくつかの組合せでインプリメントすることができることが良く理解される。
【0192】
このアプリケーションの実施形態は、例えば、プロセッサ・エンティティにおいて、または、ハードウェアによって、あるいは、ソフトウェアとハードウェアとの組合せによってモバイル・デバイスのデータ・プロセッサにより、実行可能なコンピュータ・ソフトウェアによってインプリメントすることができ、さらに、これに関して、図にあるように、論理フローのどんなブロックでも、プログラム・ステップ、または、相互接続した論理回路、ブロックおよび機能、または、プログラム・ステップの組合せおよび、論理回路、ブロックそして、機能を表すことができることに留意する。
【0193】
メモリは、ローカルな技術的環境に適切な任意のタイプのものであり得、半導体ベース・メモリ素子、半導体ベース・メモリ・デバイス、磁気記憶デバイスおよびシステム、光学的記憶装置およびシステム、固定メモリ、および、脱着可能メモリなどいかなる適切なデータ格納技術を使用してでもインプリメントすることができる。データ・プロセッサは、ローカルな技術的環境に適切な任意のタイプのものであり得、非限定的な例としてあげると、汎用コンピュータ、専用コンピュータ、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、アプリケーション特定集積回路(ASIC)、ゲート・レベル回路、および、マルチ・コア・プロセッサ・アーキテクチャに基づくプロセッサのうちの1つ以上を含むことができる。
【0194】
本願発明の実施形態は、集積回路モジュールなどの種々のコンポーネントにおいて実施することができる。集積回路の設計は、概して、非常に自動化されたプロセスである。複雑で強力なソフトウェア・ツールが、半導体基板の上で、直ぐに、エッチングし、形成される半導体回路設計に、論理レベル設計を変換するために利用可能である。
【0195】
カリフォルニア州マウンテンビューのシノプシス社(Synopsys, Inc.)、および、カリフォルニア州サンノゼのケイデンス・デザイン社(Cadence Design)によって提供されるようなプログラムが、事前格納された設計モジュールのライブラリと並んで、設計の確立したルールを用いて、半導体チップ上で自動的に導体を配線し、コンポーネントを配置する。一旦、半導体回路の設計が完了すると、結果として生成された設計を、標準化された電子フォーマット(例えば、Opus、GDSII、または、その他)で、半導体製造施設、または、製造のための「ファブ」に伝送することができる。
【0196】
本願にて用いられているように、「回路(circuitry)」という用語は、(a)ハードウェアのみの回路インプリメンテーション(例えば、アナログおよび/またはデジタル回路だけのインプリメンテーション)および、(b)例えば、(i)プロセッサの組合せ、または(ii)プロセッサ/ソフトウェア(デジタルシグナルプロセッサを含む)の部分、ソフトウェア、および、モバイル電話またはサーバなどの装置に種々の機能を実行させる一緒に動作するメモリなどの回路とソフトウェア(および/またはファームウェア)との組合せ、および、(c)たとえソフトウェアまたはファームウェアが物理的に存在しないとしても作動のために、ソフトウェアまたはファームウェアを要求するマイクロプロセッサ、または、マイクロプロセッサの部分などの回路、のすべてを指す。
【0197】
この「回路」の定義は、すべての請求項を含む本願において、この用語のすべての使用について適用される。さらなる例として、本願にて用いられているように、「回路(circuitry)」の用語は、また、単にプロセッサ(または、マルチプロセッサ)またはプロセッサの部分、および、その(あるいは、それらの)付随するソフトウェアやファームウェアのインプリメンテーションをカバーする。用語「回路」は、また、たとえば、および、特定の請求項要素の適用できるならば、ベースバンド集積回路、または、携帯電話のための応用プロセッサ集積回路、または、サーバの同様な集積回路、携帯電話ネットワーク・デバイス、または、他のネットワーク・デバイスをカバーする。
【0198】
前述の説明は、例示的で非限定的な例として、本願発明の例示的な実施形態の完全で有益な説明を提供した。しかしながら、種々の修正と、適応が、前述の記載を参酌すれば、添付の図面、および、添付の特許請求の範囲の請求項とともに読まれるとき、当業者にたいして、明らかになることができる。しかしながら、本願発明の教示のすべてのそのような、および、類似した修正は、添付の請求項において規定されるように、依然として、本願発明の範囲の中に入る。
【0199】
本願発明の実施形態は、集積回路モジュールなどの種々のコンポーネントにおいて実施することができる。集積回路の設計は、概して、非常に自動化されたプロセスである。複雑で強力なソフトウェア・ツールが、半導体基板の上で、直ぐに、エッチングし、形成される半導体回路設計に、論理レベル設計を変換するために利用可能である。
【0200】
カリフォルニア州マウンテンビューのシノプシス社(Synopsys, Inc.)、および、カリフォルニア州サンノゼのケイデンス・デザイン社(Cadence Design)によって提供されるようなプログラムが、事前格納された設計モジュールのライブラリと並んで、設計の確立したルールを用いて、半導体チップ上で自動的に導体を配線し、コンポーネントを配置する。一旦、半導体回路の設計が完了すると、結果として生成された設計を、標準化された電子フォーマット(例えば、Opus、GDSII、または、その他)で、半導体製造施設、または、製造のための「ファブ」に伝送することができる。
【0201】
本願にて用いられているように、「回路(circuitry)」という用語は、
(a)ハードウェアのみの回路インプリメンテーション(例えば、アナログおよび/またはデジタル回路だけのインプリメンテーション)および、
(b)例えば、
(i)プロセッサの組合せ、または
(ii)プロセッサ/ソフトウェア(デジタルシグナルプロセッサを含む)の部分、ソフトウェア、および、モバイル電話またはサーバなどの装置に種々の機能を実行させる一緒に動作するメモリなどの回路とソフトウェア(および/またはファームウェア)との組合せ、および、
(c)たとえソフトウェアまたはファームウェアが物理的に存在しないとしても作動のために、ソフトウェアまたはファームウェアを要求するマイクロプロセッサ、または、マイクロプロセッサの部分などの回路、
のすべてを指す。
【0202】
この「回路」の定義は、すべての請求項を含む本願において、この用語のすべての使用について適用される。さらなる例として、本願にて用いられているように、「回路(circuitry)」の用語は、また、単にプロセッサ(または、マルチプロセッサ)またはプロセッサの部分、および、その(あるいは、それらに)付随するソフトウェアやファームウェアのインプリメンテーションをカバーする。用語「回路」は、また、たとえば、および、特定の請求項要素の適用できるならば、ベースバンド集積回路、または、携帯電話のための応用プロセッサ集積回路、または、サーバの同様な集積回路、携帯電話ネットワーク・デバイス、または、他のネットワーク・デバイスをカバーする。
【0203】
前述の説明は、例示的で非限定的な例として、本願発明の例示的な実施形態の完全で有益な説明を提供した。しかしながら、種々の修正と、適応が、前述の記載を参酌すれば、添付の図面、および、添付の特許請求の範囲の請求項とともに読まれるとき、当業者にたいして、明らかになることができる。しかしながら、本願発明の教示のすべてのそのような、および、類似した修正は、添付の請求項において規定されるように、依然として、本願発明の範囲の中に入る。