G.719 は ITU-T が勧告したフルバンドの高音質会話アプリケーション用の音声とオーディオ用の符号化方式で、20 Hz-20 kHz までのフルバンドの音声/オーディオ信号を 32 kbps から 128 kbps に符号化でき、処理に必要な演算量が低い特徴がある[1]。
G.719 の正式な名称はLow-complexity, full-band audio coding for high-quality, conversational applications(高品質会話型用途向け低演算量フルバンドオーディオ符号化)である。 G.719 は、テレビ会議やテレコンファレンスシステムで使われている G.722.1(帯域幅 7kHz)や G.722.1 Annex C(帯域幅 14kHz)のような音声符号化方式をさらに高音質化したものである。 この方式は G.722.1 のフルバンド拡張機能の仕様策定の際にポリコム社((Polycom Inc.)が提案した「Siren 22」方式とエリクソン社の提案方式とがベースになっており、最終的に両者の方式が統合され新しい勧告 G.719 となり ITU-T が 2008 年 6 月に勧告した[2]。 コーデックの入出力は 16ビット長、サンプリング周波数 48kHzで、人間の聴覚の可聴域と言われている 20 Hz-20 kHzのフルバンドの音声/オーディオ信号を符号化できる。 G.719 の符号化アルゴリズムは知覚符号化((perceptual audio coding)の一種である変換符号化(transeform coding)がベースである。MDCT(modified discrete cosine transform、修正離散コサイン変換)を使用し周波数領域の係数に変換し、適応ビット割り当てと格子ベクトル量子化(lattice vector quantization))を行う。また入力信号の内容に応じ離散コサイン変換の時間分解能を変化させ、変化の激しい音に対する音質向上を行っている。 G.719 の特徴を以下にまとめる。 インターネット上での RTP による G.719のペイロードの形式は .mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation.cs-ja1 q,.mw-parser-output .citation.cs-ja2 q{quotes:"「""」""『""』"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free a,.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/6/65/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited a,.mw-parser-output .id-lock-registration a,.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/d/d6/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription a,.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/a/aa/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/4/4c/Wikisource-logo.svg")right 0.1em center/12px no-repeat}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:#d33}.mw-parser-output .cs1-visible-error{color:#d33}.mw-parser-output .cs1-maint{display:none;color:#3a3;margin-left:0.3em}.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}RFC 5404
概要
高品質の音声/オーディオの両方をサポート
符号化/復号の演算量が低い(MP3が100MIPS以上、MPEG4 AAC-LDが130MIPS以上なのに対し、17.7MIPS程度[2])
入出力のサンプリング周波数 48 kHz/16 bit、帯域幅 20 Hz-20 kHz
32から128 kbpsまでの20種類のビットレートをサポート(32-88 kbpsは4 kbpsステップ、88 kbps-128 kbpsは8 kbpsステップ)
20 msのフレーム長、符号化遅延 40 ms
また、ISO ベースメディアファイルフォーマット (ISO/IEC 14496-14、いわゆる MPEG-4 Part 12)の形式が G.719 ANNEX A の仕様で定義されている。これは MP4(audio/mp4 あるいは video/mp4)や 3GP (audio/3GPP と video/3GPP) の各ファイル形式で使用することができる[1]。 G.719 では、MP3 や AAC などのオーディオ圧縮方式と同様、MDCT(修正離散コサイン変換)を用いた変換符号化により符号化と復号を行う。 符号化は、48kHz でサンプリングされた信号に対し、大まかに以下のステップで行われる[1][2]。 最初はMDCT(修正離散コサイン変換)により信号を周波数領域のパラメータに変換する。通常の処理の際のフレーム長は 20ms だが、信号の平均エネルギーが急変する部分(トランジェント部)を検出し、フレーム長を 5ms に変更し時間分解能を上げることで音質の劣化を避ける。トランジェント部以外では周波数分解能を優先し長いフレーム長を用いる。求めた係数は4つのバンド(0-3.2kHz、3.2-6.4kHz、6.4-13.6kHz、13.6-20kHz)に分割され、各バンド内のMDCT係数はさらに係数のグループであるサブベクトルに分割される。周波数が高くなるほど周波数分解能が低くなる人間の聴感特性に合わせ、周波数が高くなるほど1つのサブベクトルに含まれる係数は多くなる。つまり1つのサブベクトルでカバーする周波数範囲が高い周波数ほど広くなる。 次のスペクトル平準化では、最初にサブベクトルごとの平均エネルギーレベル(ノルム)を推定し量子化する。次にMDCT係数をノルムで割ることで、全体のスペクトル平準化を行う。サブベクトルのそれぞれの係数は信号の変動に伴い同じように変化する傾向があるため、スペクトル平準化により各係数はより狭い範囲に分布することになる。量子化と情報の圧縮が行いやすくなる。 続いて、サブベクトルごとにビット数の割り当てを行い、平準化を行った各MDCT係数の量子化と符号化を行う。ビット数の割り当ては前で計算したノルムをベースに適応的に行う。平均エネルギーレベルが高い(つまり聴感上重要な)サブベクトルには十分なビットを割り当て、そうでない部分はビット数を減らすかまったく割り当てないことで情報を圧縮する。 サブベクトルに含まれるMDCT係数の量子化の方法として、ベクトル量子化の一種である格子ベクトル量子化(lattice vector quantization))を用いる。格子ベクトル量子化は、ベクトル量子化でのコードブックを格子上の点に制限したもので、通常のベクトル量子化と比較すると量子化特性は劣るが量子化に必要な計算量とコードブックのために必要なメモリを大幅に削減でき、また単純なスカラー量子化と比べると量子化特性に優れている[2]。G.719 では高速格子ベクトル量子化(fast lattice vector quantization))と呼ばれるアルゴリズムを用い、処理に必要な演算量の低減を行っている。 最後の雑音レベル調整は背景雑音を適切なレベルに調整するためのものである。エネルギーレベルが低いサブベクトル(周波数領域)には符号化時にビットが割り当てられないため、そのような領域では背景雑音も符号化されない。デコーダ側ではビットが割り当てられない周波数領域での背景雑音を推定して再生するが、その際に必要な推定雑音レベルを粗く量子化する。 復号時は符号化時とは逆の処理が行われる。大まかに以下のステップで行われる[1][2]。 最初に格子ベクトル量子化された各係数を復号する。次に、符号化時にビットが割り当てられなかった領域は雑音レベルを推定し、低い周波数のスペクトル成分を符号化されなかった高い周波数側にコピーするなどし、背景雑音のレベル調整を行う。 各サブベクトルは正規化され同じエネルギーレベルに揃えられているため、続いて復号されたノルムとスペクトル係数とから実際のスペクトルエンベロープを復元する。 最後に復元された各MDCT係数を逆変換することで、48kHz でサンプリングされた時間領域の信号を得ることができる。 G.722.1などのコーデックと同様、以下のような用途に使うことができる。
アルゴリズム
周波数領域のパラメータに変換
信号のトランジェント検出
信号の修正離散コサイン変換(トランジェント部分は時間分解能を上げる)
スペクトル平準化
複数の周波数領域に分け、各領域の平均エネルギーレベル(ノルム)を推定、量子化
推定したノルムでスペクトルを平準化
格子ベクトル量子化と符号化
ノルムにもとづき適応ビット割り当て
高速格子ベクトル量子化
雑音レベル調整
格子復号
ノルム復号
スペクトル係数の復号
雑音レベル調整
推定雑音レベルを用い背景雑音を再生
スペクトルエンベロープシェーピング
ノルムとスペクトル係数から実際のMDCT係数を復元
時間領域の信号に逆変換
逆MDCTを行う
用途
広音質のIP電話ビデオ会議システム
音楽ストリーミング
ビデオ会議含む会議システム