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 の場合に等しい [1]。
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]。狭帯域版では第1層と第2層しか実装されない。
階層 | 技術 | サンプリング周波数 | ビットレート | 説明 |
---|---|---|---|---|
1 | ACELP (algebraic CELP) | 12.8 kHz | 8 kbps | コア層 (VMR-WB 仕様がベース) |
2 | ACELP 拡張層 | 12.8 kHz | +4 kbps | コア層の追加部分 |
3 | MDCT | 12.8/16 kHz | +4 kbps | フレーム消失時用情報 + 付加情報 |
4-5 | MDCT | 16 kHz | +8 kbps単位 | 付加情報 |
G.718 の特徴を以下にまとめる。
また、G.718 には同様の目的に使われる ITU-T G.722.2(AMR-WB) との相互運用性のために、オプションとして G.722.2 (12.65 kbps) をサポートすることができる[1]。その場合は第1層と第2層を G.722.2 mode 2 (12.65 kbps) と置き換える。
G.718 の符号化データを Real-time Transport Protocol(RTP)を用いインターネット上で送るためのデータ形式は、IETF RFC のドラフトが提案されている。 [2]。
G.718 は、既存の広帯域音声符号化アルゴリズムをコアとする複数のアルゴリズムの階層的組み合わせからなる。 コアのアルゴリズムで入力信号の符号化を行い、符号化できなかった残差部分を他のアルゴリズムを使い付加情報として追加する。
コアとなる第1層は 3GPP2 で定義された第三世代携帯電話の広帯域音声符号化コーデック VMR-WB の仕様をベースにしたもので[1]、音声符号化の代表的なアルゴリズムである ACELP(algebraic code excited linear prediction)を使う。コア部分はサンプリング周波数 16 kHz の入力信号を 12.8 kHz に再サンプリングし、符号化処理を行う。
第1層では 20 ms のフレームに対し以下の処理により符号化を行う。
これらの処理を行った後、、信号フレームの内容により以下の処理モードのいずれかの処理により符号化を行う。
また、G.718 はIPネットワークのようなパケットロスやパケット遅延の多い環境での利用を想定しているため、これらによるフレーム消失時の音質低下を避けるための補助情報も同時に抽出する。これらの情報は第3層に格納され、必要に応じ復号時に使用される。
コアの機能拡張である第2層も ACELP を使用し 12.8 kHz でサンプリングされたフレームに対し符号化処理を行う。第1層での符号化モードやコードブックの値を使い第1層で符号化できなかった残差信号を計算し、それを ACELP のコードブックを使って符号化する。動作は第1層の符号化モードにより異なるが、基本的には以下を行う。
第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 係数の符号化方式を以下の表にまとめる。
階層 | 符号化方式 | 説明 |
---|---|---|
3 | AVG(algebraic vector quantization) | 音声(voice)成分が多い場合 |
BS-SGC(band-selective shape-gain vector quantization) | 音楽(music)成分が多い場合 | |
4 | AVG(algebraic vector quantization) | 音声(voice)成分が多い場合 |
FPC(factorial pulse coding) | 音楽(music)成分が多い場合 | |
5 | FPC(factorial pulse coding) |