语音编解码总览

概述

语音编解码器(Voice Codec)是实时通信系统的核心组件,负责将模拟语音信号压缩为数字比特流进行传输,并在接收端还原。编解码器的选择直接影响通话质量、延迟和带宽消耗。

从 PCM 到压缩编码

语音信号的数字化遵循经典的 采样→量化→编码 流程:

        flowchart LR
  A[模拟语音] --> B[采样<br/>8/16/48 kHz]
  B --> C[量化<br/>8/16/24 bit]
  C --> D[PCM 原始数据]
  D --> E[编码器<br/>Codec]
  E --> F[压缩比特流]
  F --> G[RTP 打包传输]
  G --> H[解码器]
  H --> I[PCM]
  I --> J[D/A 播放]
    

以 16kHz/16bit 单声道为例:

  • PCM 码率 = 16000 × 16 = 256 kbps

  • Opus 编码后 ≈ 20-32 kbps,压缩比约 8-12 倍

编解码器分类

按编码原理

类型

原理

代表

特点

波形编码

直接对波形采样值编码

G.711 (PCM)

质量高、码率高、延迟低

参数编码(声码器)

提取语音参数(基频、共振峰)

LPC-10, MELP

码率极低(2-4 kbps)、质量差

混合编码

波形 + 参数结合

G.729 (CS-ACELP), AMR

中等码率、质量好

变换编码

频域变换后编码

AAC, Opus (CELT 部分)

适合音乐、宽带信号

按应用场景

场景

典型编码

码率

采样率

说明

PSTN 电话

G.711

64 kbps

8 kHz

兼容性最好

VoIP

G.729, G.722

8-64 kbps

8-16 kHz

节省带宽

移动通信

AMR, AMR-WB, EVS

4.75-128 kbps

8-48 kHz

自适应码率

WebRTC

Opus

6-510 kbps

8-48 kHz

全能型,强制支持

流媒体/音乐

AAC, AAC-ELD

16-320 kbps

8-96 kHz

音乐质量优先

编码流程详解

典型的语音编码器内部流程:

        flowchart TD
  A[输入 PCM 帧<br/>20ms / 320 samples @ 16kHz] --> B[预处理]
  B --> B1[高通滤波<br/>去除直流偏移]
  B1 --> B2[预加重<br/>提升高频]
  B2 --> C[分析]
  C --> C1[LPC 分析<br/>线性预测系数]
  C1 --> C2[基音检测<br/>开闭环搜索]
  C2 --> C3[子帧分析]
  C3 --> D[量化]
  D --> D1[LSP/LSF 量化<br/>频谱包络]
  D1 --> D2[自适应码本<br/>基音延迟+增益]
  D2 --> D3[固定码本<br/>激励信号]
  D3 --> E[比特打包]
  E --> F[输出比特流]
    

关键参数

参数

含义

影响

采样率

每秒采样次数(Hz)

决定频率上限(奈奎斯特定理:上限 = 采样率/2)

帧长

每帧时长(ms)

影响算法延迟;语音编码通常 10-60ms

码率

编码后比特率(kbps)

码率越高质量越好,带宽消耗越大

算法延迟

编码器引入的固有延迟

帧长 + 前瞻(lookahead)

复杂度

计算量(MIPS/WMOPS)

影响 CPU 占用和功耗

WebRTC 中的编解码器

WebRTC 规范(RFC 7874)对音频编解码器的要求:

  • 必须支持:Opus(RFC 6716)

  • 应该支持:G.711(PCMA/PCMU)

  • 可选支持:G.722, iLBC 等

SDP 协商示例

m=audio 9 UDP/TLS/RTP/SAVPF 111 63 9 0 8 13 110 126
a=rtpmap:111 opus/48000/2
a=rtpmap:63 red/48000/2
a=rtpmap:9 G722/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=fmtp:111 minptime=10;useinbandfec=1

编解码器优先级由 SDP 中 payload type 的排列顺序决定,Opus 通常排在第一位。

质量评估

语音质量的客观评估指标:

指标

含义

范围

说明

MOS

Mean Opinion Score,主观评分

1.0 - 5.0

5=优秀,4=好,3=尚可

PESQ

ITU-T P.862,窄带/宽带

-0.5 - 4.5

需要参考信号

POLQA

ITU-T P.863,超宽带

1.0 - 5.0

PESQ 的继任者

ViSQOL

Google 开源,基于频谱相似度

1.0 - 5.0

支持语音和音频

各编解码器在理想条件下的 MOS 参考值:

编解码器

码率 (kbps)

MOS

带宽

G.711

64

4.1

窄带

G.729

8

3.9

窄带

G.722

64

4.1

宽带

AMR-WB

23.85

4.1

宽带

Opus (NB)

16

4.0

窄带

Opus (WB)

32

4.5

宽带

Opus (FB)

64

4.7

全带宽

EVS (SWB)

24.4

4.5

超宽带

小结

选择编解码器时需要权衡以下因素:

  1. 质量 vs 码率:Opus 在各码率段都表现优异

  2. 延迟:实时通信要求算法延迟 < 40ms

  3. 兼容性:与 PSTN 互通需要 G.711;移动网络需要 AMR/EVS

  4. 专利:Opus 免专利费;H.264/AAC/AMR/EVS 有专利费用

  5. 复杂度:嵌入式设备需要考虑 CPU 和功耗

后续章节将逐一深入讲解各编解码器的原理和实现。