G.718

G.718は ITU-T が勧告した広帯域の音声とオーディオ用のコーデックで、8 kbps～32 kbps の広範囲のビットレートをサポートし、フレーム消失に強い特徴がある。テレビ会議システムや VoIP 用に使うことができる。 G.718 の正式な名称は"Frame error robust narrow-band and wideband embedded variable bit-rate coding of speech and audio from 8-32 kbit/s" （フレームエラーに強い狭帯域と広帯域のエンベデッド可変ビットレート音声／オーディオ用 8-32 kbit/s 符号化方式）である。 G.718 は複数の音声符号化方式を階層的に組み合わせることでビットレートと帯域幅の柔軟性を向上させたものである。同様のアイデアを用いたものとして G.729.1 がある。 コアとなる音声符号化アルゴリズムとして CELP の一種の ACELP を使用する。 狭帯域版と広帯域版があり、入出力のサンプリング周波数は広帯域の場合 16 kHz、狭帯域の場合 8 kHz あるいは 16 kHz である。 コア部分の性能がよいため、G.718 広帯域コーデックの 8 kbps での音質は G.722.2 の 12.65 kbit/s の場合と等価で、G.718 狭帯域コーデックの8 kbps での音質は G.722.2 の 11.8 kbit/s の場合に等しい 。 G.718 がサポートする 8、12、16、24、32 kbps までの 5 種類のビットレートに対応して、コーデックが出力するビット列は 5 階層の埋め込み構造になっている。符号化したビット列から必要な階層のみを容易に取り出すことができる。 ビットレート 8 kbpsに対応するのがコア層となる第1層で、ACELP を符号化アルゴリズムとして用いる。第2層は 4 kbpsの ACELP 拡張層である。 第3層から第5層までは MDCT（修正離散コサイン変換）を用いた符号化アルゴリズムを用い、第2層までで符号化できなかった情報の符号化を行う。第3層には通信路でフレームが消失した場合の音質低下を避けるための補助情報も格納される。第3層は 4 kbps 、それ以上は 8 kbps 単位で情報が増えていき、それに応じて音質が向上する。 それぞれの階層と使用する技術を以下にまとめる。狭帯域版では第1層と第2層しか実装されない。 G.718 の特徴を以下にまとめる。 音声と音楽など一般的なオーディオ信号の両方をサポート 入出力のサンプリング周波数は広帯域の場合 16 kHz、狭帯域の場合 8 kHz あるいは 16 kHz 8～32 kbpsまでの 5 種類のビットレート （8、12、16、24、32 kbps） 5 階層の埋め込み構造ビットストリーム 8 kbpsのコア層は ACELP を使用 20 msのフレーム長、符号化遅延 42.875 ms（広帯域の場合）、43.875 ms（狭帯域の場合） 複数の音声符号化アルゴリズムの階層的組み合わせ また、G.718 には同様の目的に使われる ITU-T G.722.2（AMR-WB） との相互運用性のために、オプションとして G.722.2 (12.65 kbps) をサポートすることができる。その場合は第1層と第2層を G.722.2 mode 2 (12.65 kbps) と置き換える。 G.718 の符号化データを Real-time Transport Protocol（RTP）を用いインターネット上で送るためのデータ形式は、IETF RFC のドラフトが提案されている。 。 G.718 は、既存の広帯域音声符号化アルゴリズムをコアとする複数のアルゴリズムの階層的組み合わせからなる。 コアのアルゴリズムで入力信号の符号化を行い、符号化できなかった残差部分を他のアルゴリズムを使い付加情報として追加する。 コアとなる第1層は 3GPP2 で定義された第三世代携帯電話の広帯域音声符号化コーデック VMR-WB の仕様をベースにしたもので、音声符号化の代表的なアルゴリズムである ACELP（algebraic code excited linear prediction）を使う。コア部分はサンプリング周波数 16 kHz の入力信号を 12.8 kHz に再サンプリングし、符号化処理を行う。 第1層では 20 ms のフレームに対し以下の処理により符号化を行う。 12.8 kHz にリサンプリング、ハイパスフィルタによる直流成分除去などの前処理 スペクトル分析（音声区間検出と雑音抑制用） 入力が広帯域/狭帯域かを検出 スペクトル分析結果より音声区間検出（voice activity detection） スペクトル分析結果より雑音スペクトル推定 推定された雑音スペクトルを用いて雑音抑制 ACELPのための線形予測係数の計算など 聴感重み付けされた音声信号の計算 オープンループでのピッチ周波数（音声波形の基本となる周波数）分析 背景雑音スペクトルの推定値を更新 信号フレーム内容より処理モードを選択 これらの処理を行った後、、信号フレームの内容により以下の処理モードのいずれかの処理により符号化を行う。 unvoiced coding mode（無声符号化モード） 無声音の場合の処理 voiced coding mode（有声符号化モード） 周期的な繰り返しのある有声音の場合の処理 transition coding mode（遷移符号化モード） 有声音の開始時点の処理 discontinuous transmission and comfort noise generation (DTX/CNG)（非連続送信とコンフォートノイズ生成） 無音時の無音データ（silence insertion descriptor、SID）か NO_DATA フレームの生成、 まったくの無音を避けるため、デコーダ側での適切なレベルのバックグラウンドノイズ（コンフォートノイズ）生成 generic coding mode（ジェネリック符号化モード） 上記のいずれにも分類できない場合の処理 また、G.718 はIPネットワークのようなパケットロスやパケット遅延の多い環境での利用を想定しているため、これらによるフレーム消失時の音質低下を避けるための補助情報も同時に抽出する。これらの情報は第3層に格納され、必要に応じ復号時に使用される。 コアの機能拡張である第2層も ACELP を使用し 12.8 kHz でサンプリングされたフレームに対し符号化処理を行う。第1層での符号化モードやコードブックの値を使い第1層で符号化できなかった残差信号を計算し、それを ACELP のコードブックを使って符号化する。動作は第1層の符号化モードにより異なるが、基本的には以下を行う。 12.8 kHz でサンプリングされた 6.4kHz 以下の信号成分について、元の信号と第1層で符号化した信号との残差を符号化 AMR-WB のアルゴリズムを使用し 6.4kHz～7kHz の信号成分を生成 第3層以上の層は広帯域版でのみ使われ、サンプリング周波数は 16kHz である。 これらの層では、第2層までで符号化できなかった残差部分を MDCT を用いて周波数領域の係数に変換し、入力信号の性質と人間の聴感特性に合わせてそれらを符号化する。 一般に、音声と音楽ではその音の性質がかなり異なる。G.718 では、信号に音声成分が多いか音楽成分が多いかを判定し、第3層と第4層で使われる符号化方法を切り替える。 音声/音楽の判定には第2層以下で符号化できた信号と実際の入力信号との周波数領域での差を調べることで行う。第2層以下は音声符号化用のアルゴリズムを用いているため音楽などを含む信号はうまく符号化ができず、実際の入力信号より符号化後の信号のほうがエネルギーが大きくなる領域が多くなる。これを利用し符号化後のエネルギーが大きくなる領域のエネルギーの総和を求めることで判定を行う。 音声成分が多い場合、第3層と第3層では AVQ（algebraic vector quantization）と呼ばれる方法が使われる。 音楽成分が多い場合、第3層では BS-SGC（band-selective shape-gain vector quantization）が、第4層は FPC（factorial pulse coding）と呼ばれる方法が使われる。 第5層では常に FPC（factorial pulse coding）が使われる。それ以下の層で符号化できなかった周波数領域での残差を符号化する。 第3層以上で使われる MDCT 係数の符号化方式を以下の表にまとめる。