<!-- title: 不传波形传口音：语音编码原理 -->

# 不传波形传口音：语音编码原理

一通高清语音电话，你的声音在空口上通常只占 12.2kbps，信道差的时候压到 4.75kbps——不到固定电话 64kbps 的十三分之一。压缩了十几倍，电话那头为什么还是能听出你是谁、甚至能听出你的情绪？

因为蜂窝网络上传的从来就不是你的声音本身，而是一份**「发声器官说明书」**。这是语音编码（声码器）技术最核心的设计哲学，也是它和所有其他音频压缩最本质的区别。这篇文章把这套哲学拆开：从 64kbps 的奢侈说起，看「源-滤波器模型」如何把声道装进十个数字，再看码本、感知加权和多档变速如何一步步把码率打到几 kbps。

## 一、先看最笨也最贵的办法：PCM

固定电话网的做法叫脉冲编码调制（PCM），也就是 ITU-T 的 G.711 标准，思路是“照波形抄”：

电话线只传 300~3400Hz 的人声频段，按采样定理取 8000 次/秒；每次测量用 8 个比特记录音量高低，得到：

$$64\,000\ \text{bit/s} = 8000\ \text{次/秒} \times 8\ \text{bit}$$

这就是 64kbps。对光纤和交换机来说这点钱不算什么，但无线空口上一比特的代价高得多：频谱是拍卖来的，功率是电池里的，一个 GSM 全速时隙全部物理资源摊开来也就二十多 kbps 的承载能力。如果照抄波形，一条语音就吃掉整个时隙还倒欠。

所以问题变成了：**人声里到底哪些信息是必须传的？**回答这个问题之前，得先回答另一个更根本的问题——人声和普通声音有什么不一样。

## 二、换思路：人声不是随机波，是乐器的输出

敲键盘的咔嗒声、风声、玻璃碎裂声，波形杂乱无章，想精确还原只能老老实实记录每个采样点。但人声不同——它是一件“乐器”的输出，结构高度规律。

发音生理学早就给出了模型：肺提供气流，气流经过两种激励之一——发元音时声带周期性振动，产生一串串脉冲（这就是你声音的“音高”）；发清音时气流摩擦通过缝隙，产生类似白噪声的沙沙声。然后这股激励进入声道——喉腔、咽腔、口腔、舌位、嘴唇构成的管道——管道的形状不同，对不同频率的放大衰减就不同，最后从嘴唇辐射出来的波形就完全两样。

```mermaid
flowchart TD
    A["肺：提供气流动力"] --> B["激励源二选一"]
    B -->|浊音：元音| C["周期性脉冲串"]
    B -->|清音：嘶嘶声| D["随机白噪声"]
    C --> E["声道：时变滤波器"]
    D --> E
    E --> F["唇齿辐射<br/>得到语音波形"]
```

这就是语音处理领域用了大半个世纪的**源-滤波器模型**。它带来一个值钱的推论：

> 波形千变万化，但决定波形的只有两样东西——激励源的性质（周期还是噪声、音高多少）和声道滤波器的形状。

而“你是谁、口音是什么”，几乎全部写在**声道形状**里。波形每秒 8000 个采样点是结果，声道参数才是原因。传原因，比传结果便宜得多。

## 三、线性预测：十个数装下你的声道

怎么把“声道形状”提炼成数字？答案是线性预测编码（LPC）。

语音有一个统计特性：**当前样本很大程度上能由前面若干样本的加权之和预测出来**。因为声道是个有惯性的声学谐振腔，它对激励的响应是平滑连续的，相邻样本之间强相关。用公式写出来，第 $n$ 个样本的预测值是：

$$\hat{s}(n)=\sum_{k=1}^{p}a_k\, s(n-k)$$

其中 $p$ 一般取 8~10，权重 $a_1 \dots a_p$ 就是**线性预测系数**。数学上可以证明：这组系数恰好刻画了声道滤波器的频响——舌位、开口度这些生理特征，全被编码在几个数里。

于是编码策略反转了：不传样本 $s(n)$ 本身，而是传两部分——

1. **预测系数**：每 20 毫秒一帧，估计一次“此刻的声道形状”；
2. **残差** $e(n)=s(n)-\hat{s}(n)$：预测不中的部分，也就是真正的激励信息。

原始波形里 90% 以上的能量都被“预测”这条捷径消化掉了，剩下的残差能量很小。这就是为什么语音能被压缩一个数量级——**剩下的不是没用的信息，恰恰是最有个性、最不可预测的激励本身**。

## 四、CELP：菜单一人一本，传编号就行

残差虽然小，但逐个采样点地传它还是不够省。CELP（码激励线性预测）又砍了第三刀：**残差也不传，只传“编号”**。

做法是预先设计一本“码本”——一部收录了成千上万条典型激励波形的字典，**编码端和解码端各存一份一模一样的**。编码时，编码器不再计算怎么描述残差，而是在字典里翻找：哪一条激励波形，通过声道滤波器之后能合成出与原帧最像的声音？找到后，只把这条波形的**索引**和幅度**增益**发出去，解码端照索引取货即可。

```mermaid
flowchart TD
    A["输入20ms语音帧"] --> B["LPC分析<br/>提取声道参数"]
    D["码本：收发双方共有的<br/>激励波形字典"] --> E["解码器试放<br/>候选激励过滤波器"]
    B --> E
    E --> F["与原帧对比<br/>挑听感误差最小的索引"]
    F --> G["只发三样：声道参数<br/>索引+增益"]
```

这里有一个工程上非常聪明的安排，叫**合成分析法**：编码器内部装了一个“迷你解码器”，每个候选索引都真的合成一遍、和原帧比一遍，用听感误差当裁判——相当于发件人在寄出前，先照着收件人的说明书把货组装检查了一遍。

裁判怎么判？直接比波形误差是错的，因为**人耳对失真的容忍度极不均匀**：一个响亮音调附近的小毛刺，耳朵根本听不见（听觉掩蔽效应）。所以搜索码字时，误差先过一个“感知加权滤波器”，故意把失真推到人耳不敏感的频段去——**宁可在听不见的地方失真，也不在听得见的地方差之毫厘**。语音压缩算法省下来的比特，一大半是这样从“耳朵的盲区”里抠出来的。

## 五、AMR：八档变速，边打电话边换挡

有了 LPC + 码本这套骨架，剩下的问题是：固定用多高档？2G 到 3G 时代给出的答案是自适应多码率编码（AMR）——干脆不做单一码率，一套算法内置八个档位，随时切换：

| 档位（kbps） | 定位 |
|---|---|
| 12.2 | 沿用 GSM 增强全速语音的算法，音质标杆，兼容 2G |
| 10.2 | 通用高档位 |
| 7.95 / 7.40 / 6.70 | 中档；其中 7.40 与 6.70 分别沿用了美国与日本旧制式的高质量编码，为了跨网互通 |
| 5.90 / 5.15 / 4.75 | 保命档：信道恶劣时保住“听得清”，放弃“好听” |

这张表里藏着 AMR 最重要的设计：**高档位刻意与 2G 时代的既有编码保持算法兼容**（12.2 档就是 GSM 增强全速本身）。这样通话跨网、互转时可以做到不转码直通，省资源也保音质。

档位切换的节奏是每 20 毫秒一帧。以 12.2kbps 为例，一帧的预算是：

$$12.2\,\text{kbps} \times 20\,\text{ms} = 244\ \text{bit/帧}$$

每 20 毫秒，244 个比特要装下声道参数、激励索引和增益，一个都不能超支。

```mermaid
sequenceDiagram
    participant 手机
    participant 基站
    participant 对端
    手机->>基站: 信道质量变差
    基站-->>手机: 带内命令：换到7.4k档
    基站->>对端: 同步换档保持两端一致
    手机->>对端: 用新档位继续发20ms帧
    Note over 基站,对端: 直通模式下两端必须同档
```

要分清它和无线侧“看信号换调制”那套机制的关系：**那是物理层在换调制与码率，这是信源层在换压缩档位**——一个管比特怎么飞，一个管比特从哪来，两层各司其职，信道变差时两层会同时降档，但互不替代。

## 六、VAD 与舒适噪声：不说话，就一个比特都不发

AMR 框架里还有一个隐蔽的省钱高手。统计上，通话里真正在出声的时间大约只有四成，剩下的都是听对方讲的间隙。对着沉默的线路发全码率帧，纯属浪费。

于是编码器里有个语音活动检测（VAD）：发现这一帧没人说话，就不再正常编码，只发一个极小的“静音描述帧”（SID）——不含语音，只描述背景噪声的频谱特征；此后安静期内每隔若干帧（例如 8 帧即 160 毫秒）才重发一次，刷新噪声参数。接收端则用这寥寥几个比特**合成“舒适噪声”**持续播放。

```mermaid
flowchart TD
    A["VAD：这20ms在说话吗"] -->|在说| B["正常编码<br/>每帧都发"]
    A -->|没说| C["只发一帧SID<br/>描述背景噪声"]
    C --> D["安静期内隔约160ms<br/>重发一次SID"]
    D --> E["对端合成舒适噪声<br/>不说话也不断流"]
```

为什么非要“人造噪声”而不是干脆静音？因为人耳对绝对安静的处理很别扭：突然的彻底无声会被感知成“掉线了、挂了”，而且下一次声音突然出现时会像炸雷。铺一层与现场环境一致的底噪，听感上才是“线路还通着”。你在电话里听到的那种轻微沙沙声，多半就是合成的。

## 七、从 AMR 到 EVS：声音变宽了，抗打能力也上来了

AMR 只有 300~3400Hz 的窄带，听感就是熟悉的“电话音”。宽带版本 AMR-WB 把采样提到 16kHz、有效频响拉到 50Hz~7000Hz，补回低频厚度和齿音清晰度——运营商宣传的“高清语音”（VoLTE 语音主力）用的就是它，ITU-T 给它的编号是 G.722.2。最新的 EVS 则一步到位支持超宽带乃至全频带，并针对丢包场景加了“信道感知模式”：正常编码之外再挤出一些比特携带冗余信息，网络丢包时接收端能凭冗余把声音补圆——按 4G/5G 的 IP 承载丢包特性量身定做。

| 编码 | 采样率 / 有效带宽 | 码率范围 | 典型舞台 |
|---|---|---|---|
| PCM（G.711） | 8kHz，300~3400Hz | 64kbps 固定 | 固定网、网关侧 |
| AMR | 8kHz，窄带 | 4.75~12.2kbps 八档 | 2G/3G 语音 |
| AMR-WB | 16kHz，50Hz~7kHz | 6.6~23.85kbps 九档 | VoLTE 高清语音 |
| EVS | 16~32kHz 及全频带 | 5.9~128kbps 多档 | VoLTE 增强与 VoNR |

注意演进的方向：从 AMR 到 EVS，**核心骨架没有换**——仍是“预测声道 + 码本激励 + 感知判决”，换的是更宽的频带、更细的档位，和从“只为无线信道设计”到“为 IP 网丢包设计”的攻防重心。5G 时代的 VoNR 在语音编码上并非另起炉灶，变的主要是承载，不是编码本身。

## 八、现网里这套原理长在哪

**信令里的编码协商。**打电话起呼时的 INVITE 里带着 SDP，你能看到 `AMR/8000` 或 `AMR-WB/16000` 这样的编码声明，还有 mode-set（允许的档位集合）等参数。主被亲双方各报各的，网络挑一个交集。一个经典的调试陷阱：AMR 帧在 RTP 包里存在“字节对齐”与“省带宽”两种打包格式，两边配置不一致时信令全通、媒体无声或全是杂音——抓包看 RTP 里的 OCTET-ALIGN 标志经常能一击定位。

**转码点与“机器人音”。**两端编码一致时，核心网走直通（TrFO），媒体网关只转发不解码，音质零损耗；一旦一端是固话 G.711 或旧制式，网关就得转码，每多转一次，量化损伤叠一次。听同时听到“发闷”和“机器人感”，排查转码级联次数是标准动作。

**档位变化与 MOS。**路测里语音评估分（MOS）无故下滑时，别急着怀疑覆盖：翻一下编码档位轨迹，看是不是 12.2 一路降到 4.75——档位下降本身就会掉分，这是设计内行为，不是故障。标准允许多种实现，具体切档策略以各厂家官方文档为准。

**两个常见误解。**
- *“码率高=一定更好听。”*安静房间里 7.4 与 12.2 的差别很微弱，差距主要在噪声环境下的可懂度——高档位多出来的比特大量花在了感知加权的细节上。
- *“压缩后丢包也无所谓。”*恰恰相反：压缩后的比特**重要性极不均匀**，描述声道参数的那几十个比特坏了，整帧都糊；所以语音帧天然分级保护——最关键的部分加校验、重兵把守，次要部分轻装上阵。这也是 EVS 信道感知模式的思路源头。

## 常见问题

**Q: AMR、AMR-WB、EVS 到底差在哪？**
A: 骨架相同（预测+码本），差别在带宽和战场。AMR 是窄带（电话音），AMR-WB 把频带拓宽到 7kHz 实现高清语音，EVS 进一步支持超宽带/全频带，并为 IP 承载的丢包补了冗余机制。新编码向后兼容旧档位，保证跨网通话不断档。

**Q: 打电话为什么有零点几秒的延迟？**
A: 编码本身就要攒 20 毫秒一帧，再加上算法前瞻的 5 毫秒，这 25 毫秒是省不掉的“原料成本”；大头另有其人——接收端抖动缓冲会主动攒几十毫秒抗网络抖动。所以语音编码是被设计成“能忍”的，把时延预算让给了传输。

**Q: AMR 的档位由谁决定？**
A: 由无线接入侧根据信道质量和负荷下发换档命令，手机与网络侧编解码器同步执行；主叫被叫两端必须处于同一档位，直通模式下这是硬约束。工程师在网管上能配置的是允许的档位集合和切换门限，不是单次决定。

**Q: 电话里那种轻微“沙沙”声是什么？**
A: 大概率是舒适噪声。你不说话时线上没有语音帧，只有寥寥几个比特描述噪声特征，对端据此合成底噪。它既是省流量的结果，也是心理设计——彻底的静音会让人以为掉线了。

**Q: 为什么 5G 打电话不直接用更高级的 64kbps 以上编码，音质岂不更好？**
A: 因为瓶颈不在编码器能力，而在空口预算：语音是每小区成百上千并发的业务，每路省下的十几 kbps 都会变成小区容量和覆盖。语音编码的全部艺术，就是在“听不出差别”的边界上，把码率压到极限。

## 参考来源

1. [Adaptive Multi-Rate audio codec — Wikipedia](https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_audio_codec) — AMR 八档码率、与 GSM 增强全速的兼容关系、VAD/DTX 机制
2. [Adaptive Multi-Rate Wideband — Wikipedia](https://en.wikipedia.org/wiki/Adaptive_Multi-Rate_Wideband) — AMR-WB 带宽、九档码率与 G.722.2 编号
3. [Enhanced Voice Services — Wikipedia](https://en.wikipedia.org/wiki/Enhanced_Voice_Services) — EVS 码率范围、全频带支持与信道感知模式
4. [Code-excited linear prediction — Wikipedia](https://en.wikipedia.org/wiki/Code-excited_linear_prediction) — CELP 合成分析法与码本搜索原理
5. [G.711 — Wikipedia](https://en.wikipedia.org/wiki/G.711) — PCM 64kbps 的采样与量化参数

---
> 本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵**爱卫生**（微信ID: gprshome201101）维护，聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。
> 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
