G.729

読み:じーななにきゅう / 英語表記:G.729 (CS-ACELP)

ITU-Tが定めた音声符号化方式の1つ。CS-ACELPという方式で音声を高い圧縮率で符号化し、8kビット/秒で伝送する。

イマシルちゃんの解説

電話の声をそのままデジタルにすると、1秒あたり64kビットにもなるんだ。
G.729は、それを何分の1にもギュッと小さくしちゃう、圧縮名人なんだよ!

秘密は「人の声の出し方」をまねすること。
声そのものを送る代わりに、「のどや口がこういう形で、こんな音を出してるよ」っていう設計図だけを送って、
受け取った側で声を組み立て直すんだ。

より深い解説

定義

G.729は、ITU-T勧告で定められた音声符号化方式(コーデック)で、符号化アルゴリズムとしてCS-ACELP(Conjugate Structure Algebraic Code Excited Linear Prediction:共役構造代数符号励振線形予測)を用いる。電話帯域(300~3,400Hz)の音声を、8kビット/秒に圧縮する。

仕組み:音声の「設計図」を送る

G.729は、音声の波形そのものを送る波形符号化ではなく、人の発声の仕組みをモデル化したハイブリッド符号化(分析合成型)の方式である。

  1. 音声を10ミリ秒の単位(フレーム)に区切る
  2. 声道(のどや口の形)の特性を、線形予測(LPC)で求めたフィルタの係数として表す
  3. フィルタに入力する音源(声帯の振動や息の音)を、あらかじめ決めた符号帳(コードブック)から最も近いものを選び、その番号で表す
  4. フィルタ係数と符号帳の番号だけを送る

受信側は、受け取った番号から音源を取り出してフィルタに通し、音声を合成する。1フレーム(10ミリ秒)は80ビット(10バイト)で表される。

パケットに入る音声データの量

G.729は8kビット/秒なので、パケット化周期ごとのペイロードは次のようになる。

パケット化周期計算ペイロード
10ミリ秒8,000 × 0.01 = 80ビット10バイト
20ミリ秒8,000 × 0.02 = 160ビット20バイト
30ミリ秒8,000 × 0.03 = 240ビット30バイト

20ミリ秒のパケットには、10ミリ秒のフレームが2つ入る。

G.711との比較

G.711G.729
方式PCM(波形符号化)CS-ACELP(ハイブリッド符号化)
符号化速度64kビット/秒8kビット/秒
音質高い(固定電話並み)やや劣る
遅延小さい大きい(フレームの分析と先読みが必要)
処理の負荷小さい大きい

G.729は帯域を大きく節約できる反面、符号化の処理で遅延が増え、音質もG.711より劣る。また、圧縮の過程で音声以外の信号(FAXやモデムの信号、DTMFのトーン)は正しく伝えられないため、それらは別の方法で送る必要がある。

バリエーション

名前特徴
G.729A(Annex A)計算量を減らした簡易版。G.729と相互に通信できる
G.729B(Annex B)無音を検出して送信を止めるVAD(音声区間検出)と、受信側で自然な背景雑音を作るCNG(コンフォートノイズ生成)を加えたもの

会話では、片方が話している間、もう片方はほぼ無音である。無音のときに送らないことで、平均の帯域をさらに減らせる。

実際の試験ではここに出る!

この用語が出てくる記事

↑