G.729
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は、音声の波形そのものを送る波形符号化ではなく、人の発声の仕組みをモデル化したハイブリッド符号化(分析合成型)の方式である。
- 音声を10ミリ秒の単位(フレーム)に区切る
- 声道(のどや口の形)の特性を、線形予測(LPC)で求めたフィルタの係数として表す
- フィルタに入力する音源(声帯の振動や息の音)を、あらかじめ決めた符号帳(コードブック)から最も近いものを選び、その番号で表す
- フィルタ係数と符号帳の番号だけを送る
受信側は、受け取った番号から音源を取り出してフィルタに通し、音声を合成する。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.711 | G.729 | |
|---|---|---|
| 方式 | PCM(波形符号化) | CS-ACELP(ハイブリッド符号化) |
| 符号化速度 | 64kビット/秒 | 8kビット/秒 |
| 音質 | 高い(固定電話並み) | やや劣る |
| 遅延 | 小さい | 大きい(フレームの分析と先読みが必要) |
| 処理の負荷 | 小さい | 大きい |
G.729は帯域を大きく節約できる反面、符号化の処理で遅延が増え、音質もG.711より劣る。また、圧縮の過程で音声以外の信号(FAXやモデムの信号、DTMFのトーン)は正しく伝えられないため、それらは別の方法で送る必要がある。
バリエーション
| 名前 | 特徴 |
|---|---|
| G.729A(Annex A) | 計算量を減らした簡易版。G.729と相互に通信できる |
| G.729B(Annex B) | 無音を検出して送信を止めるVAD(音声区間検出)と、受信側で自然な背景雑音を作るCNG(コンフォートノイズ生成)を加えたもの |
会話では、片方が話している間、もう片方はほぼ無音である。無音のときに送らないことで、平均の帯域をさらに減らせる。