编解码器横评
概述
本节将前面介绍的所有语音/音频编解码器放在一起做横向对比,帮助读者在实际项目中做出选择。
全景对比表
基本参数
编码器 |
年份 |
采样率 |
码率 (kbps) |
帧长 (ms) |
延迟 (ms) |
频率范围 |
编码类型 |
专利 |
|---|---|---|---|---|---|---|---|---|
G.711 |
1972 |
8 kHz |
64 |
无 |
0.125 |
300-3400 |
波形 (PCM) |
免费 |
G.722 |
1988 |
16 kHz |
48/56/64 |
无 |
1.5 |
50-7000 |
子带 ADPCM |
免费 |
G.729a |
1996 |
8 kHz |
8 |
10 |
15 |
300-3400 |
CELP |
过期 |
AMR-NB |
1999 |
8 kHz |
4.75-12.2 |
20 |
25 |
300-3400 |
ACELP |
有 |
AMR-WB |
2001 |
16 kHz |
6.6-23.85 |
20 |
25 |
50-7000 |
ACELP |
有 |
AAC-LC |
1997 |
8-96 kHz |
16-320 |
21 |
~46 |
全带宽 |
变换 |
有 |
AAC-ELD |
2008 |
8-48 kHz |
16-64 |
10 |
~15 |
全带宽 |
变换 |
有 |
Opus |
2012 |
8-48 kHz |
6-510 |
2.5-60 |
5-26.5 |
全带宽 |
混合 |
免费 |
EVS |
2014 |
8-48 kHz |
5.9-128 |
20 |
22-32 |
全带宽 |
混合 |
有 |
质量对比(MOS 评分)
以下 MOS 值来自 ITU-T 和 3GPP 的测试报告,仅供参考(测试条件不同,数值不完全可比):
窄带(8 kHz)
编码器 @ 码率 |
MOS |
说明 |
|---|---|---|
G.711 @ 64 kbps |
4.1 |
基准 |
G.729a @ 8 kbps |
3.7 |
1/8 码率,质量略降 |
AMR-NB @ 12.2 kbps |
4.0 |
最高码率模式 |
AMR-NB @ 4.75 kbps |
3.0 |
最低码率模式 |
Opus NB @ 8 kbps |
3.5-3.8 |
SILK 模式 |
Opus NB @ 16 kbps |
4.0 |
SILK 模式 |
宽带(16 kHz)
编码器 @ 码率 |
MOS-WB |
说明 |
|---|---|---|
G.722 @ 64 kbps |
4.1 |
宽带基准 |
AMR-WB @ 23.85 kbps |
4.1 |
最高码率 |
AMR-WB @ 12.65 kbps |
3.8 |
|
Opus WB @ 16 kbps |
4.0 |
SILK 模式 |
Opus WB @ 32 kbps |
4.5 |
SILK 模式 |
EVS WB @ 13.2 kbps |
4.2 |
混合模式 |
AAC-ELD @ 32 kbps |
4.2 |
变换编码 |
超宽带/全带宽
编码器 @ 码率 |
MOS-SWB |
说明 |
|---|---|---|
EVS SWB @ 24.4 kbps |
4.5 |
超宽带 |
Opus FB @ 64 kbps |
4.7 |
全带宽,CELT 模式 |
AAC-LC @ 128 kbps |
4.8 |
音乐场景 |
AAC-ELD @ 48 kbps |
4.4 |
低延迟 |
延迟对比
算法延迟是编码器引入的固有延迟(帧长 + 前瞻),不包括网络传输延迟:
G.711 ████ 0.125 ms
G.722 ████ 1.5 ms
Opus ████████████████████ 5 ms (最小帧)
G.729 ██████████████████████████████ 15 ms
AAC-ELD ██████████████████████████████ 15 ms
AAC-LD ████████████████████████████████████████ 20 ms
EVS ████████████████████████████████████████████ 22 ms (低延迟)
AMR-WB ██████████████████████████████████████████████████ 25 ms
Opus ██████████████████████████████████████████████████████ 26.5 ms (最大帧)
EVS ████████████████████████████████████████████████████████████████ 32 ms (默认)
AAC-LC ████████████████████████████████████████████████████████████████████████████████████████████ 46 ms
端到端延迟 = 算法延迟 × 2(编码 + 解码)+ 网络延迟 + Jitter Buffer 延迟
抗丢包能力
编码器 |
内置 FEC |
PLC |
说明 |
|---|---|---|---|
G.711 |
无 |
Appendix I |
基于基音外推,效果一般 |
G.722 |
无 |
无标准 |
依赖外部 PLC |
G.729 |
无 |
内置 |
基于 LP 参数外推 |
AMR |
依赖信道编码 |
内置 |
移动网络提供信道 FEC |
AAC-ELD |
无 |
无标准 |
依赖外部机制 |
Opus |
内置 in-band FEC |
内置 |
SILK 模式 FEC + CELT PLC |
EVS |
依赖信道编码 |
高级 PLC |
频域插值,效果优秀 |
Opus 的 in-band FEC 是其在互联网环境中的重要优势——在当前帧中嵌入前一帧的低码率冗余编码,接收端丢包时可用冗余数据恢复。
场景选择指南
flowchart TD
A[选择编解码器] --> B{应用场景?}
B -->|WebRTC 浏览器| C[Opus<br/>必选,全能型]
B -->|PSTN 互通| D[G.711<br/>兼容性第一]
B -->|VoIP 电话| E{带宽限制?}
E -->|充足| F[G.722 或 Opus<br/>宽带质量]
E -->|受限| G[G.729a<br/>8 kbps 低码率]
B -->|VoLTE/5G| H[EVS<br/>运营商标准]
B -->|直播推流| I[AAC-LC<br/>音乐质量]
B -->|Apple 生态| J[AAC-ELD 或 Opus<br/>低延迟]
B -->|嵌入式/IoT| K{CPU 限制?}
K -->|严格| L[G.711<br/>零复杂度]
K -->|一般| M[Opus<br/>可调复杂度]
决策矩阵
需求 |
G.711 |
G.722 |
G.729a |
AMR-WB |
Opus |
EVS |
|---|---|---|---|---|---|---|
低码率 |
✗ |
✗ |
★★★ |
★★ |
★★★ |
★★★ |
高音质 |
★ |
★★ |
★ |
★★ |
★★★ |
★★★ |
低延迟 |
★★★ |
★★★ |
★★ |
★★ |
★★ |
★★ |
抗丢包 |
★ |
★ |
★★ |
★★ |
★★★ |
★★★ |
兼容性 |
★★★ |
★★ |
★★ |
★★ |
★★★ |
★ |
免专利 |
★★★ |
★★★ |
★★★ |
✗ |
★★★ |
✗ |
音乐 |
✗ |
★ |
✗ |
★ |
★★★ |
★★★ |
一句话总结
G.711:50 年不倒的兼容性之王,PSTN 互通必备
G.722:宽带语音先驱,企业 VoIP 的老朋友
G.729:低码率语音的经典,VoIP 网关常客
AMR/AMR-WB:移动通信的基石,VoLTE 的前辈
AAC-ELD:音乐场景的低延迟选手,Apple 生态的宠儿
Opus:互联网实时通信的全能冠军,WebRTC 的唯一指定
EVS:运营商网络的新王,5G 语音的未来