首页 › deep-tech › 人声变比特:语音编码进化史

人声变比特:语音编码进化史

你有没有想过一个问题:一条 20MHz 的 LTE 载波能跑 150Mbps 的数据,可你打一通 VoLTE 电话,只占了大约 25kbps 上下的资源——连数据业务的千分之一都不到。一部高清电影要几个 GB,而你一小时通话的声音,如果原样录下来也不过几十 MB。为什么人声可以被压缩到如此“离谱”的程度,而音乐和视频却不行?

答案藏在一个容易被工程师忽略的角落:语音编码器(Speech Codec)。调制、信道、信令讲的是“怎么把比特运过去”,而语音编码回答的是更上游的问题——“这些比特从哪来,为什么是这么多比特”。理解了它,你才能看懂 VoLTE 抓包里 AMR-WB 是什么、SDP 协商在争什么、为什么两台“高清手机”打出来还是电话味的窄带音质。这一篇,我们就从声波到比特,把语音编码这条链路彻底讲透。

一、为什么人声是“最好压缩”的信号

先建立一个直觉:压缩的空间来自冗余,而人声恰好是冗余极其丰富的信号,丰富到近乎“作弊”的程度。

第一重冗余:发声的物理规律。 人类发不出任意波形的声波。你的声道是一根十几厘米长的、截面缓慢变化的声管,肺气流冲击声带或通过口腔摩擦产生激励,再经声道共鸣整形后辐射出来。物理规律决定了这个系统输出的波形必然是“平滑的、有惯性的、可预测的”——当前时刻的样值和前几个样值高度相关。换句话说,人声波形的很大一部分信息,用“前几个样值”就能猜出来。能被猜出来的信息,就不需要逐个传送。

第二重冗余:人耳的感知局限。 语音编码的终极裁判不是示波器,而是对面那个人的耳朵和大脑。人耳对不同频率的敏感度不同(对 2~4kHz 最敏感,对低频次之),响的声音会掩盖邻近频率上轻的声音(掩蔽效应),而且人耳对波形的逐点误差并不敏感——只要听感一致,波形差一点完全无所谓。

这两重冗余决定了语音编码的独特哲学,也是它和音乐编码(MP3/AAC)的根本分野:

语音编码不是“记录波形”,而是“重建一个听起来一样的新波形”。

它干脆不忠实记录波形,而是建了一个“人的发声模型”,把你说的话翻译成模型的控制参数,接收端用同样的模型把声音“重新演一遍”。这就是“声码器”(Vocoder,voice + coder)思想的起点。既然只传参数不传波形,码率自然可以低到令人发指。

二、带宽决定音质:一切从采样说起

在谈压缩之前,先要明确“我们要保住哪些频率”。采样定理告诉我们,采样率必须高于信号最高频率的两倍,才能无损还原。电话音质的全部历史,几乎就是“保住多宽的频带”的历史:

flowchart TD
    A["声波进入麦克风"] --> B["抗混叠滤波"]
    B --> C{"采样率选择"}
    C -->|"8kHz 采样"| D["窄带NB<br/>300~3400Hz"]
    C -->|"16kHz 采样"| E["宽带WB<br/>50~7000Hz"]
    C -->|"32kHz 采样"| F["超宽带SWB<br/>20~14000Hz"]
    C -->|"48kHz 采样"| G["全频带FB<br/>20~20000Hz"]
    D --> H["2G/3G传统通话<br/>『电话味』"]
    E --> I["VoLTE高清语音"]
    F --> J["EVS超清语音"]
    G --> K["EVS音乐级"]

传统电话只保留 300~3400Hz。这就是“电话味”的全部来源:你声音里低于 300Hz 的厚度感、高于 3400Hz 的亮泽感(齿音、气声),全被砍掉了。所谓的“高清语音”(HD Voice),本质就是把带宽从 3.4kHz 扩到 7kHz——采样率从 8kHz 翻倍到 16kHz,样值数量翻倍,但编码器用更聪明的算法把码率控制住。

一个反直觉的事实:AMR-WB 在 12.65kbps 档位的听感(MOS)显著优于 AMR-NB 在 12.2kbps 的表现——码率几乎一样,音质却高一个档次。钱花在哪儿,听感就在哪儿:带宽带来的音质提升,远比同样的比特花在波形精度上划算。这个结论是整个 VoLTE 高清语音的商业逻辑基石。

三、三代编码器:一部“更懂人声”的进化史

语音编码算法按思路可分为三代,通信语音编码的演进就是这三代思路的接力:

代际 思路 代表算法 码率量级 问题
波形编码 忠实记录波形 PCM、ADPCM 32~64kbps 太费比特
参数声码器 只传发声模型参数 通道声码器、LPC-10 2.4kbps 左右 机器味重,音乐/噪声崩坏
混合编码 模型+波形闭环修正 CELP 家族 4~25kbps 复杂度高(但摩尔定律救了它)

2G 的 GSM 全速率(FR)用 13kbps,EFR 升级到 12.2kbps——注意这个数字,它之后还会出场。3G 和 4G 时代的主力 AMR 系列、以及 5G 时代的 EVS,全部属于第三代:CELP(Code-Excited Linear Prediction,码激励线性预测)家族。所以我们重点解剖 CELP——看懂了它,AMR、AMR-WB、EVS 全都通了。

3.1 CELP 的两个核心零件

零件一:线性预测(LPC)——给声道拍照。

发声的“源-系统模型”说:声门激励经过声道滤波,出来就是语音。LPC 的任务是把“声道”这个滤波器的参数抠出来。方法是线性预测:当前样值可以用前面 p 个样值的加权和逼近:

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

预测误差 e(n) = s(n) − ŝ(n) 越小,说明这组系数 aᵢ 越准确地刻画了你的声道形状。每 20ms(一帧)重新估计一组系数,相当于每 20ms 给你的声道拍一张“X光片”。元音听感主要由这张 X 光片决定——所以把一个人的 a 元音系数包发给别人,合成出来的仍是“a”,只是不像说话人本人。这也顺便解释了声码器语音为什么“不像本人”:音色信息被降维了。

零件二:码本——激励的“表情包库”。

声道 X 光片传过去之后还缺一样东西:激励信号是什么(声带振动?摩擦音?清音的随机噪声?)。CELP 的做法粗暴而有效:预先准备一个巨大的“候选激励码本”,每个码字是一段激励波形。编码时逐个尝试,看哪个码字激励出来的合成语音最像原始语音,把码字的编号传过去——接收端查同一本字典,取出同一段激励。

3.2 精髓所在:合成分析(Analysis-by-Synthesis)

CELP 最聪明的设计来了。前两代编码器的思路是“编码端压缩,解码端解压,各干各的”。CELP 说:编码器里直接内置一个迷你解码器。对码本里的每个候选激励,编码端都当场跑一遍解码流程,合成出语音,和原始语音比误差,选失真最小的那个编号发出去:

flowchart TD
    A["原始语音帧<br/>每20ms一帧"] --> B["LPC分析<br/>提取声道系数"]
    B --> C["感知加权滤波器"]
    A --> C
    C --> D["误差比较器"]
    E["候选激励搜索"] --> F["自适应码本<br/>音调周期-浊音"]
    E --> G["固定码本<br/>随机结构-清音"]
    F --> H["乘增益G后<br/>求和成激励"]
    G --> H
    H --> I["内嵌合成器<br/>LPC滤波生成语音"]
    I --> D
    D -->|"误差大<br/>换下一个候选"| E
    D -->|"误差最小"| J["发送<br/>LPC系数+码本索引+增益"]

这就是“合成分析”:一边合成,一边分析,闭环选优。编码器是站在解码器的角度做决策的——它发送的不是“波形是什么”,而是“用哪把钥匙能让你解出最像的波形”。整个搜索过程计算量巨大(这正是 CELP 提出于 80 年代、直到 DSP 算力成熟才大规模商用的原因),20ms 一帧的语音,编码端可能要“试穿”上千套激励方案才挑出最合身的一套。而解码端只需要查一次字典,轻松得很——不对称的计算分布,恰好适合“基站和手机算力换带宽”的工程现实。

合成器的完整数学形式就是预测部分加激励部分:

$$\tilde{s}(n) = \sum_{i=1}^{p} a_i \, \tilde{s}(n-i) + G \cdot c(n)$$

其中 c(n) 是选出的码字激励,G 是增益。另外,误差比较之前要过一个感知加权滤波器:让编码器“用耳朵挑误差”,把误差能量推向人耳不敏感的频段,掩蔽在响音附近——同样 1 比特都不多花,听感却更好。这是“感知冗余”变现的地方。

四、那个"A":AMR 的自适应到底在自适应什么

CELP 解决了“怎么压”,AMR 解决了“压多少”。Adaptive Multi-Rate(自适应多速率)的精髓是:同一套 CELP 框架下准备了多档码率,通话中可以每 20ms 换一档。

AMR-NB 提供 8 档:12.2 / 10.2 / 7.95 / 7.4 / 6.7 / 5.9 / 5.15 / 4.75 kbps。信号好时用高档,音质优先;信号差时降档,腾出的比特交给信道编码做保护——信源和信道抢同一个预算,由网络根据无线质量动态分配。这就是“信源信道联合自适应”的思想。

很多工程师会把它和已讲过的链路自适应 AMC(自适应调制编码)混为一谈,其实两者分工不同:AMC 改的是“每比特跑多快多稳”(调制阶数与信道码率),AMR 改的是“业务本身产多少比特”(信源码率)。一个在信道层自适应,一个在信源层自适应,两者配合构成完整的质量闭环:

flowchart TD
    A["基站持续测量<br/>无线信道质量"] --> B{"信道质量评估"}
    B -->|"质量差"| C["两路并行动作"]
    C --> D["AMC 降调制阶数<br/>16QAM降为QPSK"]
    C --> E["命令终端降信源码率<br/>如12.2降至5.9kbps"]
    B -->|"质量好"| F["AMC 升高阶调制"]
    B -->|"富余充分"| G["维持或升信源码率"]
    D --> H["总目标<br/>误块率达标且语音不断"]
    E --> H
    F --> H
    G --> H

值得多说一句的是 AMR 的两个“省比特副产物”,它们在现网里随处可见:

五、从 AMR-WB 到 EVS:高清语音的两级跳

5.1 AMR-WB:高清语音的开山之作

AMR-WB(Adaptive Multi-Rate Wideband)把采样率翻倍到 16kHz,保住 50~7000Hz,提供 9 档码率:6.6 / 8.85 / 12.65 / 14.25 / 15.85 / 18.25 / 19.85 / 23.05 / 23.85 kbps。它同时被 ITU-T 标准化为 G.722.2,是目前 VoLTE“高清语音”的事实载体。一个有意思的细节:AMR-WB 的 12.65kbps 档被设计为“默认工作点”,而 AMR-NB 的最高档 12.2kbps 正是当年 GSM EFR 的算法——保留这个模式是为了向下兼容,让系统能平滑过渡。

5.2 EVS:为 VoNR 而生的新一代

EVS(Enhanced Voice Services)是 3GPP 在 Rel-12 阶段完成的新一代编码器,目标很明确:在 VoNR(5G 新空口语音)时代提供“通信级”的音质,同时把抗丢包能力做到体系里。它的关键设计:

但这里有一个工程师必须刻在脑子里的铁律:语音编码是端到端协商的,音质取木桶的最短板。 5G 手机打 5G 手机才可能 EVS 全频带;5G 手机打 2G 老人机,对方只有 AMR-NB,你这头再先进也得降到窄带窄码率。现网投诉“5G 手机打电话音质差”,第一件事不是查空口,而是看这通话两端的编码协商结果——很可能问题在对面那部十年前的手机上。

六、一条 RTP 包的旅程:把原理落到现网

最后把所有零件装回一条完整的链路,看看一帧语音从嘴到耳经历了什么:

flowchart TD
    A["麦克风采集<br/>48kHz原始音频"] --> B["重采样到编码采样率"]
    B --> C["每20ms成帧"]
    C --> D["VAD判断<br/>有话音还是静默"]
    D -->|"静默"| E["低频发SID帧<br/>或停发"]
    D -->|"有话音"| F["EVS或AMR编码<br/>输出语音帧"]
    E --> G["打包RTP负载"]
    F --> G
    G --> H["经空口与核心网<br/>专用承载传送"]
    H --> I["对端解码器<br/>查码本重建语音"]
    I --> J{"收到帧了吗"}
    J -->|"正常"| K["正常解码"]
    J -->|"丢帧"| L["PLC丢包隐藏<br/>合成补偿帧"]
    K --> M["抖动缓冲后<br/>送扬声器"]
    L --> M

落到日常工作,这套原理至少在四处直接派上用场:

  1. 看懂 SDP 协商:VoLTE 呼叫建立的 SIP INVITE 里,SDP 会列出编码候选(EVS、AMR-WB、AMR…)及模式(octet-align 还是 band-efficient、mode-set 限定)。音质投诉先看协商结果——两端最终落在哪个编码、哪档码率,决定了音质天花板。
  2. 读懂 RTP 流:20ms 一包(50 pps)、载荷几十字节,有规律停流是 DTX 而非故障;载荷尺寸随码率变化对应 AMR 换档。
  3. MOS 优化的抓手:语音质量差的排查优先级——编码协商结果 → 丢包率(触发 PLC)→ 抖动缓冲溢出 → 码率是否被压到低档。编码器选错档是“通话像机器人”的常见根因之一。
  4. 容量与干扰账本:一个 VoLTE 用户占多少资源取决于码率档位,DTX 开启率直接影响上行干扰底噪——做无线容量规划时这是基本输入。

常见问题

Q: AMR 和 AMR-WB 只是“码率更高的版本”吗? A: 不是。两者核心区别是带宽:AMR-NB 采样 8kHz、只有 300~3400Hz;AMR-WB 采样 16kHz、保住 50~7000Hz。即使 AMR-WB 用更低的码率(如 12.65kbps),听感也明显好于 AMR-NB 的 12.2kbps。高清语音的“高清”,高在带宽,不在码率。

Q: 语音编码能压到几 kbps,为什么音乐编码 MP3 却要 128kbps 起步? A: 语音编码的前提是“信号必然由人声发声模型产生”,模型参数只有十几个,所以能压到个位数 kbps。音乐里什么乐器、什么音色都可能出现,发声模型不成立,只能靠人耳掩蔽特性做感知压码,空间小得多。让 EVS 放一段音乐它也顶得住——高码率档下它退化为类感知编码器,这正是它比老语音编码器贵的原因。

Q: DTX 静默期间完全不发数据吗?对方怎么听到我的背景噪声? A: 不是完全不发。静默期间会周期性发送 SID(静音描述)帧,携带背景噪声的谱特征,解码端据此合成“舒适的背景噪声”填补空隙。所以抓包看到的是稀疏的小包而不是零包。如果 SID 也收不到,对方会听到不自然的“死寂”,这也是一种故障特征。

Q: 两部都支持 EVS 的手机通话,为什么有时还是 AMR-WB 音质? A: 编码协商取交集。可能的短板包括:中间有一段是 2G/3G 的互通呼叫、运营商语音漫游对接的编码策略、核心网媒体面(如转码器)的配置、或无线侧把模式集限制在 AMR-WB。先抓 INVITE/183 里的 SDP 确认协商落点,再逐段排查。

Q: EVS 的信道感知模式是牺牲什么换抗丢包的? A: 牺牲码率余量。它在常规码流之外编码一份带冗余的部分描述,正常时不起作用,丢包时用冗余重建。所以同等听感目标下它需要更高码率档,或者用更高码率换更强抗丢包——本质还是那笔“信源 vs 信道”的预算账,只是这次是编码器自己内部记账。

参考来源

说明:本次编写环境的联网抓取工具均未获授权放行,以下链接为长期稳定的权威条目入口(标准参数以正式发布的标准文本为准),未能在线逐字核验,引用时请注意。

  1. Enhanced Voice Services - Wikipedia — EVS 标准背景、码率档位与带宽支持概览
  2. Adaptive Multi-Rate audio codec - Wikipedia — AMR/AMR-WB 模式列表与历年网络应用
  3. G.722.2: Wideband coding of speech at around 16 kbit/s - ITU-T — AMR-WB 的 ITU 标准文本入口
  4. 3GPP Speech Codec specifications — 3GPP SA4 编码器工作组官方页面
  5. Opus Codec - Wikipedia — 互联网侧同类感知编码器,可用于对照理解设计取舍

本文由「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学通信知识星球海报-扫码加入