G.719
G.719 では、MP3 や AAC などのオーディオ圧縮方式と同様、MDCT(修正離散コサイン変換)を用いた変換符号化により符号化と復号を行う。
符号化は、48kHz でサンプリングされた信号に対し、大まかに以下のステップで行われる。
周波数領域のパラメータに変換 信号のトランジェント検出 信号の修正離散コサイン変換(トランジェント部分は時間分解能を上げる)
スペクトル平準化 複数の周波数領域に分け、各領域の平均エネルギーレベル(ノルム)を推定、量子化 推定したノルムでスペクトルを平準化
格子ベクトル量子化と符号化 ノルムにもとづき適応ビット割り当て 高速格子ベクトル量子化
雑音レベル調整
最初はMDCT(修正離散コサイン変換)により信号を周波数領域のパラメータに変換する。 通常の処理の際のフレーム長は 20ms だが、信号の平均エネルギーが急変する部分(トランジェント部)を検出し、フレーム長を 5ms に変更し時間分解能を上げることで音質の劣化を避ける。トランジェント部以外では周波数分解能を優先し長いフレーム長を用いる。 求めた係数は4つのバンド(0-3.2kHz、3.2-6.4kHz、6.4-13.6kHz、13.6-20kHz)に分割され、各バンド内のMDCT係数はさらに係数のグループであるサブベクトルに分割される。周波数が高くなるほど周波数分解能が低くなる人間の聴感特性に合わせ、周波数が高くなるほど1つのサブベクトルに含まれる係数は多くなる。
719 では高速格子ベクトル量子化(fast lattice vector quantization))と呼ばれるアルゴリズムを用い、処理に必要な演算量の低減を行っている。
最後の雑音レベル調整は背景雑音を適切なレベルに調整するためのものである。エネルギーレベルが低いサブベクトル(周波数領域)には符号化時にビットが割り当てられないため、そのような領域では背景雑音も符号化されない。デコーダ側ではビットが割り当てられない周波数領域での背景雑音を推定して再生するが、その際に必要な推定雑音レベルを粗く量子化する。
復号時は符号化時とは逆の処理が行われる。大まかに以下のステップで行われる。
格子復号 ノルム復号 スペクトル係数の復号
雑音レベル調整 推定雑音レベルを用い背景雑音を再生
スペクトルエンベロープシェーピング ノルムとスペクトル係数から実際のMDCT係数を復元
時間領域の信号に逆変換 逆MDCTを行う
最初に格子ベクトル量子化された各係数を復号する。 次に、符号化時にビットが割り当てられなかった領域は雑音レベルを推定し、低い周波数のスペクトル成分を符号化されなかった高い周波数側にコピーするなどし、背景雑音のレベル調整を行う。
各サブベクトルは正規化され同じエネルギーレベルに揃えられているため、続いて復号されたノルムとスペクトル係数とから実際のスペクトルエンベロープを復元する。
最後に復元された各MDCT係数を逆変換することで、48kHz でサンプリングされた時間領域の信号を得ることができる。