説明

信号の低複雑度組み合わせコーディングのための装置および方法

エンコーダの動作中に、信号ベクトル(x)が受信される。第1の多倍精度オペランド(Ψ’)が、エンコードされる信号ベクトルに基づいて生成される。仮数オペランドと指数オペランドが生成される。仮数オペランドと指数オペランドは双方とも、エンコードされる信号ベクトルに基づく第2の多倍精度オペランドを表している。Ψ’の一部分を修正するために指数オペランドに基づいて選択する。Ψ’の一部を仮数オペランドに基づいて修正して、修正済みの多倍精度オペランド(Ψ’k+1)を生成する。最終的に、多倍精度コード語を生成して、対応するデコーダで用いるようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は一般的にはベクトルのコーディングに関し、より詳細には、ベクトルの低複雑度組み合わせ階乗パルスコーディングに関する。
【背景技術】
【0002】
音声、オーディオ、画像、ビデオおよび他の信号のベクトル量やマトリクス量をコーディングする方法が公知である。参照して本明細書に組み込むパン(Peng)らによる米国特許第6,236,960号に記載されているこのような方法のひとつが、階乗パルスコーディング(Factorial Pulse Coding:FPC)として周知である。FPCは、合計でMビットを用いてベクトルxをコーディングすることが可能であるが、前提条件は、
【0003】
【数1】

、およびベクトルxの値がすべて、−m≦x≦mとなるような整数であることであり、式中mは単位振幅パルスの総数であり、nはベクトル長である。全Mビットを用いて、最大限に効率的にN個の組み合わせをコーディングし、組み合わせの理論的に最小数を与える以下の式、
【0004】
【数2】

が成立する。この式の場合、F(n,d)は、
【0005】
【数3】

によって与えられるn個の位置上でのd個の非ゼロベクトル要素の組み合わせの数であり、D(m,d)は、m個の全単位パルスが
【0006】
【数4】

によって与えられるとした場合に、d個の非ゼロベクトル要素の組み合わせの数であり、2は、d個の非ゼロベクトル要素の極性(符号)を表すために必要な組み合わせを表す。項min(m,n)は、単位振幅パルス(unit magnitude pulse)の数mがベクトル長nを超えた場合を想定している。この形式のベクトルをコーディングおよびデコーディングする方法および装置の全体は、従来技術に詳述されている。さらにこのコーディング方法の実用例が、3GPP2規格C.S0014−Bに記載されているが、ここで、ベクトル長n=54、単位振幅パルスの個数m=7で、M=35ビットコード語となる。
【0007】
nやmのこれらの値は、なんら不条理な複雑度の重荷となるものではないが、これより大きい値になると、特に、メモリと計算上の複雑度をできる限り低く保つことが必要とされるモバイル携帯機器には即座に問題を引き起こしかねない。たとえば、ある応用分野(オーディオのコーディングなど)にこのコーディング方法を用いるには、n=144、m=28以上の値が必要となる。このような状況下では、従来技術による方法を用いた組み合わせ式F(n,d)を生成するためのコストはあまり高すぎて実用的ではない。
【0008】
このコストをさらに詳しく見ると、式3は、
【0009】
【数5】

と書き換えられる。これを直接実現しようとすると問題が発生するが、それは、F(144,28)では、99ビットの商(quotient)を生成するには分子の精度が197ビットで分母の精度が98ビットである必要があるからである。今日の携帯機器で用いられる大抵のデジタル信号プロセッサ(digital signal processors:DSPs)では、一般的に16ビット×16ビットの乗算しかサポートしていないため、特殊な多倍精度乗算/除算ルーチンを用いる必要がある。このようなルーチンでは、一般にk次の倍数/累算(MAC)演算を必要とする一連のネスティングされた乗算/累算演算を必要とし、ここでkはオペランド中にある16ビットセグメントの数である。197ビットのオペランドの場合、
【0010】
【数6】

である。したがって、197×16ビットの乗算単独の実行でも、最小で13のMAC演算とシフト演算およびストア演算が必要となる。分母の項は同様に計算して、98ビットの結果となる。加えて、197/98ビットの除算が必要であるが、これは極めて複雑な演算であり、式5の階乗関係式をすべて計算するには、かなりの量のリソースが必要となる。
【0011】
複雑度を軽減するには、式5を書き直して、除算を次のように分割して次式を生成すればよい。
【0012】
【数7】

この式で、除算のダイナミックレンジは縮小するが、残念なことに、3、7、9などによる除算を正確に表すには商の分解能をあげる必要がある。この構造に対処するために、結果が整数となることを保証するには丸め演算も必要となる。高精度の除算が多く存在することを考えれば、この実施方法ではmおよびnが大きい値の場合に複雑度の問題を適切に解決することはないし、また、精度誤差が累積して不正確な結果となる可能性もある。
【0013】
さらに別の実施例では、式5を次のように再編成してもよい。
【0014】
【数8】

この式を左から右に評価すると、その結果は常に整数値となる。この方法では精度およびダイナミックレンジの問題をある程度制御するが、mおよびnが大きい場合にはやはり多倍精度の乗算と除算を広範囲に用いる必要がある。
【0015】
最後に、計算の複雑度を最小化するには、参照テーブルにすべての階乗組み合わせを事前計算してストアしておくのがよいかもしれない。こうしておけば、F(n,m)のすべての値を単にn×mマトリクスにストアしておいて、わずかなプロセッササイクルでメモリから適当に検索すればよい。しかしながら、この方式の問題点は、nおよびmが大きくなるに連れて、関連するメモリ要件も大きくなることである。前の例を参照すると、F(144,28)では、
【0016】
【数9】

のストレージが必要となり、これは、ほとんどのモバイル携帯機器にとっては不条理な値である。
【発明の概要】
【発明が解決しようとする課題】
【0017】
したがって、ベクトルの低複雑度組み合わせ階乗パルスコーディングのための方法および装置に対する必要性が存在する。
【課題を解決するための手段】
【0018】
上記の必要性を解決するため、本明細書に、ベクトルの低複雑度組み合わせコーディングの方法および装置を提供する。エンコーダの動作中に、信号ベクトル(x)を受信する。第1の多倍精度オペランド(Ψ’)を、エンコードされる信号ベクトルに基づいて生成する。仮数オペランドと指数オペランドを生成する。仮数オペランドと指数オペランドは双方とも、エンコードされる信号ベクトルに基づく第2の多倍精度オペランドを表している。Ψ’の一部分を修正するために指数オペランドに基づいて選択する。Ψ’の一部分を仮数オペランドに基づいて修正して、修正済みの多倍精度オペランド(Ψ’k+1)を生成する。最終的に、多倍コード語を生成して、対応するデコーダで用いるようにする。
【0019】
本発明には、ベクトル(x)からコード語(C)をエンコードするエンコーダを操作する方法がその範囲に含まれる。この方法には、エンコードされるベクトルxを受信するステップと、第1の多倍精度オペランド(Ψ’)をxに基づいて生成するステップと、仮数オペランド(M)および指数オペランド(h)を生成するステップとが含まれる。仮数オペランドおよび指数オペランドは、エンコードされる信号ベクトルに基づく第2の多倍精度オペランド(F’(p,k))を表している。次に、Ψ’の一部分を修正するために指数オペランドに基づいて選択し、このΨ’の一部を仮数オペランドと位置インジケータに基づいて修正して、修正済みの多倍精度オペランド(Ψ’k+1)を生成する。最終的に、Ψ’k+1に基づいてコード語(C)を生成する。
【0020】
本発明にはさらに、エンコードされるベクトルxを受信するステップと、第1の多倍精度オペランド(Ψ’)をxに基づいて生成するステップと、仮数オペランド(M)および指数オペランド(h)を生成するステップとを実行する組み合わせコーディング回路を備えるエンコーダがその範囲に含まれる。仮数オペランドと指数オペランドは、エンコードされる信号ベクトルに基づく第2の多倍精度オペランド(F’(p,k))を表している。次に、Ψ’の一部分を修正するために指数オペランドに基づいて選択し、このΨ’の一部を仮数オペランドと位置インジケータに基づいて修正して、修正済みの多倍精度オペランド(Ψ’k+1)を生成する。最終的に、Ψ’k+1に基づいてコード語(C)を生成する。
【0021】
本発明には、コード語(C)からベクトル(x)を生成するデコーダを操作する方法がその範囲に含まれる。この方法には、コード語(Cπ)を受信するステップと、第1の多倍精度オペランド(Ψ’k+1)をCπに基づいて生成するステップと、仮数オペランド(M)および指数オペランド(h)を生成するステップとが含まれる。仮数オペランドと指数オペランドは、コード語に基づく第2の多倍精度オペランド(F’(p,k))を表している。Ψ’k+1の一部分を修正するために指数オペランドに基づいて選択し、このΨ’k+1の一部を仮数オペランドと位置インジケータに基づいて修正して、修正済みの多倍精度オペランド(Ψ’)を生成する。ベクトルxの(k−1)番目の非ゼロ要素の位置pk−1をデコードして、ベクトル(x)を位置pk−1に基づいて生成する。
【0022】
本発明にはさらに、コード語(Cπ)を受信するステップと、第1の多倍精度オペランド(Ψ’k+1)をCπに基づいて生成するステップと、仮数オペランド(M)および指数オペランド(h)を生成するステップとを実行する組み合わせコーディング回路を備えるデコーダがその範囲に含まれる。仮数オペランドと指数オペランドは、コード語に基づく第2の多倍精度オペランド(F’(p,k))を表している。Ψ’k+1の一部分を修正するために指数オペランドに基づいて選択し、このΨ’k+1の一部分を仮数オペランドと位置インジケータに基づいて修正して、修正済みの多倍精度オペランド(Ψ’)を生成する。ベクトルxの(k−1)番目の非ゼロ要素の位置pk−1をデコードして、ベクトル(x)を位置pk−1に基づいて生成する。
【図面の簡単な説明】
【0023】
【図1】エンコーダのブロック図である。
【図2】コード語の生成を示す図である。
【図3】デコーダのブロック図である。
【図4】図1及び図3の組み合わせ関数発生器の動作を示すフローチャートである。
【図5】図1のエンコーダの動作を示すフローチャートである。
【図6】図3のデコーダの動作を示すフローチャートである。
【図7】図1の組み合わせコーディング回路の動作を示すフローチャートである。
【図8】図3の組み合わせデコーディング回路の動作を示すフローチャートである。
【発明を実施するための形態】
【0024】
ここで図面を見ると(同じ番号は同じ構成要素を示している)、図1はエンコーダ100のブロック図である。エンコーダ100は、ベクトル発生器102と、組み合わせコーディング回路(コーダ)106と、組み合わせ関数発生器108と、他のコーディング回路104とを備えている。動作中、コーディングされる入力信号がベクトル発生器102に受信される。当技術分野において周知であるように、入力信号には、音声、オーディオ、画像、ビデオおよび他の信号などの信号が含まれている。
【0025】
ベクトル発生器102は入力信号を受信して、ベクトルxを生成する。ベクトル発生器102は、これに限られないが、パン(Peng)らが記載しているようなコード励起線形予測(Code−Excited Linear Prediction:CELP)音声コーディング、離散フーリエ変換(Discrete Fourier Transform:DFT)、離散コサイン変換(Discrete Cosine Transform:DCT)および修正離散コサイン変換(Modified Discrete Cosine Transform:MDCT)に基づいた方法を含むオーディオ、画像およびビデオのための変換ドメインコーディング、ウェーブレットに基づいた変換コーディング、直接時間ドメインパルスコード変調(PCM)、差分PCM、適応差分PCM(ADPCM)または、当技術分野において周知であるサブバンドコーディング技法のファミリの内のいずれかを含むエンコーディングパラダイムのうちの任意数のものを含む。これらの上記形態のうちの実質的にどの信号ベクトルでも本発明にしたがって処理すれば利点となる。
【0026】
組み合わせコーディング回路106は、ベクトルxを受信し、階乗パルスコーディングを用いてコード語Cを生成する。上述したように、階乗パルスコーディングでは、合計でMビットを用いてベクトルxをコーディングすることが可能であるが、前提条件は、
【0027】
【数10】

、及びベクトルxの値がすべて、−m≦x≦mとなるような整数であることであり、式中mは単位振幅パルスの総数であり、nはベクトル長である。上述したように、mとnが大きい値になると、特に、メモリと計算上の複雑度をできる限り低く保つことが必要とされるモバイル携帯機器には即座に問題を引き起こしかねない。
【0028】
この問題点を解決するため、組み合わせ関数発生器108は、F’(n,d)を生成する低複雑度技法を利用する。次に、組み合わせコーディング回路106がF’(n,d)を利用して、コード語Cを生成する。回路108は、比較的低分解能の近似(精度ビット)の階乗組み合わせF’(n,d)を利用するが、これは、有効なコード語の生成を可能とするのに十分な精度を提供するだけである。すなわち、ある特性が維持される限り、関数F(n,d)を適当に近似するだけで、結果得られるコード語が一意にデコーディング可能であることを保証するに十分である。F’(n,d)をどのように生成するかを説明するために、最初に、F(n,d)の適切な近似である関数F’(n,d)を導出する。第一のステップでは、式5の任意のベースaの対数を取って、配列し直した項の逆logベースaを取る。
【0029】
【数11】

式中、関数exp(k)=aである。次に、関数P(i)、Q(d)およびR(k)を定義して、次式のように式8に代入する。
【0030】
【数12】

式中、P(i)=log(i)、
【0031】
【数13】

およびR(k)=exp(k)=aである。
【0032】
しかしながら、本発明の好ましい実施形態によれば、結果得られるコード語が一意にデコーディング可能であるようにするために、F(n,d)とF’(n,d)が等価である必要はない。これが成立するための十分条件は次の2つの式だけである。
【0033】
【数14】

および
【0034】
【数15】

第一の条件では、制約は単に、F’(n,d)<F’(n,d)の場合、コードスペースがオーバーラップし、その結果、特定のコード語を生成することが可能な入力が2つ以上存在することになり、このため、このコード語は一意にデコーディング可能ではないと述べている。第二の条件は、所与のnとdの「誤差」は、米国特許第6,236,960号でパン(Peng)らが述べた再帰的な関係の前の要素と関連する誤差の項の合計以上でなければならないことを述べている。F(n,d)=F’(n−1,d)+F’(n−1,d−1)と示すことが可能であるが、これは、組み合わせ式が
【0035】
【数16】

にまさに等しい場合にのみ真である。しかしながら、式11の不等式で十分であるとはいえ、nとdのすべての値に対して必ずしも真であるとは言えない。このような値に対して、F(n,d)は、パン(Peng)らの式31から導出された別の不等式を満足するが、これは次式で与えられる。
【0036】
【数17】

この場合、式11は、ある(m,k)、(m≦n)、(k≦d)に対して厳密な不等式を満たす必要がある、すなわち、次式を満たす必要がある。
【0037】
【数18】

式9に戻って、次に、関数P’(i)、Q’(d)およびR’(k)を作成してF’(n,d)を生成するが、ここで、オリジナルの関数の低複雑度近似を取って次式のようにした。
【0038】
【数19】

また、式10および式11の条件が満たされる。P’(i)を考慮すると、P’(i)≧log(i)(i∈[1,2,・・・,n])となるように関数を近似させたいところである。a=2としてP’(i)を32ビットの精度に制限すると、その結果、演算は携帯モバイル機器で容易に実施可能となるが、これは、ほとんどのDSPで単一サイクルでの32ビットの加算がサポートされているからである。したがって、次のように定義する。
【0039】
【数20】

式中、l(i)は、iの関数として変化する移動係数である。好ましい実施形態では、l(i)=l=21であるが、他の値の集合も可能である。この例の場合、係数2は左にlビット分移動させることと等価であり、これによって、床関数
【0040】
【数21】

から端数ビットが除去され、一方、次に最も高い整数に丸められて、最終的に係数2−lが結果を右にlビットだけ戻して移動させる。この方法を用いると、すべてのi≧1に対してP’(i)≧log(i)となり、また、たった32ビットを用いるだけで十分なダイナミックレンジと精度が得られるが、これは、logドメインでの正の整数の分解能が9ビットであるため、512ビットの数を表すことが可能であるからである。これらの値をリアルタイムで計算するという複雑度を避けるために、F(144,28)の例の場合のたった144×4バイトというメモリを用いて事前計算してテーブルにストアすることが可能である。Q(d)を近似させる際に同様の方法を用いると、次式が得られる。
【0041】
【数22】

式中、床関数
【0042】
【数23】

を用いるが、これは、合計から個数を減算するためである。こうすることによって、Q’(d)が寄与してF’(n,d)≧F’(n,d)が保証されるように
【0043】
【数24】

となることが保証される。l(j)は、mおよびnの配列次第で多くの値をとることが可能であるが、好ましい実施形態では、可変の移動係数に対してl(j)=l=14という値を用いている。P’(i)と同じように、Q’(d)も、F(144,28)の例の場合のたった28×4バイトというメモリを用いて事前計算してテーブルにストアすることが可能である。R’(k)を定義するには、最初にkを次のように定義する必要がある。
【0044】
【数25】

P’(i)とQ’(d)を上記のように定義すると、kは、8ビットの符号なし整数成分kおよび24ビットの端数成分kを有する32ビットの数であることが望ましい。これを用いて、k=k+kとし、次にベース2の逆対数を取って2=2kikfとしてR’(k)≧exp(k)=2を導出する。次に、テイラー級数展開を用いて、K=2kfで代表されるように所望の精度で端数成分を推定し、天井関数を用いて結果を丸め、その結果を適切に移動して、多倍精度結果(l個のみの有効ビットを有する)を形成し、これで、
【0045】
【数26】

とするが、式中、2kiはテイラー級数展開の結果に適用される整数移動係数である。式中、lはR’(k)≧2を保証するために式15と16に同様に用いられる移動係数である。しかしながら、R’(k)は効率的なリアルタイム演算目的で実際に事前計算することは不可能であるため、再構成された信号ベクトルが入力された信号ベクトルに正確に適合することを保証するためにエンコーダとデコーダの双方で必要とされる演算を正確に指定する際には特に注意が必要である。式中、R’(k)は、正確にlビットで表すことが可能な
【0046】
【数27】

を左へ移動することによって得られる。
【0047】
上記において、関数P’(i)、Q’(d)およびR’(k)を、個々の関数の推定値がそれぞれ、結果としてF’(n,d)≧F(n,d)となることを保証するように選択されている。しかしながら、集合効果がこの条件を満足すれば十分である。たとえば、P’(i)およびQ’(d)は上記の通りで良いが、R’(k)はR’(k)≒2関数とすればより便利となるが、これは、最下位ビットを切り捨てまたは丸め、これで、R’(k)がkがある値の場合には2未満となるようにするものである。これは、この効果がP’(i)およびQ’(d)の影響よりも小さく、式10および式11の特性が真である限りは問題ない。
【0048】
また、P’(i)、Q’(d)およびR’(k)がどのような関数でも、式10および式11の特性が満足される限り、一般性を失うことなく用いることができる。しかしながら、用いる精度があまりに低いとビットレートが増大しかねないことに注意しなければならない。また、ビットレートと複雑度には固有のトレードオフがあり、mおよびnの値が大きい場合、複雑度を著しく低減するためには、1ビットまたは2ビットの増加は適当なトレードオフである。
【0049】
組み合わせコーディング回路106での位置とサイズの部分コード語Cの形成を次に述べる。p={p,p,・・・,p}を非ゼロパルス位置(増加数)としμ={m,m,・・・,m}をベクトルx内のそれぞれの位置での大きさとする。パルス位置のコードは次式で与えられる。
【0050】
【数28】

また、パルス振幅のコードは次式で与えられる。
【0051】
【数29】

したがって、これらのコード語を形成するにはv個とv−1個の多倍精度数を加える必要がある。デコーダでは同じような減算が必要である。これらの演算もまた、nおよびmが大きい場合にはFPC方法の複雑度を増大させることになる。多層埋め込みコーディングシステムの場合でのオーディオ信号のエンコーディング/デコーディングを考えてみる。この技法は、多層システムの3つの層での残余誤差信号の変換物をエンコーディングするのに用いられる。20msのブロックのサイズをn=280とし、すべての層で同じであるとする。エンコーディング用のパルスの数は、それぞれの層のビットレートによって異なる。それぞれの層で8kbps、16kbpsまたは32kbpsであれば、それぞれ20msのブロックのコーディングには160ビット、320ビット、640ビットが必要となる。FPC技法を用いると、280という長さを有するブロックは、それぞれ層当たり160ビット、320ビット、640ビットに対して28パルス、74パルス、230パルスを用いてコーディング可能である。式(19)および式(20)での多倍精度演算は、一般に16ビット語で動作するデジタル信号プロセッサで実行される。したがって、160ビットのコード語を形成するには、10語を超えると追加演算が必要となり、640ビットのコード語を形成するには、40語を超えると追加演算が必要となる。各々の追加演算で4単位(桁上げの発生、配列への移動、桁上げつきの加算)が必要となる。したがって、多倍システムのp層でkビットのコード語をエンコーディング/デコーディングするには、
【0052】
【数30】

を必要とする。n、m、pの様々な値に対する、多倍精度加算/減算演算の複雑度を表1に示す。この表において、WMOPSとは毎秒での100万の重み付け演算(Weighted Millions of Operation Per Second)のことである。
【0053】
【表1】

表1から、ビットレートが倍になると、多倍精度加算の複雑度は6倍に増えることが分かる。
【0054】
すでに述べたように、組み合わせ関数は、次式で与えられる近似関数で置換される。
【0055】
【数31】

式中、
【0056】
【数32】

であり、R’(k)は次式で与えられるR’(k)≒2の近似式である。
【0057】
【数33】

式中、k=k+kをkの整数成分と端数成分とに分割すると、K=2が、kの端数成分の低分解能テイラー級数展開式となる。上記の事前定義された関数Q’(r)とR’(k)とに基づいて、P’(i)が最初に得られ、これで、次式の一意のデコーディング可能性の不等式、
【0058】
【数34】

がnおよびdのすべての値に対して満足される。
【0059】
式(19)および式(20)に戻って、実際の関数Fの代わりに近似関数F’を置換すると、次式が得られる。
【0060】
【数35】

式(23)で得られるバイナリ表示F’(n,r)は、k>lの場合にはk−l個の終端ゼロを有する。F’(n,r)は、lビットの数を左に移動(h=k−lだけ移動)することによって多倍精度数として得られたものである。F’(p,k)のh個の終端ビットはゼロであるので、コード語のこれらのh個の終端ビットは、F’(p,k)を式(25)中の既存の部分和に加算すれば影響されることはない。この特性を効率的に用いるには、F’(pk,k)を擬似浮動小数点形式で計算する、すなわち、R’(k)がlビットの仮数(M)と対応する非ゼロ指数(h)とを出力する。lビットの仮数(M)は次のように定義される。
【0061】
【数36】

また、指数hは次のように定義される。
【0062】
【数37】

式中、式25および式26中の合計では、
【0063】
【数38】

個の語は、F’(p,k)を部分和に加算すれば影響されないという事実を容易に用いることが可能である。
【0064】
上記の方法では、複雑度が幾分か軽減される。しかしながら、それでも演算で発生した桁上げは、コード語の終わりまで伝播しなければならない。その結果、F’(k,r)がある特性を満足すれば、桁上げはコード語全体のより小さい部分に伝播するだけでよいことがわかる。
【0065】
第一に、正確に組み合わせ関数F(p,k)が(式(19)中でのように)加算され、合計がkの昇順で計算されるのであれば、1つの余剰の語に桁上げが伝播されることになるということを次のように見極める。
【0066】
【数39】

すなわち、F(p,k)が加算される部分和Ψは次式で与えられる。
【0067】
【数40】

多倍精度オペランドΨはF(p,k−1)未満であることがわかる。F(p,k)に対するyの最大比率はk/(p−k+1)未満である。この比率はまた、kの最大可能値でもあるk=p+1の場合には無限大である。F(p,p+1)=0であるため、この特殊な場合には桁上げを伝播させる必要はない。kが他の値の場合、この比率はnおよびmのうちのどちらか小さい方以下である。したがって、次式となる。
【0068】
【数41】

min(m,n)は32768未満であるから、上記の合計では、桁上げを余剰の1語を超えて伝播させることはない。これは、順序付けられた合計(29)中の組み合わせ関数をそのまま用いれば、たった1つの余剰の語に桁上げを伝播するという効果が得られることを示唆するが、組み合わせ関数そのままでは、終端のゼロという利点がなく、したがって、F(p,k)の全長にわたって加算が実行される。
【0069】
明らかに、一意のデコーディング可能性および終端のゼロを有することに加えて、式(29)中のF’(p,k)の順序付けされた合計では桁上げを伝播させる必要がないように近似関数F’(p,k)を設計することが好まれる。F’(p,k)が加算される部分和(第一の多倍精度コード語)が次式で与えられることがわかる。
【0070】
【数42】

これは、F’(p,k−1)未満である。したがって、次の不等式:
【0071】
【数43】

は、次式のようにF’(p,k)をΨ’に加算すれば、Ψ’k+1(修正された多倍精度コード語)が生成され、
【0072】
【数44】

桁上げはたった1つの余分の語に伝播するだけでよい。このことは、式(21)、式(22)、および式(23)によって定義されたF’(n,r)に対して実験的に決定されている。一意のデコーディング可能性不等式だけではなく、次の部分和不等式も満足させる必要がある。すなわち、
【0073】
【数45】

一意のデコーディング可能性不等式がn<pの場合に対して成立すると、次式となることがわかる。
【0074】
【数46】

したがって、次式を満足するP’(i)を生成すれば十分である。
【0075】
【数47】

式中、近似組み合わせ関数F’は次のことを満足する。
1.一意のデコーディング可能性不等式
2.終端ゼロ特性
3.部分和不等式
したがって、これらの関数を、多倍精度のコード語全体の非常に小さい部分集合(10、20または30語のうちのたった3語)だけを修正することによって、階乗パッキングコード語の構築に用いることが可能である。この小さい部分集合は、修正される多倍精度コード語中の語を特定する整数wおよびwによって定義される位置インジケータによって表される。位置インジケータは次のように計算される。
【0076】
【数48】

式中、16は語長であり、l=16は仮数の長さとして選ばれている。多倍精度コード語(Cπ)の語であるwからwは仮数Mに基づいて修正されている。ここで、多倍精度コード語は次式である。
【0077】
【数49】

デコーダでは、Ψ’k+1=Ψ’+F’(p,k)からF’(p,k)を減算する。合計で用いたような引数を用いると、関数F’が上述の3つの特性を満足すれば、デコーディング中でも、コード語全体の非常に小さい部分集合だけを修正するだけでよいことがわかる。デコーダでは、pk−1は次のように得られる。
【0078】
【数50】

従来技術による方法を用いて位置と大きさをエンコーディング/デコーディングする複雑度を表1に示した(複雑度は、合計と減算に対してしか示されていない。ここで複雑度は、F’を生成する複雑度を含んでいない)。多層埋め込みシステムの3層においてこの提案のエンコーディング/デコーディング方法を用いるとその結果、多倍精度加算/減算の複雑度がかなり軽減する。本発明を用いた場合の対応する複雑度を表2に示す。ここで、エンコーディングでより多くのパルス(より長いコード語)を用いると複雑度がより改善される。
【0079】
【表2】

非ゼロ位置の数のエンコーディング
ビットの仮数と指数を表示する形式もまた、非ゼロ位置の数をコーディングする際に利点がある。非ゼロ位置vの数の数値のコーディングは次式で与えられる。
【0080】
【数51】

二つの近似関数の乗算では、多倍精度形式より仮数と指数による形式の場合の方がはるかに容易になり得ることが簡単にわかる。しかしながら、その主な利点は、複雑度を軽減しようとして、lビットの仮数および指数表示を用いて、F’(n,k)およびF’(m−1、k−1)をそれぞれたった2つの語(そのlビットの仮数の積とその指数の和もまた事前ストア可能である)を用いて事前ストアすることが可能であるという事実である。これによって、なんら深刻なROMの要件なしでvを迅速にエンコーディングすることが可能となる。
【0081】
エンコーダ100の動作中は、組み合わせコーディング回路106が、エンコーディングされる信号ベクトル(x)を受信する。第1の多倍精度オペランド(Ψ’)が、エンコーディングされる信号ベクトルに基づいて生成される。より具体的には、
【0082】
【数52】

となるが、式中、pはベクトルxの非ゼロ要素の位置である。仮数オペランド(
【0083】
【数53】

)と指数オペランド(h=min(0,k―l)が生成される。仮数オペランドと指数オペランドは双方とも、エンコーディングされる信号ベクトルに基づく第2の多倍精度オペランド(F’(p,k))を表している。次に、回路106は修正されるΨ’の一部分を指数オペランドに基づいて選択する。上述したように、この部分は、修正される多倍精度コード語中の語を特定する整数wおよびwによって定義される位置インジケータによって表される。位置インジケータは式(38)に示すように計算される。次に、Ψ’の一部を仮数オペランドと位置インジケータに基づいて修正して、式(34)中のように修正済み多倍精度オペランド(Ψ’k+1)を生成し、また、対応するデコーダで用いる目的で、多倍精度コード語を、式(39)に示すように修正済み多倍精度オペランドに基づいて生成する。
【0084】
図2に、上記の技法を介してコード語を生成する一例を示す。上記したように、
【0085】
【数54】

である。図2に示すように、Ψ’からy’k+1に移る際には、多倍精度コード語の語3、4および5だけが修正される。修正予定であると選ばれる特定の語は、多倍精度コード語Cπから取られたwからw個の語であり、wおよびwは指数h=50に基づいており、そのため、次式のようになる:
【0086】
【数55】

Ψ’のw個の語は、仮数Mの最下位ビットである左に移動されたh−16×wを加算することによって修正される。w+1から語w−1個の語は、仮数Mの次の16ビットを加算することによって修正される。これら加算ではそれぞれ、桁上げ付き加算が実行され、次の段階のために繰越が発生する。語wは前の加算からの繰越分だけを加算することによって修正される。式中、l=16であり、w=w+2である。デコーダでの場合、減算が加算の代わりに実行される。
【0087】
図3は、デコーダ300のブロック図である。図示するように、デコーダ300は、組み合わせデコーディング回路306、信号再構築回路310、他のデコーディング回路304および組み合わせ関数発生器108を備えている。動作中、組み合わせコード語が、組み合わせデコーディング回路306によって受信される。組み合わせデコーディング回路306は、組み合わせ関数発生器にnおよびdを提供し、それに応答してF’(n,d)を受信する。次に、デコーディング回路306は、F’(n,d)に基づいてベクトルxを生成する。回路306は、回路106と同様に動作するが、加算の代わりに減算が実行されるという点で異なる。言い換えれば、Ψ’=Ψ’k+1―F’(p,k)となる。ベクトルxは信号再構築回路310に渡され、ここで、出力信号(たとえば、音声、オーディオ、画像、ビデオまたは他の信号)が、xと他のデコーディング回路304からの他のパラメータとに基づいて生成される。より具体的には、他のパラメータには、特定の実施形態で使用中の信号コーディングパラダイムと関連する任意の数の信号再構築パラメータが含まれる。これらには、信号スケーリングとエネルギーパラメータ、およびスペクトル整形パラメータおよび/または合成フィルタパラメータが含まれるが、これに限られない。通常は、これらのパラメータは、最終的な出力信号を再現するように、エネルギーをスケーリングするおよび/または再構築された信号ベクトルxをスペクトル的に整形するために用いられる。
【0088】
図4は、図1と図3の組み合わせ関数発生器の動作を示すフローチャートである。より具体的には、図4の論理の流れは、組み合わせ関数発生器108がF’(n,d)を生成するために必要なステップを示している。論理の流れはステップ402から始まり、ここで入力nおよびdが受信される。ステップ403で、アキュムレータAが0に設定される。ステップ404で、カウンタiが、n−d+1に等しくなるように設定される。ステップ406で、対数近似値P’(i)がアキュムレータAに加算される。ステップ410で、カウンタiが1だけ増分される。iがnより大きくなるまでステップ406およびステップ410がループ内で繰り返される。ステップ412でi>nであるかを試験し、iがnより大きくなればループを終了する。この段階では、アキュムレータには、組み合わせ関数F(n,d)の分子の対数近似値が入っている。組み合わせ関数Q’(d)の分母の対数近似値をステップ416でアキュムレータから減算して、組み合わせ関数の対数近似値を得る。ステップ418で、アキュムレータの指数近似値R’(A)を取って、組み合わせ関数の近似値Bを生成する。ステップ414で、BをF’(n,d)として出力する。
【0089】
図5は、図1のエンコーダの動作を示すフローチャートである。論理の流れはステップ501から始まり、ここで入力信号がベクトル発生器102によって受信される。上述したように、入力信号には、音声、オーディオ、画像、ビデオまたは他の信号が含まれる。ステップ503で、ベクトルxが生成されて組み合わせコーディング回路106に入力され、ここでmとdが決定されて組み合わせ関数発生器108に渡される。上述したように、mは単位振幅パルスの合計数(またはxの整数値成分の絶対値の和)であり、dはxの非ゼロベクトル要素の数である。ステップ505で、F’(n,d)が組み合わせ関数発生器108で生成されて組み合わせコーディング回路106に渡され、ここでベクトルxをコーディングして、組み合わせコード語Cを生成する(ステップ507)。上述したように、F’(n,d)は、F(n,d)中の関数P(i)、Q(d)およびR(k)を、式10および式11中の条件を満足するようにオリジナルの関数の低複雑度近似値で置換することによって生成される。
【0090】
図6は、図3のデコーダの動作を示すフローチャートである。論理の流れはステップ601から始まり、ここで組み合わせコード語が組み合わせデコーダ306によって受信される。ステップ603で、nおよびdが組み合わせデコーダ306から組み合わせ関数発生器108に渡され、F’(n,d)がデコーダ306に返される(ステップ605)。コード語がデコーダ306によってF’(n,d)に基づいてデコーディングされて(ステップ607)、ベクトルxを生成し、xは信号再構築回路310に渡され、ここで、出力信号が生成される(ステップ609)。
【0091】
図7は、組み合わせコーディング回路106の動作を示すフローチャートである。論理の流れはステップ701から始まり、ここで信号ベクトル(x)が受信される。第1の多倍精度オペランド(Ψ’)が、エンコードされる信号ベクトルに基づいて生成される(ステップ703)。より詳細には、
【0092】
【数56】

であり、式中、pはベクトルxの非ゼロ要素の位置である。仮数オペランド(
【0093】
【数57】

)と指数オペランド(h=min(0,k―l)が生成される(ステップ705)。仮数オペランドと指数オペランドは双方とも、エンコーディングされる信号ベクトルに基づく第2の多倍精度オペランド(F’(p,k))を表している。次に、回路106は修正されるΨ’の一部分を指数オペランドに基づいて選択する(ステップ707)。上述したように、この部分は、修正される多倍精度コード語中の語を特定する整数wおよびwによって定義される位置インジケータによって表される。位置インジケータは式(38)に示すように計算される。ステップ709で、Ψ’の一部を仮数オペランドと位置インジケータに基づいて修正して、式(34)中のように修正済み多倍精度オペランド(Ψ’k+1)を生成し、また、ステップ711で、対応するデコーダで用いられる目的で、多倍精度コード語を、式(39)に示すように修正済み多倍精度オペランドに基づいて生成する。
【0094】
図8は、組み合わせデコーディング回路306の動作を示すフローチャートである。論理の流れはステップ801から始まり、ここでコード語(Cπ)が受信される。第1の多倍精度オペランド(Ψ’k+1)が、受信されたコード語に基づいて生成される(ステップ803)。より具体的には、
【0095】
【数58】

であり、式中pはベクトルxの非ゼロ要素の位置である。仮数オペランド(
【0096】
【数59】

)と指数オペランド(h=min(0,k−l)が生成される(ステップ805)。仮数オペランドと指数オペランドは双方とも、コード語に基づく第2の多倍精度オペランド(F’(p,k))を表している。次に、回路306は、修正されるΨ’k+1の一部分を指数オペランドに基づいて選択する(ステップ807)。上述したように、この部分は、修正される多倍精度コード語中の語を特定する整数wおよびwによって定義される位置インジケータによって表される。位置インジケータは式(38)に示すように計算される。ステップ809で、Ψ’k+1の一部を仮数オペランドと位置インジケータに基づいて修正して、Ψ’=Ψ’k+1−F’(p,k)のように修正済み多倍精度オペランド(Ψ’)を生成し、また、ステップ811で、ベクトルxの(k−1)番目の非ゼロ要素の位置pk−1を、式(40)中でのように修正済み多倍精度コード語に基づいてデコードする。ステップ813で、デコーディングされたベクトルxをデコーディングされた位置pk−1に基づいて生成する。
【0097】
表1は、従来技術と比較して本発明と関連する複雑度の軽減状態を示す。mとnのさまざまな値に対して、ビットの近接数MとF(n,m)に対するフレームあたりの関数コールの平均数とが与えられている。これらの例の場合、フレーム長のインターバルは20msであり、これは毎秒50フレームという率に相当する。複雑度比較の尺度単位は、毎秒での100万の重み付け演算数、すなわちWMOPSである。コンピュータシミュレーションを用いて、制限された精度固定小数点DSP上で実行されたとして、複雑度の推定値を生成する。これらの例の場合、適宜多倍精度ライブラリを用い、また、各々の基本命令に適当な重みを割り当てた。たとえば、乗算と加算には、1つの演算の重みを与え、基本除算と超越(たとえば2)演算には、25演算という重みが与えられた。表から、F’(n,d)を用いると、従来技術よりかなり複雑度が軽減されたことと、nおよびmが増すのに比例して、複雑度が軽減することがわかる。この複雑度の軽減度は、F(144,60)の場合の2桁高いが、nおよびmがさらに増すに連れて増大し続けることが示されている。これは主として、従来技術で組み合わせ式を正確に実行するために必要とされるオペランドの精度が増大するためである。これらの演算は、mとnが大きい値となる可能性があるベクトルをコーディングする方法としては複雑度の重荷が過度のものとなり、階乗パルスコーディングが実質的に消去されるという結果となることを証明している。本発明は、このタイプのコーディングにとって必要とされる複雑な組み合わせ式の推定値を生成するために小さいメモリ容量と結合した単一サイクル低精度演算しか必要としないようにすることによってこれらの問題を解決するものである。
【0098】
【表3】

以下のテキストと式は、広帯域拡散スペクトルデジタルシステムの向上可変レートコーデック、音声サービスオプション3、68、および70の第3世代パートナーシップ・プロジェクト2(3GPP2)C.P0014−C仕様のコーディングおよびこれへのデコーディングのための上記の技法を実施するものである。
4.13.5 MDCT残存線スペクトル量子化
残存線スペクトルと呼ばれるMDCT係数は、4.11.8.3のFCB階乗コードブックと同様の方法で量子化される。基本的には、N=FPC個の可能な組み合わせの階乗コーディングは、長さnのベクトルvが特性
【0099】
【数60】

であり、すべての要素vが整数値であれば実行可能である。すなわち、vの整数要素の絶対値の和がmに等しい。この場合、Xのエネルギー・スケーリング・バージョンをコーディングすることが望ましく、これで、
【0100】
【数61】

となるが、式中、γはグローバルスケール係数であり、領域0〜143は周波数領域0〜3600Hzに対応している。この場合、mはNB入力の場合で28またはWB入力で23のいずれかとなり得る。上記の目的を実施するために用いられるγの値は、次の擬似コードにしたがって繰り返して決定される(非ゼロ‖Xの場合)。
【0101】
【数62】

量子化された残存線スペクトルXccが次のように計算される、
【0102】
【数63】

まれな場合であるが、mとm’が互いに異なる値であれば、線スペクトルは、量子化された線スペクトルXccに単位値を加算または減算することによって修正しなければならない。これによって、結果としての線スペクトルが階乗コーディング方法を用いて正確にコーディングされることが保証される。線スペクトルXccを表す出力インデックスは、指定されたRLSIDXである。このインデックスは、144FPC28の場合には131ビット含み、144FPC23の場合には114ビット含んでいる。
【0103】
ccをエンコーディングおよびデコーディングすることに伴う複雑度という問題を解決するために、標準の組み合わせ関係式F(n,r)==n!/r!(n−r)!の代わりに低分解能組み合わせ近似関数F’(n,r)を用いなければならない。特に、エンコーダとデコーダは双方とも、ベクトルXccを一意にエンコーディング/デコーディングする目的に対して十分である、特性F’(n,r)≧F(n,r)と特性F’(n,r)≧F’(n−1、r)+F’(n−1、r−1)とを有する組み合わせ関数発生器F’(n,r)を利用する。関数F’(n,r)は次式で与えられる。
【0104】
【数64】

式中、P’(i)およびQ’(r)は、次式で与えられる32ビットの参照テーブルであり、
【0105】
【数65】

および
【0106】
【数66】

式中、R’(k)は次式で与えられる、関数R’(k)≒2の多倍精度整数近似値である、
【0107】
【数67】

式中、k=k+kをkの整数成分と端数成分とに分割すると、K=2kfが、kの端数成分のテイラー級数展開式となる。これらの演算によって、多倍精度の乗算と除算とを32ビットの加算と2の低複雑度テイラー級数展開、次いで多倍精度シフト演算とで置換することによって組み合わせ式を計算する際に必要とされる複雑度がかなり軽減される。エンコーディング/デコーディング演算の他のすべての要素は4.11.8.3中の要素と同様である。
【0108】
本発明を特定の実施形態を参照して具体的に図示し説明したが、本発明の技術思想と範囲から逸脱することなく、本発明にさまざまな変更が可能であることが当業者に理解されるであろう。このような変更が添付の請求の範囲内であることを意図するものである。

【特許請求の範囲】
【請求項1】
入力ベクトル(x)からコード語(C)を生成するエンコーダを操作する方法であって、
エンコードされる前記入力ベクトルを受信するステップと、
前記入力ベクトルに基づいて、第1の多倍精度オペランド(Ψ’)を生成するステップと、
仮数オペランド(M)および指数オペランド(h)を生成するステップであって、前記仮数オペランドおよび前記指数オペランドは、エンコードされる信号ベクトルに基づく第2の多倍精度オペランド(F’(p,k))を表す、前記仮数オペランド(M)および指数オペランド(h)を生成するステップと、
修正される前記第1の多倍精度オペランドの一部分を前記指数オペランドに基づいて選択するステップと、
前記第1の多倍精度オペランドの前記一部分を前記仮数オペランドに基づいて修正して、修正済みの多倍精度オペランド(Ψ’k+1)を生成するステップと、
前記修正済みの多倍精度オペランドに基づいて前記コード語(C)を生成するステップと
を含む方法。
【請求項2】
Ψ’が、F’(p,i);1≦i≦kを表す仮数オペランドと指数オペランドの集合に基づいており、pは、前記入力ベクトルxの非ゼロ要素の位置である、請求項1に記載の方法。
【請求項3】
【数1】

である、請求項1に記載の方法。
【請求項4】
hが関数kである、請求項1に記載の方法。
【請求項5】
修正される前記第1の多倍精度オペランドΨ’の前記一部分が、整数wとwとで定義される位置インジケータによって表される、請求項1に記載の方法。
【請求項6】
【数2】

であり、16が語長であり、lが前記仮数の長さである、請求項5に記載の方法。
【請求項7】
エンコーダ(100)であって、
エンコードされるベクトルxを受信するステップと、
xに基づいて第1の多倍精度オペランド(Ψ’)を生成するステップと、
仮数オペランド(M)および指数オペランド(h)を生成するステップであって、前記仮数オペランドと前記指数オペランドは、エンコードされる信号ベクトルに基づく第2の多倍精度オペランド(F’(p,k))を表す、前記仮数オペランド(M)および指数オペランド(h)を生成するステップと、
修正されるΨ’の一部分を前記指数オペランドに基づいて選択するステップと、
Ψ’の前記一部分を前記仮数オペランドおよび位置インジケータに基づいて修正して、修正済みの多倍精度オペランド(Ψ’k+1)を生成するステップと、
Ψ’k+1に基づいてコード語(C)を生成するステップと
を実行する組み合わせコーディング回路(106)を備えるエンコーダ(100)。
【請求項8】
コード語(C)からベクトル(x)を生成するデコーダを操作する方法であって、
前記コード語(Cπ)を受信するステップと、
πに基づいて、第1の多倍精度オペランド(Ψ’k+1)を生成するステップと、
仮数オペランド(M)および指数オペランド(h)を生成するステップであって、前記仮数オペランドと前記指数オペランドは、第2の多倍精度オペランド(F’(pk、k))を表す、前記仮数オペランド(M)および指数オペランド(h)を生成するステップと、
修正されるΨ’k+1の一部分を前記指数オペランドに基づいて選択するステップと、
Ψ’k+1の前記一部分を前記仮数オペランドおよび位置インジケータに基づいて修正して、修正済みの多倍精度オペランド(Ψ’)を生成するステップと、
ベクトルxの(k−1)番目の非ゼロ要素の位置pk−1をデコードするステップと、
前記位置pk−1に基づいて前記ベクトル(x)を生成するステップと
を含む方法。
【請求項9】
デコーダ(300)であって、
コード語(Cπ)を受信するステップと、
πに基づいて第1の多倍精度オペランド(Ψ’k+1)を生成するステップと、
仮数オペランド(M)および指数オペランド(h)を生成するステップであって、前記仮数オペランドおよび前記指数オペランドは、エンコードされる信号ベクトルに基づく第2の多倍精度オペランド(F’(p,k))を表す、前記仮数オペランド(M)および指数オペランド(h)を生成するステップと、
修正されるΨ’k+1の一部分を前記指数オペランドに基づいて選択するステップと、
Ψ’k+1の前記一部分を前記仮数オペランドおよび位置インジケータに基づいて修正して、修正済みの多倍精度オペランド(Ψ’)を生成するステップと、
ベクトルxの(k−1)番目の非ゼロ要素の位置pk−1をデコードするステップと、
前記位置pk−1に基づいて前記ベクトル(x)を生成するステップと
を実行する組み合わせコーディング回路(306)を備えるデコーダ(300)。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公表番号】特表2011−501511(P2011−501511A)
【公表日】平成23年1月6日(2011.1.6)
【国際特許分類】
【出願番号】特願2010−528928(P2010−528928)
【出願日】平成20年9月23日(2008.9.23)
【国際出願番号】PCT/US2008/077321
【国際公開番号】WO2009/048735
【国際公開日】平成21年4月16日(2009.4.16)
【出願人】(390009597)モトローラ・インコーポレイテッド (649)
【氏名又は名称原語表記】MOTOROLA INCORPORATED
【Fターム(参考)】