G.722 — 宽带语音先驱
概述
G.722 是 ITU-T 于 1988 年发布的宽带语音编码标准,采样率 16 kHz,频率范围覆盖 50-7000 Hz,相比 G.711 的 300-3400 Hz 有了质的飞跃。它是第一个被广泛部署的宽带语音编码器,至今仍在 VoIP 电话和视频会议系统中大量使用。
属性 |
值 |
|---|---|
标准 |
ITU-T G.722 (1988) |
采样率 |
16 kHz |
码率 |
48 / 56 / 64 kbps(三种模式) |
帧长 |
无固定帧长(逐样本) |
算法延迟 |
1.5 ms |
频率范围 |
50 - 7000 Hz |
MOS |
~4.1(宽带) |
专利 |
已过期(免费使用) |
子带编码原理
G.722 采用 **子带自适应差分脉冲编码调制**(SB-ADPCM):
flowchart TD
A[输入 PCM<br/>16 kHz, 14 bit] --> B[QMF 分析滤波器]
B --> C[低频子带<br/>0-4 kHz]
B --> D[高频子带<br/>4-8 kHz]
C --> E[ADPCM 编码<br/>6/5/4 bit]
D --> F[ADPCM 编码<br/>2 bit]
E --> G[比特复用]
F --> G
G --> H[输出比特流<br/>64 kbps]
QMF 滤波器:正交镜像滤波器将 16 kHz 信号分为两个 8 kHz 子带
低频子带:承载主要语音信息,分配更多比特(6/5/4 bit)
高频子带:承载高频细节,固定 2 bit
ADPCM:自适应差分编码,只编码预测残差
三种码率模式
模式 |
总码率 |
低频 |
高频 |
说明 |
|---|---|---|---|---|
Mode 1 |
64 kbps |
48 kbps (6 bit) |
16 kbps (2 bit) |
最高质量 |
Mode 2 |
56 kbps |
40 kbps (5 bit) |
16 kbps (2 bit) |
可嵌入 8 kbps 数据 |
Mode 3 |
48 kbps |
32 kbps (4 bit) |
16 kbps (2 bit) |
可嵌入 16 kbps 数据 |
Mode 2 和 Mode 3 释放的比特可用于传输辅助数据(如加密密钥、信令),这在 ISDN 时代很有用。
ADPCM 编码细节
ADPCM(Adaptive Differential PCM)的核心思想:
差分:不编码原始样本,而是编码当前样本与预测值的差(残差)
自适应:量化步长根据信号特性动态调整
编码器:
残差 = 当前样本 - 预测值
量化索引 = quantize(残差, 步长)
重建残差 = dequantize(量化索引, 步长)
更新预测器:预测值 += 重建残差
更新步长:步长 = adapt(步长, 量化索引)
输出量化索引
解码器(与编码器的重建路径完全相同):
重建残差 = dequantize(量化索引, 步长)
输出样本 = 预测值 + 重建残差
更新预测器和步长
低频子带使用 2 阶自适应预测器,高频子带使用 1 阶。
RTP 打包
G.722 的 RTP 打包有一个历史遗留的"坑":
a=rtpmap:9 G722/8000
注意 时钟频率写的是 8000,而不是实际的 16000。这是 RFC 3551 中的一个已知错误——当年制定标准时搞混了采样率和时钟率。所有实现都必须遵循这个"错误"以保持兼容。
实际行为:
RTP 时钟率:8000 Hz(SDP 中声明的)
实际采样率:16000 Hz
20ms 帧 = 320 samples @ 16kHz = 160 bytes payload
Timestamp 增量 = 160(按 8000 Hz 时钟)
G.722 vs G.711 vs Opus
特性 |
G.711 |
G.722 |
Opus (WB) |
Opus (FB) |
|---|---|---|---|---|
采样率 |
8 kHz |
16 kHz |
16 kHz |
48 kHz |
频率范围 |
300-3400 Hz |
50-7000 Hz |
50-8000 Hz |
20-20000 Hz |
码率 |
64 kbps |
64 kbps |
16-32 kbps |
32-128 kbps |
MOS |
4.1 |
4.1 |
4.3-4.5 |
4.5-4.7 |
算法延迟 |
0.125 ms |
1.5 ms |
5-26.5 ms |
5-26.5 ms |
FEC |
无 |
无 |
内置 |
内置 |
自适应码率 |
无 |
3 档 |
连续可调 |
连续可调 |
G.722 在**相同码率**下比 G.711 质量明显更好(宽带 vs 窄带),但在**相同质量**下 Opus 的码率更低。
在 WebRTC 中的使用
WebRTC 浏览器通常支持 G.722,SDP 中的 payload type 固定为 9:
a=rtpmap:9 G722/8000
主要使用场景:
SIP 电话互通:许多 IP 电话默认使用 G.722
视频会议系统:Polycom、Cisco 等传统设备广泛支持
低延迟需求:算法延迟仅 1.5ms,远低于 Opus 的 5-26.5ms
G.722.1 和 G.722.2
G.722 有两个"后代",但它们的编码原理完全不同:
**G.722.1**(Siren7/14):基于 MLT 变换,24/32 kbps,Polycom 推动
G.722.2:即 AMR-WB,3GPP 标准,移动宽带语音
小结
G.722 是宽带语音的开拓者,用子带 ADPCM 的简洁方案实现了 16 kHz 宽带语音。虽然在码率效率上已被 Opus 超越,但它的低延迟、广泛兼容性和零专利费用,使其在企业 VoIP 和视频会议领域仍有一席之地。
理解 G.722 的子带编码和 ADPCM 原理,对理解更现代的编码器(如 Opus 的 SILK 模式)很有帮助。