【音视频开发】G.711 音频编码标准深度技术解析
G.711音频编码标准技术解析摘要 G.711是ITU-T于1972年制定的经典音频编码标准,采用脉冲编码调制(PCM)技术,通过非线性量化将13/14-bit线性PCM压缩为8-bit样本,实现64kbps恒定码率。其核心是利用人耳特性进行对数压缩:低幅度信号分配更多量化级数保证信噪比,高幅度信号减少量化级数节省比特。标准包含μ-law(北美)和A-law(欧洲)两种算法,分别采用不同的对数压缩
G.711 音频编码标准深度技术解析
1. 技术规范 (Technical Specifications)
1.1 概述
G.711 是国际电信联盟 (ITU-T) 于 1972 年制定的音频编码标准,主要用于数字电话系统。它采用 脉冲编码调制 (PCM) 技术,通过非线性量化将 13-bit 或 14-bit 的线性 PCM 样本压缩为 8-bit 样本,从而实现 64 kbps 的恒定码率。
1.2 核心原理:非线性压扩 (Companding)
人耳对低音量的分辨率高于高音量。G.711 利用这一特性,使用对数曲线进行压缩:
- 低幅度信号:分配更多的量化级数,保证高信噪比。
- 高幅度信号:分配较少的量化级数,节省比特位。

1.3 两种编码格式
G.711 定义了两种主要的压扩算法:μ-law (PCMU) 和 A-law (PCMA)。
μ-law (北美、日本)
数学公式:
F(x)=sgn(x)ln(1+μ∣x∣)ln(1+μ)−1≤x≤1 F(x) = \text{sgn}(x) \frac{\ln(1 + \mu |x|)}{\ln(1 + \mu)} \quad -1 \le x \le 1 F(x)=sgn(x)ln(1+μ)ln(1+μ∣x∣)−1≤x≤1
其中 μ=255\mu = 255μ=255。μ-law 提供稍大的动态范围。
A-law (欧洲、国际)
数学公式:
F(x)=sgn(x){A∣x∣1+ln(A)0≤∣x∣<1A1+ln(A∣x∣)1+ln(A)1A≤∣x∣≤1 F(x) = \text{sgn}(x) \begin{cases} \frac{A |x|}{1 + \ln(A)} & 0 \le |x| < \frac{1}{A} \\ \frac{1 + \ln(A |x|)}{1 + \ln(A)} & \frac{1}{A} \le |x| \le 1 \end{cases} F(x)=sgn(x){1+ln(A)A∣x∣1+ln(A)1+ln(A∣x∣)0≤∣x∣<A1A1≤∣x∣≤1
其中 A=87.6A = 87.6A=87.6。A-law 在小信号时的量化噪声更小,且易于计算机处理。
1.4 技术参数对比
| 参数 | 线性 PCM (CD质量) | G.711 (电话质量) |
|---|---|---|
| 采样率 | 44.1 kHz | 8 kHz |
| 量化位数 | 16-bit | 8-bit |
| 码率 | 1411.2 kbps (双声道) | 64 kbps (单声道) |
| 带宽 | 20 Hz - 22 kHz | 300 Hz - 3.4 kHz |
| 算法复杂度 | 无 (透传) | 极低 (查表或简单位运算) |
2. 实现细节 (Implementation Details)
2.1 编码算法流程
G.711 的核心是将 16-bit 线性 PCM 映射到 8-bit 非线性码字。

A-law 编码步骤 (位操作视角)
- 获取符号位: 取 PCM 符号位作为输出的 MSB。
- 取绝对值: 将负数转为正数 (A-law 需减去偏移量)。
- 确定段号 (Segment): 根据幅度大小,确定落在 0-7 哪个段。这对应于 3-bit 的指数部分。
- 量化 (Quantization): 截取段内的 4-bit 作为尾数。
- 异或掩码: 为了增加传输中的位翻转密度,结果需异或
0x55(01010101)。

2.2 代码实现示例 (C语言)
以下是 A-law 编码的简化实现(查表法在实际工程中更常用,但此处展示计算逻辑):
/* A-Law Encoding Logic */
uint8_t linear2alaw(int16_t pcm_val) {
int mask;
int seg;
uint8_t aval;
// 1. Sign processing
if (pcm_val >= 0) {
mask = 0xD5;
} else {
mask = 0x55;
pcm_val = -pcm_val - 8;
}
// 2. Determine segment (Exponent)
if (pcm_val < 256) seg = 0;
else if (pcm_val < 512) seg = 1;
// ... (omitted for brevity) ...
else seg = 7;
// 3. Quantization (Mantissa)
if (seg >= 1) {
aval = (seg << 4) | ((pcm_val >> (seg + 3)) & 0x0F);
} else {
aval = (pcm_val >> 4) & 0x0F;
}
// 4. XOR Mask
return (aval ^ mask);
}
2.3 性能测试数据
- 压缩比: 2:1 (相对于 16-bit PCM)。
- MOS (Mean Opinion Score): 4.1 - 4.3 (满分 5.0)。这是衡量语音质量的黄金标准,G.711 被定义为"长途电话质量"。
- CPU 开销: 几乎可以忽略不计 (< 1 MIPS)。
3. 应用场景 (Applications)
3.1 VoIP 系统中的位置
在 VoIP 架构中,G.711 通常作为基准编解码器。所有 SIP 终端和网关几乎都强制支持 G.711,以确保互通性。

3.2 编解码器对比雷达图
与其他现代编解码器 (如 Opus, G.729) 相比,G.711 胜在低延迟和兼容性,但在带宽效率上较差。

| 编解码器 | 带宽 | 复杂度 | 质量 | 典型应用 |
|---|---|---|---|---|
| G.711 | 高 (64k) | 极低 | 优 | 局域网 VoIP, PSTN 网关 |
| G.729 | 低 (8k) | 高 | 良 | 广域网 VoIP, 卫星通信 |
| Opus | 动态 (6-510k) | 中 | 极优 | WebRTC, 互联网通信 |
3.3 设备支持统计
| 设备类型 | 支持情况 | 备注 |
|---|---|---|
| IP 话机 | 100% | 强制标准 |
| 软电话 (Softphone) | 100% | 基础配置 |
| WebRTC (浏览器) | 100% | 作为 PCMA/PCMU 支持 |
| PSTN 交换机 | 100% | 原生格式 |
4. 参考文献
- ITU-T Recommendation G.711 (11/1988) - Pulse code modulation (PCM) of voice frequencies.
- RTP Profile for Audio and Video Conferences with Minimal Control (RFC 3551).
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)