信号包絡線の量子化インデックスをバイナリ符号化する方法、信号包絡線を復号化する方法、および、対応する符号化および復号化モジュール
可変長の第1モードで符号化するための符号化モジュール(502)を備える、信号の包絡線をバイナリ符号化するためのモジュール(402)である。本発明によれば、前記第1モードで符号化するための符号化モジュールは包絡線の飽和検出器を含み、前記符号化モジュール(402)は、前記第1モードで符号化するための符号化モジュール(502)と並列に第2モードで符号化するための第2符号化モジュール(503)と、符号長の基準および前記包絡線の飽和検出器からの結果の関数として前記2つの符号化モードのうち1つを選択するように構成されたモードセレクタ(504)と、をさらに含む。可聴周波数信号の変換符号化に適用される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、信号包絡線を定義する量子化インデックスをバイナリ符号化する方法に関する。また、その方法を実現するためのバイナリ符号化モジュールに関する。さらに、本発明によるバイナリ符号化方法およびバイナリ符号化モジュールによって符号化された包絡線を復号化するための方法およびモジュールに関する。
【背景技術】
【0002】
可聴周波数の音声、音楽、等の信号をデジタル化および圧縮するための各種技術が存在する。最も幅広く使用されている方法は、
・パルス符号変調(pulse code modulation(PCM))、適応差分パルス符号変調(adaptive differential pulse code modulation(ADPCM))符号化のような“波形符号化”法、
・符号励振線形予測(code excited linear prediction(CELP))符号化のような“パラメトリック分析合成(parametric analysis-synthesis)符号化”法、
・“サブバンドまたは変換知覚(transform perceptual)符号化”法
である。
可聴周波数信号を符号化するためのこれらの古典的な技術は、非特許文献1に開示されている。
上述したように本発明は基本的に変換符号化技術に関する。
【0003】
非特許文献2は、16kHzのサンプリング周波数、24kbit/sまたは32kbit/sのビットレートで、広帯域(wide band)と呼ばれる50Hzから7000Hzの通過帯域において、音声または音楽の可聴信号を圧縮するための変換符号化器を開示する。図1は非特許文献2に開示された関係する符号化方式を表わす。
この図が表わすようにG.722.1の符号化器は変調重複変換(modulated lapped transform(MLT))に基づく。フレーム長は20msであり、このフレームはN=320個のサンプルを含む。
MLT変換、Malvarの変調重複変換は、MDCT(modified discrete cosine transform(変形離散コサイン変換))の変形である。
【0004】
図2はMDCTの原理の概要を表わす。
現在のフレームとその後のフレームのサンプルを有する長さL=2Nの信号x(n)のMDCT変換X(m)は次のように定義される。ここでm=0,・・・,N−1である。
【0005】
【数1】
【0006】
上記の数式において、サインの項は図2に表わされている区切ったウィンドウに対応する。従って、X(m)の計算は、正弦波のウィンドウを用いた局所的なコサイン成分へのx(n)の射影に対応する。高速なMDCT計算アルゴリズムが存在する(例えば、非特許文献3を参照)。
変換のスペクトル包絡線を計算するために、MDCTによって導き出される値X(0),・・・,X(N−1)は20個の係数の16個のサブバンドにグループ化される。周波数帯域0〜7000Hzに対応する最初の14個のサブバンド(14×20=280個の係数)のみ量子化および符号化され、7000〜8000Hzの帯域(40個の係数)は無視される。
j番目のサブバンドについてのスペクトル包絡線の値は、次のように対数領域で定義される。ここでj=0,・・・,13であり、εの項はlog2(0)を防ぐ役割を果たす。
【0007】
【数2】
【0008】
従って、この包絡線はサブバンドごとの2乗の平均の平方根(root mean square)の値(rms値)に対応する。
そして、スペクトル包絡線は次のように量子化される。
・値の設定
log_rms = { log_rms(0) log_rms(1) … log_rms(13) }
は、まず、
rms_index = { rms_index(0) rms_index(1) … rms_index(13) }
に丸められる。ここで、インデックスrms_index(j)はj = 0, … , 13についてlog_rms(j)×0.5に最も近い整数に丸められる。
従って、量子化の間隔は20×log10(20.5) = 3.0103 … dBである。得られる値は、
j = 0について3 ≦ rms_index(0) ≦ 33(ダイナミックレンジ31×3.01 = 93.31 dB)、
j = 1, … , 13について-6 ≦ rms_index(j) ≦ 33(ダイナミックレンジ40×3.01 = 120.4 dB)
に制限される。
そして、後者の13個の帯域についてrms_indexの値は、1つのサブバンドと先行するサブバンドのスペクトル包絡線のrms値の間の差を計算することによって差分インデックスに変換される。
j = 1, … , 13についてdiff_ rms_index(j) = rms_index(j) - rms_index(j-1)
また、これらの差分インデックスは、
j = 1, … , 13について-12 ≦ diff_ rms_index(j) ≦ 11
に制限される。
【0009】
以下、“量子化インデックスの範囲”とは、バイナリ符号化によって表現することができるインデックスの範囲を言う。G.722.1の符号化器において、差分インデックスの範囲は[ -11, 12 ]の範囲に制限される。従って、G.722.1の符号化器の範囲は、
-12 ≦ rms_index(j) - rms_index(j-1) ≦ 11
ならば、rms_index(j)とrms_index(j-1)の間の差を符号化するために“十分である”と言われる。
そうでなければ、G.722.1の符号化器の範囲は“不十分である”と言われる。従って、2つのサブバンドの間のrmsの差が12×3.01 = 36.12 dBを超えるとすぐに、スペクトル包絡線の符号化は飽和に到達する。
【非特許文献1】W. B. Kleijn、K. K. Paliwal編、“Speech Coding and Synthesis”、(米国)、Elsevier、1995年
【非特許文献2】ITU-T勧告G.722.1、“Coding at 24 kbit/s and 32 kbit/s for hands-free operation in systems with low frame loss”、(米国)、1999年9月
【非特許文献3】P. Duhamel、Y. Mahieux、J. P. Petit、“A fast algorithm for the implementation of filter banks based on time domain aliasing cancellation”、(米国)、ICASSP、1991年、第3巻、p.2209-2212
【発明の開示】
【発明が解決しようとする課題】
【0010】
G.722.1の符号化器において量子化インデックスrms_index(0)は5ビットで伝送される。差分量子化インデックスdiff_ rms_index(j) (j = 1, … , 13)はハフマン符号化によって符号化され、各変数はそれ自身のハフマンテーブルを有する。従って、この符号化は可変長のエントロピー符号化であり、この原理は、最も確率の高い差分インデックス値にビットが短い符号を割り当て、最も確率が低い差分量子化インデックス値はより長い符号を有する。この種類の符号化は、平均ビットレートに関してたいへん効果的であり、G.722.1においてスペクトル包絡線を符号化するために使用される全ビット数は平均でおよそ50ビットであることに留意すべきである。しかし、以下で明らかになるように、最悪ケースのシナリオは制御できない。
【0011】
図3の表は、各サブバンドについて、最も短い符号長(最小)、従って、最も確率の高い値(最良ケース)の符号長、および、最も長い符号長(最大)、従って、最も確率の低い値(最悪ケース)の符号長を与える。この表において、最初のサブバンド(j = 0)は、続くサブバンドと異なり、5ビットの固定長を有することに留意すべきである。
これらの符号長の値を用いて、最良ケースではスペクトル包絡線の符号化は39ビット(1.95kbit/s)を必要とし、論理的な最悪ケースでは190ビット(9.5kbit/s)を必要とすることが分かる。
そして、G.722.1の符号化器において、スペクトル包絡線の量子化インデックスを符号化した後に残るビットは、量子化された包絡線によって正規化されたMDCT係数を符号化するために割り当てられる。サブバンドにおけるビットの割り当ては、本発明に関係しないカテゴリ化処理によって行われ、ここでは詳細には説明しない。G.722.1の処理の残りは、同じ理由から詳細には説明しない。
G.722.1の符号化器においてMDCTスペクトル包絡線を符号化することは多数の短所を有する。
上述したように、可変長の符号化は、最悪ケースにおいてスペクトル包絡線を符号化するためにたいへん大きなビット数を使用することに導きうる。また、その上、高いスペクトルのばらつきのいくつかの信号、例えば、孤立した正弦波についての飽和の危険性が指摘され、±36.12 dBの範囲はrms値の間の差の全てのダイナミックレンジを表現することができないので、差分符号化は有効に動作しない。
【0012】
従って、本発明によって解決すべき1つの技術的課題は、可変長符号化ステップを含み、最悪ケースでも符号化の長さを制限されたビット数に最小化する、信号包絡線を定義する量子化インデックスをバイナリ符号化する方法を提供することである。
また、本発明によって解決すべきもう1つの課題は、正弦波のような高いrms値を有する信号について飽和の危険性を管理することに関する。
【課題を解決するための手段】
【0013】
本発明によるこの技術的課題への解決策は、第1符号化モードは包絡線の飽和検出を含み、本方法は、前記第1符号化モードと並列に実行される第2符号化モードを含み、符号長の基準および前記第1符号化モードにおける包絡線の飽和検出の結果の関数として前記2つの符号化モードのうち1つを選択することからなる。
【0014】
従って、本発明による方法は、特に最悪ケースにおいて、すなわち、最も確率が低いrms値について、より少ない符号化ビット数を生じるモードを選択することができるように、2つの符号化モードの併存に基づき、その一方または各々は可変長である。
さらに、符号化モードの一方がサブバンドのrms値の飽和に導くならば、他のモードが“強制”され、それがより大きい符号長に導くとしても優先される。
【0015】
好ましい実施形態において、次の条件、前記第2符号化モードの符号長が前記第1符号化モードの符号長より短い、前記第1符号化モードの包絡線の飽和検出が飽和を示す、のうち1つまたは複数が満たされるとき、前記第2符号化モードが選択される。
【0016】
また、本発明は、可変長の第1モードで符号化するためのモジュールを備える、信号の包絡線をバイナリ符号化するためのモジュールを提供し、前記第1モードで符号化するためのモジュールは包絡線の飽和検出器を含み、前記バイナリ符号化するためのモジュールは、前記第1モードで符号化するためのモジュールと並列に第2モードで符号化するための第2モジュールと、符号長の基準および前記包絡線の飽和検出器からの結果の関数として前記2つの符号化モードのうち1つを保持するためのモードセレクタと、を含むことに注目すべきである。
最適な符号を選択することに加えて、前記モードセレクタは、適用すべき復号化モードを下流側の復号化器に指示するために、保持される符号化モードの指示子を生成することができる。
【0017】
さらに、本発明は、信号の包絡線を復号化する方法を提供し、前記包絡線は本発明によるバイナリ符号化する方法によって符号化され、前記復号化する方法は、前記選択された符号化モードの指示子を検出するステップと、前記選択された符号化モードに従って復号化するステップと、を含むことに注目すべきである。
【0018】
さらに、本発明は、信号の包絡線を復号化するためのモジュールを提供し、前記包絡線は本発明によるバイナリ符号化するためのモジュールによって符号化され、前記復号化するためのモジュールは可変長の第1モードで復号化するための復号化モジュールを備え、前記復号化するためのモジュールは、前記可変長の第1モードで復号化するための復号化モジュールと並列に第2モードで復号化するための第2復号化モジュールと、前記符号化モードの指示子を検出し、前記検出された指示子に対応する復号化モジュールを動作させるように構成されたモードセレクタと、を含むことに注目すべきである。
【0019】
最後に、本発明は、本発明の方法のステップを実行するためのコンピュータ読み取り可能な媒体に記憶された命令を含むプログラムを提供する。
【発明を実施するための最良の形態】
【0020】
限定しない例として与えられる添付図面を参照して続く説明は、本発明がどのように構成され、実施するためにどのように変形することができるかを明瞭に説明する。
本発明は、8kbit/sから32kbit/sで動作する特定の種類の階層的な可聴周波音符号化器の場合について説明する。しかし、スペクトル包絡線のバイナリ符号化および復号化ための本発明による方法およびモジュールはこの種類の符号化器に限定されず、信号のサブバンドにおけるエネルギーを定義する任意の形態のスペクトル包絡線のバイナリ符号化に適用できることが明確に理解されなければならない。
【0021】
図4に表わされているように、16kHzでサンプリングされた広帯域の階層的な符号化器への入力信号は、まず、直交ミラーフィルタ(quadrature mirror filter(QMF))によって2つのサブバンドに分割される。0〜4000Hzの低い帯域はローパスフィルタ300およびデシメーション301によって得られ、4000〜8000Hzの高い帯域はハイパスフィルタ302およびデシメーション303によって得られる。好ましい実施形態において、ローパスフィルタ300およびハイパスフィルタ302はタップ数(filter length)64であり、これはJ. Johnston、“A filter family designed for use in quadrature mirror filter banks”、ICASSP、1980年、第5巻、p.291-294に開示されている。
【0022】
低い帯域は、狭帯域(50〜4000Hz)におけるCELP符号化305の前に、50Hzより下の成分を除去するハイパスフィルタ304によって前処理される。ハイパスフィルタは、広帯域が50〜7000Hzの帯域として定義される事実を考慮する。上述した実施形態において、使用される狭帯域のCELP符号化305の形態は、第1段として、前処理フィルタなしの改良されたG.729符号化(ITU-T G.729勧告、“Coding of Speech at 8 kbit/s using Conjugate Structure Algebraic Code Excited Linear Prediction (CS-ACELP)”、1996年3月)、第2段として、追加の固定された辞書を備えるCELP符号化をカスケードすることに対応する。CELP符号化の誤差信号は減算器306によって計算され、そして、信号xloを得るためにWNB(z)フィルタ307によって知覚的に重み付けされる。その信号は、離散変換されたスペクトルXloを得るために、変形離散コサイン変換(MDCT)308によって分析される。
【0023】
H QMF フィルタ302によって引き起こされるエイリアシングを補償するために、まず、高い帯域におけるエイリアシングが309でキャンセルされ、その後、元の信号における7000〜8000Hzの範囲内の成分を除去するローパスフィルタ310によって高い帯域が前処理される。結果として生じる信号xhiは、離散変換されたスペクトルXhiを得るためにMDCT変換311に従う。帯域拡張312はxhiおよびXhiに基づいて処理する。
【0024】
図2を参照して既に説明したように、信号xloおよびxhiはN個のサンプルのフレームに分割され、長さL=2NのMDCT変換は現在および後のフレームを分析する。好ましい実施形態において、xloおよびxhiは8kHz、N=160(20ms)でサンプリングされた狭帯域の信号である。従って、MDCT変換XloおよびXhiはN=160個の係数を含み、そして、各係数は4000/160=25Hzの周波数帯域を表わす。好ましい実施形態において、MDCT変換はP. Duhamel、Y. Mahieux、J. P. Petit、“A fast algorithm for the implementation of filter banks based on ‘time domain aliasing cancellation’”、ICASSP、1991年、第3巻、p.2209-2212、に開示されたアルゴリズムによって実現される。
【0025】
低い帯域および高い帯域のMDCTスペクトルXloおよびXhiは変換符号化モジュール313内で符号化される。本発明は、より詳しくは、この符号化器に関する。
符号化モジュール305、312、313によって生成されるビットストリームは、マルチプレクサ314内で階層的なビットストリームに多重化および構造化される。符号化は、サンプル(フレーム)の20msのブロック、すなわち、320個のサンプルのブロックずつ処理される。符号化ビットレートは、8kbit/s、12kbit/s、2kbit/s間隔で14kbit/sから32kbit/sである。
【0026】
図5を参照してMDCT符号化器313を詳細に説明する。
低い帯域および高い帯域のMDCT変換は、まず、結合ブロック400内で結合される。従って、係数
Xlo = { Xlo(0) Xlo(1) … Xlo(N-1) }およびXhi = { Xhi(0) Xhi(1) … Xhi(N-1) }
は1つのベクトルにグループ化され、全帯域の離散変換されたスペクトル
X = { X(m) }m=0…L-1 = { Xlo(0) Xlo(1) … Xlo(N-1) Xhi(0) Xhi(1) … Xhi(N-1) }
を形成する。
XのMDCT係数X(0), … ,X(L-1)はK個のサブバンドにグループ化される。サブバンドへの分割はサブバンドの境界を定義するK+1個の要素のテーブル
tabis = { tabis(0) tabis(1) … tabis(K) }
によって表わすことができる。そして、第1のサブバンドは係数X(tabis(0))からX(tabis(1)-1)を含み、第2のサブバンドは係数X(tabis(1))からX(tabis(2)-1)を含む、等である。
好ましい実施形態においてK=18であり、これに関する分割は図7の表(a)に具体的に記載されている。
【0027】
サブバンドごとのエネルギー分布を表わす振幅log_rmsのスペクトル包絡線は401で計算され、インデックスrms_indexを得るためにスペクトル包絡線符号化器によって402で符号化される。403で各サブバンドにビットが割り当てられ、404でスペクトルXに球面ベクトル量子化が適用される。好ましい実施形態において、ビットの割り当ては、Y. Mahieux、J. P. Petit、“Transform coding of audio signals at 64 kbit/s”、IEEE GLOBECOM、1990年、第1巻、p.518-522において開示された方法に対応し、球面ベクトル量子化は国際出願PCT/FR04/00219において開示されたように処理される。
【0028】
スペクトル包絡線の符号化およびMDCT係数のベクトル量子化から結果として生じるビットはマルチプレクサ314によって処理される。
スペクトル包絡線の計算および符号化は以下でより詳細に説明する。
対数領域におけるスペクトル包絡線log_rmsはj番目のサブバンドについて次のように定義される。
【0029】
【数3】
【0030】
ここで、j = 0, … ,K-1であり、nb_coeff(j) = tabis(j+1) - tabis(j)はj番目のサブバンドにおける係数の数である。εの項はlog2(0)を防ぐ役割を果たす。スペクトル包絡線はj番目のサブバンドのdBにおけるrms値に対応し、従って、振幅の包絡線である。
好ましい実施形態において、サブバンドの大きさnb_coeff(j)は図7の表(b)において与えられる。さらに、ε= 2-24であり、これはlog_rms(j) ≧ -12を意味する。
【0031】
符号化器402によるスペクトル包絡線の符号化は図6に表わされている。
対数領域における包絡線log_rmsは、まず、均一量子化500によってrms_index = { rms_index(0) rms_index(1) … rms_index(K-1) }に丸められる。この量子化は、簡単に、
rms_index(j) = log_rms(j)×0.5に最も近い整数に丸められ、
rms_index(j) < -11ならばrms_index(j) = -11
rms_index(j) > +20ならばrms_index(j) = +20
によって与えられる。
そして、スペクトル包絡線は20×log10(20.5) = 3.0103 … dBの均一の対数の間隔で符号化される。結果として生じるベクトルrms_indexは-11から+20の整数インデックスを含む(すなわち、32個の値がありうる)。従って、スペクトル包絡線は約32×3.01 = 96.31 dBのダイナミックレンジで表現される。
そして、量子化された包絡線rms_indexは、ブロック501で2つの部分ベクトルに分割され、1つの部分ベクトルは低い帯域の包絡線についてのrms_index_bb = { rms_index(0) rms_index(1) … rms_index(K_BB - 1) }であり、他のベクトルは高い帯域の包絡線についてのrms_index_bh = { rms_index(K_BB) … rms_index(K - 1) }である。このましい実施形態においてK = 18、K_BB = 10であり、言い換えると、最初の10個のサブバンドは低い帯域(0〜4000Hz)に存在し、最後の8個のサブバンドは高い帯域(4000〜8000Hz)に存在する。
【0032】
低い帯域の包絡線rms_index_bbは、並列に動作する2つの符号化モジュール502、503、すなわち、可変長差分符号化モジュール502および固定長(“等確率”)符号化モジュール503によって2進数化される。好ましい実施形態において、モジュール502は差分ハフマン符号化モジュールであり、モジュール503は通常のバイナリ符号化モジュールである。
差分ハフマン符号化モジュール502は以下で詳細に説明する2つの符号化ステップを含む。
【0033】
<差分インデックスの計算>
差分量子化インデックスdiff_index(1) diff_index(2) … diff_index(K_BB - 1)は次によって与えられる。
satur_bb = 0
diff_index(j) = rms_index(j) - rms_index(j-1)
diff_index(j)<-12またはdiff_index(j)>+12ならばsatur_bb = 1
バイナリ指示子satur_bbはdiff_index(j)が[-12, +12]の範囲内にない場合を検出するために使用される。satur_bb = 0ならば、全ての要素はその範囲内に存在し、差分ハフマン符号化インデックスは十分である。そうでないならば、これらの要素の1つが-12より小さいか、または、+12より大きく、そのインデックスの範囲は不十分である。従って、指示子satur_bbは低い帯域において差分ハフマン符号化によるスペクトル包絡線の飽和を検出するために使用される。飽和が検出されると、符号化モードは固定長(等確率)符号化モードに変更される。実際、等確率モードのインデックスの範囲は常に十分である。
【0034】
<最初のインデックスのバイナリ変換および差分インデックスのハフマン符号化>
量子化インデックスrms_index(0)は-11から+20の整数値を有する。それは5ビットの固定長で2進数に直接に符号化される。そして、j = 1 … K_BB - 1についての差分量子化インデックスdiff_index(j)は、ハフマン符号化(可変長)によってバイナリ形式に変換される。使用されるハフマンテーブルは図8の表に具体的に表わされている。
rms_index(0)のバイナリ変換および量子化インデックスdiff_index(j)のハフマン符号化から生じる全ビット数bit_cnt1_bbは変動する。
好ましい実施形態において、ハフマン符号の最大の長さは14ビットであり、ハフマン符号化は低い帯域におけるK_BB-1 = 9個の差分インデックスに適用される。従って、bit_cnt1_bbの論理的な最大値は5 + 9×14 = 131ビットである。これは論理値にすぎないが、最悪ケースのシナリオにおいて低い帯域におけるスペクトル包絡線の符号化によって使用されるビット数はたいへん大きいことがあり、悪いケースのシナリオに限定することは正に等確率符号化の役割であることに留意すべきである。
【0035】
等確率符号化モジュール503は、要素rms_index(0) rms_index(1) … rms_index(K_BB - 1)を通常のバイナリ形式に直接に変換する。これらは-11から+20の範囲にわたり、従って、各々は5ビットで符号化される。従って、等確率符号化のために必要なビット数は単純にbit_cnt2_bb = 5×K_BBビットである。好ましい実施形態において、K_BB = 10、従って、bit_cont2_bb = 50ビットである。
【0036】
モードセレクタ504は、2つのモジュール502、503(差分ハフマン符号化または等確率符号化)のどちらがより少ないビット数を生成するかを選択する。差分ハフマンモードが差分インデックスを+/-12において飽和させるとき、差分量子化インデックスの計算において飽和が検出されるとすぐに等確率モードが選択される。この方法は、2つの隣接する帯域のrms値の間の差が12×3.01 = 36.12 dBを超えるとすぐにスペクトル包絡線の飽和を防止する。モード選択は次のように説明される。
satur_bb = 1またはbit_cnt2_bb<bit_cnt1_bbならば等確率モードが選択される。
そうでなければ、差分ハフマンモードが選択される。
モードセレクタ504は、差分ハフマンモードについて0、等確率モードについて1の規則を使用して、差分ハフマンまたは等確率モードのどちらが選択されたかを示すビットを生成する。このビットは、マルチプレクサ314内でスペクトル包絡線を符号化することによって生成される他のビットと多重化される。また、モードセレクタ504は、マルチプレクサ314内で選択された符号化モードのビットを多重化する双安定505を動作させる。
【0037】
高い帯域の包絡線rms_index_bhは、rms_index_bbと全く同様に、等確率符号化モジュール507による最初のインデックスlog_rms(0)の5ビットでの均一符号化および符号化モジュール506による差分インデックスのハフマン符号化が処理される。モジュール506内で使用されるハフマンテーブルは、モジュール502内で使用されるものと同一である。同様に、等確率符号化507は低い帯域における符号化503と同一である。モードセレクタ508は、どのモード(差分ハフマンモードまたは等確率モード)が選択されたかを示すビットを生成し、そのビットは、マルチプレクサ314内で双安定509からのビットと多重化される。高い帯域における等確率符号化のために必要なビット数はbit_cnt2_bh = (K - K_BB)×5、好ましい実施形態において、K - K_BB = 8従ってbit_cnt2_bh = 40ビットである。
【0038】
好ましい実施形態において、低い帯域の包絡線に関するビットの前に高い帯域の包絡線に関するビットが多重化されることに留意することが重要である。ここで、符号化されたスペクトル包絡線の一部のみが復号化器によって受信されるならば、高い帯域の包絡線は低い帯域の包絡線の前に復号化することができる。
【0039】
説明した符号化器に対応する階層的な可聴周波音復号化器が図9に表されている。各々の20msのフレームを定義するビットはデマルチプレクサ600内で逆多重化される。ここで、8kbit/sから32kbit/sにおける復号化が表わされている。実際、ビットストリームは8kbit/s、12kbit/s、14kbit/s、または、2kbit/s間隔で14kbit/sから32kbit/sに打ち切ることが可能である。
8および12kbit/sにおける階層のビットストリームは、最初の狭帯域(0〜4000Hz)の合成を生成するためにCELP復号化器601によって使用される。14kbit/sの階層に対応するビットストリームの部分は帯域拡張モジュール602によって復号化される。高い帯域(4000〜7000Hz)において得られた信号はMDCT変換603を適用することによって変換信号
【0040】
【数4】
【0041】
に変換される。MDCT復号化604は図10に表わされており、後に説明する。ビットレート14kbit/sから32kbit/sに対応するビットストリームから、低い帯域において再構成されたスペクトル
【0042】
【数5】
【0043】
が生成され、高い帯域において再構成されたスペクトル
【0044】
【数6】
【0045】
が生成される。これらのスペクトルは、ブロック605および606内で逆MDCT変換によって時間領域の信号
【0046】
【数7】
【0047】
および
【0048】
【数8】
【0049】
に変換される。信号
【0050】
【数9】
【0051】
は逆知覚フィルタリング607の後にCELP合成608に加算され、そして、その結果は609でポストフィルタリングされる。
16kHzでサンプリングされた広帯域の出力信号は、オーバーサンプリング610および612、ローパスおよびハイパスフィルタリング611および613、加算器614を含む合成QMFフィルタバンクによって得られる。
【0052】
以下、図10を参照してMDCT復号化器604を説明する。
このモジュールに関するビットは、デマルチプレクサ600内で逆多重化される。スペクトル包絡線は、まず、インデックスrms_indexおよび線形スケールで再構成されたスペクトル包絡線rms_qを得るために701で復号化される。復号化モジュール701は図11に表わされており、後に説明する。ビットエラーがなく、スペクトル包絡線を定義する全てのビットが正しく受信されると、インデックスrms_indexは符号化器で計算されたものと正確に対応し、符号化器と復号化器が互換性を有するようにビット702の割り当てが符号化器と復号化器で同一の情報を要求するので、この特性は必須である。正規化されたMDCT係数がブロック703で復号化される。
【0053】
エネルギーが少な過ぎるために、受信されなかった、または、符号化されなかったサブバンドは、置換モジュール704でスペクトル
【0054】
【数10】
【0055】
からのサブバンドによって置換される。最後に、モジュール705は、モジュール704の出力において適用される係数に、サブバンドごとの振幅の包絡線を適用し、再構成されたスペクトル
【0056】
【数11】
【0057】
は、706で、低い帯域(0〜4000Hz)において再構成されたスペクトル
【0058】
【数12】
【0059】
と高い帯域(4000〜7000Hz)において再構成されたスペクトル
【0060】
【数13】
【0061】
に分離される。
【0062】
図11は、スペクトル包絡線の復号化を表わす。スペクトル包絡線に関するビットはデマルチプレクサ600によって逆多重化される。
好ましい実施形態において、高い帯域のスペクトル包絡線に関するビットは、低い帯域のスペクトル包絡線に関するビットの前に送信される。従って、復号化は、モードセレクタ801において符号化器から受信したモード選択ビットの値(差分ハフマンモードまたは等確率モード)を読み取ることを開始する。セレクト801は符号化と同じ規則、すなわち、差分ハフマンモードについて0、等確率モードについて1に従う。このビットの値は双安定802および805を駆動する。
モード選択ビットが0ならば、可変長復号化モジュール803によって差分ハフマン復号化が処理される。5ビットで表現された-11から+20である絶対値rms_index(K_BB)がまず復号化され、続いて、j = K_BB ... K-1について差分量子化インデックスdiff_index(j)に関するハフマン符号が復号化される。そして、j = K_BB ... K-1について下記の式を用いて整数インデックスrms_index(j)が再構成される。
rms_index(j) = rms_index(j-1) + diff_index(j)
モード選択ビットが1ならば、固定長復号化モジュール804によってj = K_BB ... K-1について5ビットで表現された-11から+20のrms_index(j)の値が続いて復号化される。
モード0においてハフマン符号が発見されないか、または、受信したビット数が高い帯域を完全に復号化するために不十分であるならば、復号化処理はエラーが発生したことをMDCT復号化器に示す。
【0063】
低い帯域に関するビットは、高い帯域に関するビットと同様に復号化される。従って、この復号化部は、モードセレクタ806、双安定807、810、復号化モジュール808、809を含む。
高い帯域の再構成されたスペクトル包絡線は、j = K_BB ... K-1についての整数インデックスrms_index(j)を含む。低い帯域における再構成はj = 0 ... K_BB-1についての整数インデックスrms_index(j)を含む。これらのインデックスは結合ブロック811において単一のベクトルrms_index = { rms_index(0) rms_index(1) ... rms_index(K-1) }にグループ化される。ベクトルrms_indexは2を底とする対数スケールで再構成されたスペクトル包絡線を表わす。スペクトル包絡線は変換モジュール812によって線形スケールに変換され、j = 0, ... , K-1について次の演算が行われる。
rms_q(j) = 2rms_index(j)
【0064】
本発明はここで説明した実施形態に限定されないことは明らかである。特に、本発明によって符号化された包絡線は、サブフレームごとのrms値を定義するスペクトル包絡線ではなく、信号のサブフレームごとのrms値を定義する時間包絡線に対応しうることに留意すべきである。
さらに、差分ハフマン符号化と並列の固定長符号化ステップは、可変長符号化ステップ、例えば、差分インデックスをハフマン符号化する代わりに量子化インデックスをハフマン符号化することによって置換することができる。また、ハフマン符号化は、算術符号化、Tunstall符号化、等のような任意の他の損失のない符号化によって置き換えることができる。
【産業上の利用可能性】
【0065】
本発明は、可聴周波数の音声、音楽、等の信号のようなデジタル信号の伝送および記憶に、特に効果的な適用が見出される。本発明による符号化方法および符号化モジュールは可聴周波数信号の符号化を変換するために、特によく適合する。
【図面の簡単な説明】
【0066】
【図1】G.722.1勧告に適合した符号化器の図である。
【図2】MDCT型変換を表わす図である。
【図3】図1の符号化器についてのハフマン符号化での各サブバンドにおける符号ビットの最小の長さ(最小)および最大の長さ(最大)の表である。
【図4】本発明を実現するMDCT符号化器を含む階層的な可聴周波音符号化器の図である。
【図5】図4のMDCT符号化器の詳細な図である。
【図6】図5のMDCT符号化器のスペクトル包絡線符号化モジュールの図である。
【図7】MDCTスペクトルの18個のサブバンドへの分割を定義する表(a)、および、サブバンドの大きさを与える表(b)を含む。
【図8】差分インデックスを表現するためのハフマン符号化の一例の表である。
【図9】本発明を実現するMDCT復号化器を含む階層的な可聴周波音復号化器の図である。
【図10】図9のMDCT復号化器の詳細な図である。
【図11】図10のMDCT復号化器のスペクトル包絡線復号化モジュールの図である。
【符号の説明】
【0067】
300、310 ローパスフィルタ
301、303 デシメーション
302、304 ハイパスフィルタ
305 CELP符号化
306 減算器
307 フィルタ
308、311 MDCT変換
312 帯域拡張
313 MDCT符号化
314 マルチプレクサ
【技術分野】
【0001】
本発明は、信号包絡線を定義する量子化インデックスをバイナリ符号化する方法に関する。また、その方法を実現するためのバイナリ符号化モジュールに関する。さらに、本発明によるバイナリ符号化方法およびバイナリ符号化モジュールによって符号化された包絡線を復号化するための方法およびモジュールに関する。
【背景技術】
【0002】
可聴周波数の音声、音楽、等の信号をデジタル化および圧縮するための各種技術が存在する。最も幅広く使用されている方法は、
・パルス符号変調(pulse code modulation(PCM))、適応差分パルス符号変調(adaptive differential pulse code modulation(ADPCM))符号化のような“波形符号化”法、
・符号励振線形予測(code excited linear prediction(CELP))符号化のような“パラメトリック分析合成(parametric analysis-synthesis)符号化”法、
・“サブバンドまたは変換知覚(transform perceptual)符号化”法
である。
可聴周波数信号を符号化するためのこれらの古典的な技術は、非特許文献1に開示されている。
上述したように本発明は基本的に変換符号化技術に関する。
【0003】
非特許文献2は、16kHzのサンプリング周波数、24kbit/sまたは32kbit/sのビットレートで、広帯域(wide band)と呼ばれる50Hzから7000Hzの通過帯域において、音声または音楽の可聴信号を圧縮するための変換符号化器を開示する。図1は非特許文献2に開示された関係する符号化方式を表わす。
この図が表わすようにG.722.1の符号化器は変調重複変換(modulated lapped transform(MLT))に基づく。フレーム長は20msであり、このフレームはN=320個のサンプルを含む。
MLT変換、Malvarの変調重複変換は、MDCT(modified discrete cosine transform(変形離散コサイン変換))の変形である。
【0004】
図2はMDCTの原理の概要を表わす。
現在のフレームとその後のフレームのサンプルを有する長さL=2Nの信号x(n)のMDCT変換X(m)は次のように定義される。ここでm=0,・・・,N−1である。
【0005】
【数1】
【0006】
上記の数式において、サインの項は図2に表わされている区切ったウィンドウに対応する。従って、X(m)の計算は、正弦波のウィンドウを用いた局所的なコサイン成分へのx(n)の射影に対応する。高速なMDCT計算アルゴリズムが存在する(例えば、非特許文献3を参照)。
変換のスペクトル包絡線を計算するために、MDCTによって導き出される値X(0),・・・,X(N−1)は20個の係数の16個のサブバンドにグループ化される。周波数帯域0〜7000Hzに対応する最初の14個のサブバンド(14×20=280個の係数)のみ量子化および符号化され、7000〜8000Hzの帯域(40個の係数)は無視される。
j番目のサブバンドについてのスペクトル包絡線の値は、次のように対数領域で定義される。ここでj=0,・・・,13であり、εの項はlog2(0)を防ぐ役割を果たす。
【0007】
【数2】
【0008】
従って、この包絡線はサブバンドごとの2乗の平均の平方根(root mean square)の値(rms値)に対応する。
そして、スペクトル包絡線は次のように量子化される。
・値の設定
log_rms = { log_rms(0) log_rms(1) … log_rms(13) }
は、まず、
rms_index = { rms_index(0) rms_index(1) … rms_index(13) }
に丸められる。ここで、インデックスrms_index(j)はj = 0, … , 13についてlog_rms(j)×0.5に最も近い整数に丸められる。
従って、量子化の間隔は20×log10(20.5) = 3.0103 … dBである。得られる値は、
j = 0について3 ≦ rms_index(0) ≦ 33(ダイナミックレンジ31×3.01 = 93.31 dB)、
j = 1, … , 13について-6 ≦ rms_index(j) ≦ 33(ダイナミックレンジ40×3.01 = 120.4 dB)
に制限される。
そして、後者の13個の帯域についてrms_indexの値は、1つのサブバンドと先行するサブバンドのスペクトル包絡線のrms値の間の差を計算することによって差分インデックスに変換される。
j = 1, … , 13についてdiff_ rms_index(j) = rms_index(j) - rms_index(j-1)
また、これらの差分インデックスは、
j = 1, … , 13について-12 ≦ diff_ rms_index(j) ≦ 11
に制限される。
【0009】
以下、“量子化インデックスの範囲”とは、バイナリ符号化によって表現することができるインデックスの範囲を言う。G.722.1の符号化器において、差分インデックスの範囲は[ -11, 12 ]の範囲に制限される。従って、G.722.1の符号化器の範囲は、
-12 ≦ rms_index(j) - rms_index(j-1) ≦ 11
ならば、rms_index(j)とrms_index(j-1)の間の差を符号化するために“十分である”と言われる。
そうでなければ、G.722.1の符号化器の範囲は“不十分である”と言われる。従って、2つのサブバンドの間のrmsの差が12×3.01 = 36.12 dBを超えるとすぐに、スペクトル包絡線の符号化は飽和に到達する。
【非特許文献1】W. B. Kleijn、K. K. Paliwal編、“Speech Coding and Synthesis”、(米国)、Elsevier、1995年
【非特許文献2】ITU-T勧告G.722.1、“Coding at 24 kbit/s and 32 kbit/s for hands-free operation in systems with low frame loss”、(米国)、1999年9月
【非特許文献3】P. Duhamel、Y. Mahieux、J. P. Petit、“A fast algorithm for the implementation of filter banks based on time domain aliasing cancellation”、(米国)、ICASSP、1991年、第3巻、p.2209-2212
【発明の開示】
【発明が解決しようとする課題】
【0010】
G.722.1の符号化器において量子化インデックスrms_index(0)は5ビットで伝送される。差分量子化インデックスdiff_ rms_index(j) (j = 1, … , 13)はハフマン符号化によって符号化され、各変数はそれ自身のハフマンテーブルを有する。従って、この符号化は可変長のエントロピー符号化であり、この原理は、最も確率の高い差分インデックス値にビットが短い符号を割り当て、最も確率が低い差分量子化インデックス値はより長い符号を有する。この種類の符号化は、平均ビットレートに関してたいへん効果的であり、G.722.1においてスペクトル包絡線を符号化するために使用される全ビット数は平均でおよそ50ビットであることに留意すべきである。しかし、以下で明らかになるように、最悪ケースのシナリオは制御できない。
【0011】
図3の表は、各サブバンドについて、最も短い符号長(最小)、従って、最も確率の高い値(最良ケース)の符号長、および、最も長い符号長(最大)、従って、最も確率の低い値(最悪ケース)の符号長を与える。この表において、最初のサブバンド(j = 0)は、続くサブバンドと異なり、5ビットの固定長を有することに留意すべきである。
これらの符号長の値を用いて、最良ケースではスペクトル包絡線の符号化は39ビット(1.95kbit/s)を必要とし、論理的な最悪ケースでは190ビット(9.5kbit/s)を必要とすることが分かる。
そして、G.722.1の符号化器において、スペクトル包絡線の量子化インデックスを符号化した後に残るビットは、量子化された包絡線によって正規化されたMDCT係数を符号化するために割り当てられる。サブバンドにおけるビットの割り当ては、本発明に関係しないカテゴリ化処理によって行われ、ここでは詳細には説明しない。G.722.1の処理の残りは、同じ理由から詳細には説明しない。
G.722.1の符号化器においてMDCTスペクトル包絡線を符号化することは多数の短所を有する。
上述したように、可変長の符号化は、最悪ケースにおいてスペクトル包絡線を符号化するためにたいへん大きなビット数を使用することに導きうる。また、その上、高いスペクトルのばらつきのいくつかの信号、例えば、孤立した正弦波についての飽和の危険性が指摘され、±36.12 dBの範囲はrms値の間の差の全てのダイナミックレンジを表現することができないので、差分符号化は有効に動作しない。
【0012】
従って、本発明によって解決すべき1つの技術的課題は、可変長符号化ステップを含み、最悪ケースでも符号化の長さを制限されたビット数に最小化する、信号包絡線を定義する量子化インデックスをバイナリ符号化する方法を提供することである。
また、本発明によって解決すべきもう1つの課題は、正弦波のような高いrms値を有する信号について飽和の危険性を管理することに関する。
【課題を解決するための手段】
【0013】
本発明によるこの技術的課題への解決策は、第1符号化モードは包絡線の飽和検出を含み、本方法は、前記第1符号化モードと並列に実行される第2符号化モードを含み、符号長の基準および前記第1符号化モードにおける包絡線の飽和検出の結果の関数として前記2つの符号化モードのうち1つを選択することからなる。
【0014】
従って、本発明による方法は、特に最悪ケースにおいて、すなわち、最も確率が低いrms値について、より少ない符号化ビット数を生じるモードを選択することができるように、2つの符号化モードの併存に基づき、その一方または各々は可変長である。
さらに、符号化モードの一方がサブバンドのrms値の飽和に導くならば、他のモードが“強制”され、それがより大きい符号長に導くとしても優先される。
【0015】
好ましい実施形態において、次の条件、前記第2符号化モードの符号長が前記第1符号化モードの符号長より短い、前記第1符号化モードの包絡線の飽和検出が飽和を示す、のうち1つまたは複数が満たされるとき、前記第2符号化モードが選択される。
【0016】
また、本発明は、可変長の第1モードで符号化するためのモジュールを備える、信号の包絡線をバイナリ符号化するためのモジュールを提供し、前記第1モードで符号化するためのモジュールは包絡線の飽和検出器を含み、前記バイナリ符号化するためのモジュールは、前記第1モードで符号化するためのモジュールと並列に第2モードで符号化するための第2モジュールと、符号長の基準および前記包絡線の飽和検出器からの結果の関数として前記2つの符号化モードのうち1つを保持するためのモードセレクタと、を含むことに注目すべきである。
最適な符号を選択することに加えて、前記モードセレクタは、適用すべき復号化モードを下流側の復号化器に指示するために、保持される符号化モードの指示子を生成することができる。
【0017】
さらに、本発明は、信号の包絡線を復号化する方法を提供し、前記包絡線は本発明によるバイナリ符号化する方法によって符号化され、前記復号化する方法は、前記選択された符号化モードの指示子を検出するステップと、前記選択された符号化モードに従って復号化するステップと、を含むことに注目すべきである。
【0018】
さらに、本発明は、信号の包絡線を復号化するためのモジュールを提供し、前記包絡線は本発明によるバイナリ符号化するためのモジュールによって符号化され、前記復号化するためのモジュールは可変長の第1モードで復号化するための復号化モジュールを備え、前記復号化するためのモジュールは、前記可変長の第1モードで復号化するための復号化モジュールと並列に第2モードで復号化するための第2復号化モジュールと、前記符号化モードの指示子を検出し、前記検出された指示子に対応する復号化モジュールを動作させるように構成されたモードセレクタと、を含むことに注目すべきである。
【0019】
最後に、本発明は、本発明の方法のステップを実行するためのコンピュータ読み取り可能な媒体に記憶された命令を含むプログラムを提供する。
【発明を実施するための最良の形態】
【0020】
限定しない例として与えられる添付図面を参照して続く説明は、本発明がどのように構成され、実施するためにどのように変形することができるかを明瞭に説明する。
本発明は、8kbit/sから32kbit/sで動作する特定の種類の階層的な可聴周波音符号化器の場合について説明する。しかし、スペクトル包絡線のバイナリ符号化および復号化ための本発明による方法およびモジュールはこの種類の符号化器に限定されず、信号のサブバンドにおけるエネルギーを定義する任意の形態のスペクトル包絡線のバイナリ符号化に適用できることが明確に理解されなければならない。
【0021】
図4に表わされているように、16kHzでサンプリングされた広帯域の階層的な符号化器への入力信号は、まず、直交ミラーフィルタ(quadrature mirror filter(QMF))によって2つのサブバンドに分割される。0〜4000Hzの低い帯域はローパスフィルタ300およびデシメーション301によって得られ、4000〜8000Hzの高い帯域はハイパスフィルタ302およびデシメーション303によって得られる。好ましい実施形態において、ローパスフィルタ300およびハイパスフィルタ302はタップ数(filter length)64であり、これはJ. Johnston、“A filter family designed for use in quadrature mirror filter banks”、ICASSP、1980年、第5巻、p.291-294に開示されている。
【0022】
低い帯域は、狭帯域(50〜4000Hz)におけるCELP符号化305の前に、50Hzより下の成分を除去するハイパスフィルタ304によって前処理される。ハイパスフィルタは、広帯域が50〜7000Hzの帯域として定義される事実を考慮する。上述した実施形態において、使用される狭帯域のCELP符号化305の形態は、第1段として、前処理フィルタなしの改良されたG.729符号化(ITU-T G.729勧告、“Coding of Speech at 8 kbit/s using Conjugate Structure Algebraic Code Excited Linear Prediction (CS-ACELP)”、1996年3月)、第2段として、追加の固定された辞書を備えるCELP符号化をカスケードすることに対応する。CELP符号化の誤差信号は減算器306によって計算され、そして、信号xloを得るためにWNB(z)フィルタ307によって知覚的に重み付けされる。その信号は、離散変換されたスペクトルXloを得るために、変形離散コサイン変換(MDCT)308によって分析される。
【0023】
H QMF フィルタ302によって引き起こされるエイリアシングを補償するために、まず、高い帯域におけるエイリアシングが309でキャンセルされ、その後、元の信号における7000〜8000Hzの範囲内の成分を除去するローパスフィルタ310によって高い帯域が前処理される。結果として生じる信号xhiは、離散変換されたスペクトルXhiを得るためにMDCT変換311に従う。帯域拡張312はxhiおよびXhiに基づいて処理する。
【0024】
図2を参照して既に説明したように、信号xloおよびxhiはN個のサンプルのフレームに分割され、長さL=2NのMDCT変換は現在および後のフレームを分析する。好ましい実施形態において、xloおよびxhiは8kHz、N=160(20ms)でサンプリングされた狭帯域の信号である。従って、MDCT変換XloおよびXhiはN=160個の係数を含み、そして、各係数は4000/160=25Hzの周波数帯域を表わす。好ましい実施形態において、MDCT変換はP. Duhamel、Y. Mahieux、J. P. Petit、“A fast algorithm for the implementation of filter banks based on ‘time domain aliasing cancellation’”、ICASSP、1991年、第3巻、p.2209-2212、に開示されたアルゴリズムによって実現される。
【0025】
低い帯域および高い帯域のMDCTスペクトルXloおよびXhiは変換符号化モジュール313内で符号化される。本発明は、より詳しくは、この符号化器に関する。
符号化モジュール305、312、313によって生成されるビットストリームは、マルチプレクサ314内で階層的なビットストリームに多重化および構造化される。符号化は、サンプル(フレーム)の20msのブロック、すなわち、320個のサンプルのブロックずつ処理される。符号化ビットレートは、8kbit/s、12kbit/s、2kbit/s間隔で14kbit/sから32kbit/sである。
【0026】
図5を参照してMDCT符号化器313を詳細に説明する。
低い帯域および高い帯域のMDCT変換は、まず、結合ブロック400内で結合される。従って、係数
Xlo = { Xlo(0) Xlo(1) … Xlo(N-1) }およびXhi = { Xhi(0) Xhi(1) … Xhi(N-1) }
は1つのベクトルにグループ化され、全帯域の離散変換されたスペクトル
X = { X(m) }m=0…L-1 = { Xlo(0) Xlo(1) … Xlo(N-1) Xhi(0) Xhi(1) … Xhi(N-1) }
を形成する。
XのMDCT係数X(0), … ,X(L-1)はK個のサブバンドにグループ化される。サブバンドへの分割はサブバンドの境界を定義するK+1個の要素のテーブル
tabis = { tabis(0) tabis(1) … tabis(K) }
によって表わすことができる。そして、第1のサブバンドは係数X(tabis(0))からX(tabis(1)-1)を含み、第2のサブバンドは係数X(tabis(1))からX(tabis(2)-1)を含む、等である。
好ましい実施形態においてK=18であり、これに関する分割は図7の表(a)に具体的に記載されている。
【0027】
サブバンドごとのエネルギー分布を表わす振幅log_rmsのスペクトル包絡線は401で計算され、インデックスrms_indexを得るためにスペクトル包絡線符号化器によって402で符号化される。403で各サブバンドにビットが割り当てられ、404でスペクトルXに球面ベクトル量子化が適用される。好ましい実施形態において、ビットの割り当ては、Y. Mahieux、J. P. Petit、“Transform coding of audio signals at 64 kbit/s”、IEEE GLOBECOM、1990年、第1巻、p.518-522において開示された方法に対応し、球面ベクトル量子化は国際出願PCT/FR04/00219において開示されたように処理される。
【0028】
スペクトル包絡線の符号化およびMDCT係数のベクトル量子化から結果として生じるビットはマルチプレクサ314によって処理される。
スペクトル包絡線の計算および符号化は以下でより詳細に説明する。
対数領域におけるスペクトル包絡線log_rmsはj番目のサブバンドについて次のように定義される。
【0029】
【数3】
【0030】
ここで、j = 0, … ,K-1であり、nb_coeff(j) = tabis(j+1) - tabis(j)はj番目のサブバンドにおける係数の数である。εの項はlog2(0)を防ぐ役割を果たす。スペクトル包絡線はj番目のサブバンドのdBにおけるrms値に対応し、従って、振幅の包絡線である。
好ましい実施形態において、サブバンドの大きさnb_coeff(j)は図7の表(b)において与えられる。さらに、ε= 2-24であり、これはlog_rms(j) ≧ -12を意味する。
【0031】
符号化器402によるスペクトル包絡線の符号化は図6に表わされている。
対数領域における包絡線log_rmsは、まず、均一量子化500によってrms_index = { rms_index(0) rms_index(1) … rms_index(K-1) }に丸められる。この量子化は、簡単に、
rms_index(j) = log_rms(j)×0.5に最も近い整数に丸められ、
rms_index(j) < -11ならばrms_index(j) = -11
rms_index(j) > +20ならばrms_index(j) = +20
によって与えられる。
そして、スペクトル包絡線は20×log10(20.5) = 3.0103 … dBの均一の対数の間隔で符号化される。結果として生じるベクトルrms_indexは-11から+20の整数インデックスを含む(すなわち、32個の値がありうる)。従って、スペクトル包絡線は約32×3.01 = 96.31 dBのダイナミックレンジで表現される。
そして、量子化された包絡線rms_indexは、ブロック501で2つの部分ベクトルに分割され、1つの部分ベクトルは低い帯域の包絡線についてのrms_index_bb = { rms_index(0) rms_index(1) … rms_index(K_BB - 1) }であり、他のベクトルは高い帯域の包絡線についてのrms_index_bh = { rms_index(K_BB) … rms_index(K - 1) }である。このましい実施形態においてK = 18、K_BB = 10であり、言い換えると、最初の10個のサブバンドは低い帯域(0〜4000Hz)に存在し、最後の8個のサブバンドは高い帯域(4000〜8000Hz)に存在する。
【0032】
低い帯域の包絡線rms_index_bbは、並列に動作する2つの符号化モジュール502、503、すなわち、可変長差分符号化モジュール502および固定長(“等確率”)符号化モジュール503によって2進数化される。好ましい実施形態において、モジュール502は差分ハフマン符号化モジュールであり、モジュール503は通常のバイナリ符号化モジュールである。
差分ハフマン符号化モジュール502は以下で詳細に説明する2つの符号化ステップを含む。
【0033】
<差分インデックスの計算>
差分量子化インデックスdiff_index(1) diff_index(2) … diff_index(K_BB - 1)は次によって与えられる。
satur_bb = 0
diff_index(j) = rms_index(j) - rms_index(j-1)
diff_index(j)<-12またはdiff_index(j)>+12ならばsatur_bb = 1
バイナリ指示子satur_bbはdiff_index(j)が[-12, +12]の範囲内にない場合を検出するために使用される。satur_bb = 0ならば、全ての要素はその範囲内に存在し、差分ハフマン符号化インデックスは十分である。そうでないならば、これらの要素の1つが-12より小さいか、または、+12より大きく、そのインデックスの範囲は不十分である。従って、指示子satur_bbは低い帯域において差分ハフマン符号化によるスペクトル包絡線の飽和を検出するために使用される。飽和が検出されると、符号化モードは固定長(等確率)符号化モードに変更される。実際、等確率モードのインデックスの範囲は常に十分である。
【0034】
<最初のインデックスのバイナリ変換および差分インデックスのハフマン符号化>
量子化インデックスrms_index(0)は-11から+20の整数値を有する。それは5ビットの固定長で2進数に直接に符号化される。そして、j = 1 … K_BB - 1についての差分量子化インデックスdiff_index(j)は、ハフマン符号化(可変長)によってバイナリ形式に変換される。使用されるハフマンテーブルは図8の表に具体的に表わされている。
rms_index(0)のバイナリ変換および量子化インデックスdiff_index(j)のハフマン符号化から生じる全ビット数bit_cnt1_bbは変動する。
好ましい実施形態において、ハフマン符号の最大の長さは14ビットであり、ハフマン符号化は低い帯域におけるK_BB-1 = 9個の差分インデックスに適用される。従って、bit_cnt1_bbの論理的な最大値は5 + 9×14 = 131ビットである。これは論理値にすぎないが、最悪ケースのシナリオにおいて低い帯域におけるスペクトル包絡線の符号化によって使用されるビット数はたいへん大きいことがあり、悪いケースのシナリオに限定することは正に等確率符号化の役割であることに留意すべきである。
【0035】
等確率符号化モジュール503は、要素rms_index(0) rms_index(1) … rms_index(K_BB - 1)を通常のバイナリ形式に直接に変換する。これらは-11から+20の範囲にわたり、従って、各々は5ビットで符号化される。従って、等確率符号化のために必要なビット数は単純にbit_cnt2_bb = 5×K_BBビットである。好ましい実施形態において、K_BB = 10、従って、bit_cont2_bb = 50ビットである。
【0036】
モードセレクタ504は、2つのモジュール502、503(差分ハフマン符号化または等確率符号化)のどちらがより少ないビット数を生成するかを選択する。差分ハフマンモードが差分インデックスを+/-12において飽和させるとき、差分量子化インデックスの計算において飽和が検出されるとすぐに等確率モードが選択される。この方法は、2つの隣接する帯域のrms値の間の差が12×3.01 = 36.12 dBを超えるとすぐにスペクトル包絡線の飽和を防止する。モード選択は次のように説明される。
satur_bb = 1またはbit_cnt2_bb<bit_cnt1_bbならば等確率モードが選択される。
そうでなければ、差分ハフマンモードが選択される。
モードセレクタ504は、差分ハフマンモードについて0、等確率モードについて1の規則を使用して、差分ハフマンまたは等確率モードのどちらが選択されたかを示すビットを生成する。このビットは、マルチプレクサ314内でスペクトル包絡線を符号化することによって生成される他のビットと多重化される。また、モードセレクタ504は、マルチプレクサ314内で選択された符号化モードのビットを多重化する双安定505を動作させる。
【0037】
高い帯域の包絡線rms_index_bhは、rms_index_bbと全く同様に、等確率符号化モジュール507による最初のインデックスlog_rms(0)の5ビットでの均一符号化および符号化モジュール506による差分インデックスのハフマン符号化が処理される。モジュール506内で使用されるハフマンテーブルは、モジュール502内で使用されるものと同一である。同様に、等確率符号化507は低い帯域における符号化503と同一である。モードセレクタ508は、どのモード(差分ハフマンモードまたは等確率モード)が選択されたかを示すビットを生成し、そのビットは、マルチプレクサ314内で双安定509からのビットと多重化される。高い帯域における等確率符号化のために必要なビット数はbit_cnt2_bh = (K - K_BB)×5、好ましい実施形態において、K - K_BB = 8従ってbit_cnt2_bh = 40ビットである。
【0038】
好ましい実施形態において、低い帯域の包絡線に関するビットの前に高い帯域の包絡線に関するビットが多重化されることに留意することが重要である。ここで、符号化されたスペクトル包絡線の一部のみが復号化器によって受信されるならば、高い帯域の包絡線は低い帯域の包絡線の前に復号化することができる。
【0039】
説明した符号化器に対応する階層的な可聴周波音復号化器が図9に表されている。各々の20msのフレームを定義するビットはデマルチプレクサ600内で逆多重化される。ここで、8kbit/sから32kbit/sにおける復号化が表わされている。実際、ビットストリームは8kbit/s、12kbit/s、14kbit/s、または、2kbit/s間隔で14kbit/sから32kbit/sに打ち切ることが可能である。
8および12kbit/sにおける階層のビットストリームは、最初の狭帯域(0〜4000Hz)の合成を生成するためにCELP復号化器601によって使用される。14kbit/sの階層に対応するビットストリームの部分は帯域拡張モジュール602によって復号化される。高い帯域(4000〜7000Hz)において得られた信号はMDCT変換603を適用することによって変換信号
【0040】
【数4】
【0041】
に変換される。MDCT復号化604は図10に表わされており、後に説明する。ビットレート14kbit/sから32kbit/sに対応するビットストリームから、低い帯域において再構成されたスペクトル
【0042】
【数5】
【0043】
が生成され、高い帯域において再構成されたスペクトル
【0044】
【数6】
【0045】
が生成される。これらのスペクトルは、ブロック605および606内で逆MDCT変換によって時間領域の信号
【0046】
【数7】
【0047】
および
【0048】
【数8】
【0049】
に変換される。信号
【0050】
【数9】
【0051】
は逆知覚フィルタリング607の後にCELP合成608に加算され、そして、その結果は609でポストフィルタリングされる。
16kHzでサンプリングされた広帯域の出力信号は、オーバーサンプリング610および612、ローパスおよびハイパスフィルタリング611および613、加算器614を含む合成QMFフィルタバンクによって得られる。
【0052】
以下、図10を参照してMDCT復号化器604を説明する。
このモジュールに関するビットは、デマルチプレクサ600内で逆多重化される。スペクトル包絡線は、まず、インデックスrms_indexおよび線形スケールで再構成されたスペクトル包絡線rms_qを得るために701で復号化される。復号化モジュール701は図11に表わされており、後に説明する。ビットエラーがなく、スペクトル包絡線を定義する全てのビットが正しく受信されると、インデックスrms_indexは符号化器で計算されたものと正確に対応し、符号化器と復号化器が互換性を有するようにビット702の割り当てが符号化器と復号化器で同一の情報を要求するので、この特性は必須である。正規化されたMDCT係数がブロック703で復号化される。
【0053】
エネルギーが少な過ぎるために、受信されなかった、または、符号化されなかったサブバンドは、置換モジュール704でスペクトル
【0054】
【数10】
【0055】
からのサブバンドによって置換される。最後に、モジュール705は、モジュール704の出力において適用される係数に、サブバンドごとの振幅の包絡線を適用し、再構成されたスペクトル
【0056】
【数11】
【0057】
は、706で、低い帯域(0〜4000Hz)において再構成されたスペクトル
【0058】
【数12】
【0059】
と高い帯域(4000〜7000Hz)において再構成されたスペクトル
【0060】
【数13】
【0061】
に分離される。
【0062】
図11は、スペクトル包絡線の復号化を表わす。スペクトル包絡線に関するビットはデマルチプレクサ600によって逆多重化される。
好ましい実施形態において、高い帯域のスペクトル包絡線に関するビットは、低い帯域のスペクトル包絡線に関するビットの前に送信される。従って、復号化は、モードセレクタ801において符号化器から受信したモード選択ビットの値(差分ハフマンモードまたは等確率モード)を読み取ることを開始する。セレクト801は符号化と同じ規則、すなわち、差分ハフマンモードについて0、等確率モードについて1に従う。このビットの値は双安定802および805を駆動する。
モード選択ビットが0ならば、可変長復号化モジュール803によって差分ハフマン復号化が処理される。5ビットで表現された-11から+20である絶対値rms_index(K_BB)がまず復号化され、続いて、j = K_BB ... K-1について差分量子化インデックスdiff_index(j)に関するハフマン符号が復号化される。そして、j = K_BB ... K-1について下記の式を用いて整数インデックスrms_index(j)が再構成される。
rms_index(j) = rms_index(j-1) + diff_index(j)
モード選択ビットが1ならば、固定長復号化モジュール804によってj = K_BB ... K-1について5ビットで表現された-11から+20のrms_index(j)の値が続いて復号化される。
モード0においてハフマン符号が発見されないか、または、受信したビット数が高い帯域を完全に復号化するために不十分であるならば、復号化処理はエラーが発生したことをMDCT復号化器に示す。
【0063】
低い帯域に関するビットは、高い帯域に関するビットと同様に復号化される。従って、この復号化部は、モードセレクタ806、双安定807、810、復号化モジュール808、809を含む。
高い帯域の再構成されたスペクトル包絡線は、j = K_BB ... K-1についての整数インデックスrms_index(j)を含む。低い帯域における再構成はj = 0 ... K_BB-1についての整数インデックスrms_index(j)を含む。これらのインデックスは結合ブロック811において単一のベクトルrms_index = { rms_index(0) rms_index(1) ... rms_index(K-1) }にグループ化される。ベクトルrms_indexは2を底とする対数スケールで再構成されたスペクトル包絡線を表わす。スペクトル包絡線は変換モジュール812によって線形スケールに変換され、j = 0, ... , K-1について次の演算が行われる。
rms_q(j) = 2rms_index(j)
【0064】
本発明はここで説明した実施形態に限定されないことは明らかである。特に、本発明によって符号化された包絡線は、サブフレームごとのrms値を定義するスペクトル包絡線ではなく、信号のサブフレームごとのrms値を定義する時間包絡線に対応しうることに留意すべきである。
さらに、差分ハフマン符号化と並列の固定長符号化ステップは、可変長符号化ステップ、例えば、差分インデックスをハフマン符号化する代わりに量子化インデックスをハフマン符号化することによって置換することができる。また、ハフマン符号化は、算術符号化、Tunstall符号化、等のような任意の他の損失のない符号化によって置き換えることができる。
【産業上の利用可能性】
【0065】
本発明は、可聴周波数の音声、音楽、等の信号のようなデジタル信号の伝送および記憶に、特に効果的な適用が見出される。本発明による符号化方法および符号化モジュールは可聴周波数信号の符号化を変換するために、特によく適合する。
【図面の簡単な説明】
【0066】
【図1】G.722.1勧告に適合した符号化器の図である。
【図2】MDCT型変換を表わす図である。
【図3】図1の符号化器についてのハフマン符号化での各サブバンドにおける符号ビットの最小の長さ(最小)および最大の長さ(最大)の表である。
【図4】本発明を実現するMDCT符号化器を含む階層的な可聴周波音符号化器の図である。
【図5】図4のMDCT符号化器の詳細な図である。
【図6】図5のMDCT符号化器のスペクトル包絡線符号化モジュールの図である。
【図7】MDCTスペクトルの18個のサブバンドへの分割を定義する表(a)、および、サブバンドの大きさを与える表(b)を含む。
【図8】差分インデックスを表現するためのハフマン符号化の一例の表である。
【図9】本発明を実現するMDCT復号化器を含む階層的な可聴周波音復号化器の図である。
【図10】図9のMDCT復号化器の詳細な図である。
【図11】図10のMDCT復号化器のスペクトル包絡線復号化モジュールの図である。
【符号の説明】
【0067】
300、310 ローパスフィルタ
301、303 デシメーション
302、304 ハイパスフィルタ
305 CELP符号化
306 減算器
307 フィルタ
308、311 MDCT変換
312 帯域拡張
313 MDCT符号化
314 マルチプレクサ
【特許請求の範囲】
【請求項1】
可変長の第1符号化モードを有する、信号の包絡線を定義する量子化インデックスをバイナリ符号化する方法であって、
前記第1符号化モードは包絡線の飽和検出を含み、
前記方法は、前記第1符号化モードと並列に実行される第2符号化モードを含み、符号長の基準および前記第1符号化モードにおける包絡線の飽和検出の結果の関数として前記2つの符号化モードのうち1つを選択するステップを含むことを特徴とする方法。
【請求項2】
次の条件、
前記第2符号化モードの符号長が前記第1符号化モードの符号長より短い、
前記第1符号化モードにおいて包絡線の飽和検出が飽和を示す、
のうち1つまたは複数が満たされるとき、前記第2符号化モードが選択されることを特徴とする請求項1に記載の方法。
【請求項3】
選択された符号化モードの指示子を生成するステップをさらに含むことを特徴とする請求項1または2に記載の方法。
【請求項4】
前記指示子は1つのビットであることを特徴とする請求項3に記載の方法。
【請求項5】
前記第2符号化モードは固定長の通常のバイナリ符号化であることを特徴とする請求項1から4のいずれか1項に記載の方法。
【請求項6】
前記可変長の第1符号化モードは可変長の差分符号化であることを特徴とする請求項1から5のいずれか1項に記載の方法。
【請求項7】
前記可変長の第1符号化モードは可変長の差分ハフマン符号化であることを特徴とする請求項1から6のいずれか1項に記載の方法。
【請求項8】
前記量子化インデックスは前記信号のサブバンドにおけるエネルギーを定義する周波数包絡線のスカラー量子化によって得られることを特徴とする請求項1から7のいずれか1項に記載の方法。
【請求項9】
前記量子化インデックスは前記信号のサブフレームにおけるエネルギーを定義する時間包絡線のスカラー量子化によって得られることを特徴とする請求項1から7のいずれか1項に記載の方法。
【請求項10】
最初のサブバンドまたはサブフレームは固定長符号化され、先行するサブバンドまたはサブフレームに対するサブバンドまたはサブフレームの差分エネルギーは可変長符号化されることを特徴とする請求項8または9に記載の方法。
【請求項11】
請求項2から10のいずれか1項に記載のバイナリ符号化する方法によって符号化された信号の包絡線を復号化する方法であって、
前記復号化する方法は、
前記選択された符号化モードの指示子を検出するステップと、
前記選択された符号化モードに従って復号化するステップと、
を含むことを特徴とする方法。
【請求項12】
可変長の第1モードで符号化するためのモジュール(502)を備える、信号の包絡線をバイナリ符号化するためのモジュール(402)であって、
前記第1モードで符号化するためのモジュールは包絡線の飽和検出器を含み、
前記符号化するためのモジュール(402)は、
前記第1モードで符号化するためのモジュール(502)と並列に第2モードで符号化するための第2モジュール(503)と、
符号長の基準および前記包絡線の飽和検出器からの結果の関数として前記2つの符号化モードのうち1つを保持するためのモードセレクタ(504)と、
を含むことを特徴とするモジュール。
【請求項13】
前記モードセレクタ(504)は選択された符号化モードの指示子を生成するように構成されることを特徴とする請求項12に記載のモジュール。
【請求項14】
信号の包絡線を復号化するためのモジュール(701)であって、
前記包絡線は請求項13に記載のバイナリ符号化するためのモジュールによって符号化され、
前記復号化するためのモジュールは可変長の第1モードで復号化するための復号化モジュール(808)を備え、
前記復号化するためのモジュール(701)は、
前記第1モードで復号化するための復号化モジュール(808)と並列に第2モードで復号化するための第2復号化モジュール(809)と、
前記符号化モードの指示子を検出し、前記検出された指示子に対応する復号化モジュール(808,809)を動作させるように構成されたモードセレクタ(806)と、
を含むことを特徴とするモジュール。
【請求項15】
可聴周波数信号の符号化を変換するための、請求項1から10のいずれか1項に記載の符号化する方法、および、請求項12または13に記載の符号化モジュールのアプリケーション。
【請求項16】
前記変換は変形離散コサイン変換(MDCT)であることを特徴とする請求項15に記載のアプリケーション。
【請求項17】
コンピュータで実行されるとき請求項1から10のいずれか1項に記載の方法のステップを実行するためのコンピュータ読み取り可能な媒体に記憶された命令を含むプログラム。
【請求項1】
可変長の第1符号化モードを有する、信号の包絡線を定義する量子化インデックスをバイナリ符号化する方法であって、
前記第1符号化モードは包絡線の飽和検出を含み、
前記方法は、前記第1符号化モードと並列に実行される第2符号化モードを含み、符号長の基準および前記第1符号化モードにおける包絡線の飽和検出の結果の関数として前記2つの符号化モードのうち1つを選択するステップを含むことを特徴とする方法。
【請求項2】
次の条件、
前記第2符号化モードの符号長が前記第1符号化モードの符号長より短い、
前記第1符号化モードにおいて包絡線の飽和検出が飽和を示す、
のうち1つまたは複数が満たされるとき、前記第2符号化モードが選択されることを特徴とする請求項1に記載の方法。
【請求項3】
選択された符号化モードの指示子を生成するステップをさらに含むことを特徴とする請求項1または2に記載の方法。
【請求項4】
前記指示子は1つのビットであることを特徴とする請求項3に記載の方法。
【請求項5】
前記第2符号化モードは固定長の通常のバイナリ符号化であることを特徴とする請求項1から4のいずれか1項に記載の方法。
【請求項6】
前記可変長の第1符号化モードは可変長の差分符号化であることを特徴とする請求項1から5のいずれか1項に記載の方法。
【請求項7】
前記可変長の第1符号化モードは可変長の差分ハフマン符号化であることを特徴とする請求項1から6のいずれか1項に記載の方法。
【請求項8】
前記量子化インデックスは前記信号のサブバンドにおけるエネルギーを定義する周波数包絡線のスカラー量子化によって得られることを特徴とする請求項1から7のいずれか1項に記載の方法。
【請求項9】
前記量子化インデックスは前記信号のサブフレームにおけるエネルギーを定義する時間包絡線のスカラー量子化によって得られることを特徴とする請求項1から7のいずれか1項に記載の方法。
【請求項10】
最初のサブバンドまたはサブフレームは固定長符号化され、先行するサブバンドまたはサブフレームに対するサブバンドまたはサブフレームの差分エネルギーは可変長符号化されることを特徴とする請求項8または9に記載の方法。
【請求項11】
請求項2から10のいずれか1項に記載のバイナリ符号化する方法によって符号化された信号の包絡線を復号化する方法であって、
前記復号化する方法は、
前記選択された符号化モードの指示子を検出するステップと、
前記選択された符号化モードに従って復号化するステップと、
を含むことを特徴とする方法。
【請求項12】
可変長の第1モードで符号化するためのモジュール(502)を備える、信号の包絡線をバイナリ符号化するためのモジュール(402)であって、
前記第1モードで符号化するためのモジュールは包絡線の飽和検出器を含み、
前記符号化するためのモジュール(402)は、
前記第1モードで符号化するためのモジュール(502)と並列に第2モードで符号化するための第2モジュール(503)と、
符号長の基準および前記包絡線の飽和検出器からの結果の関数として前記2つの符号化モードのうち1つを保持するためのモードセレクタ(504)と、
を含むことを特徴とするモジュール。
【請求項13】
前記モードセレクタ(504)は選択された符号化モードの指示子を生成するように構成されることを特徴とする請求項12に記載のモジュール。
【請求項14】
信号の包絡線を復号化するためのモジュール(701)であって、
前記包絡線は請求項13に記載のバイナリ符号化するためのモジュールによって符号化され、
前記復号化するためのモジュールは可変長の第1モードで復号化するための復号化モジュール(808)を備え、
前記復号化するためのモジュール(701)は、
前記第1モードで復号化するための復号化モジュール(808)と並列に第2モードで復号化するための第2復号化モジュール(809)と、
前記符号化モードの指示子を検出し、前記検出された指示子に対応する復号化モジュール(808,809)を動作させるように構成されたモードセレクタ(806)と、
を含むことを特徴とするモジュール。
【請求項15】
可聴周波数信号の符号化を変換するための、請求項1から10のいずれか1項に記載の符号化する方法、および、請求項12または13に記載の符号化モジュールのアプリケーション。
【請求項16】
前記変換は変形離散コサイン変換(MDCT)であることを特徴とする請求項15に記載のアプリケーション。
【請求項17】
コンピュータで実行されるとき請求項1から10のいずれか1項に記載の方法のステップを実行するためのコンピュータ読み取り可能な媒体に記憶された命令を含むプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公表番号】特表2009−527785(P2009−527785A)
【公表日】平成21年7月30日(2009.7.30)
【国際特許分類】
【出願番号】特願2008−555850(P2008−555850)
【出願日】平成19年2月13日(2007.2.13)
【国際出願番号】PCT/FR2007/050781
【国際公開番号】WO2007/096551
【国際公開日】平成19年8月30日(2007.8.30)
【出願人】(591034154)フランス テレコム (290)
【Fターム(参考)】
【公表日】平成21年7月30日(2009.7.30)
【国際特許分類】
【出願日】平成19年2月13日(2007.2.13)
【国際出願番号】PCT/FR2007/050781
【国際公開番号】WO2007/096551
【国際公開日】平成19年8月30日(2007.8.30)
【出願人】(591034154)フランス テレコム (290)
【Fターム(参考)】
[ Back to top ]