首页 › deep-tech › 先学嗓子再压缩:AMR与EVS原理

先学嗓子再压缩:AMR与EVS原理

一、为什么你的声音能压到每秒几KB?

一首128kbps的音乐,一秒钟要啃掉16KB流量;而你打一通VoLTE电话,语音流常常只有每秒1KB多——大约是音乐的一半流量,听感却字字清晰。更早的2G手机,甚至能在每秒不足6千比特的信道里把话说完。

很多人第一反应是“现在压缩算法先进”。但真正的原因更根本:语音编码器“学过”人是怎么发声的。它压缩的不是“一段声音”,而是“一个发声器官的运动”。音乐编码器面对的是不可预测的任意波形,只能靠人耳的掩蔽效应见招拆招;语音编码器面对的是一个有确定物理模型的声源,所以它能大胆得多——只传“模型参数”,不传波形本身。

这就是语音编码(Speech Codec)与音频编码(Audio Codec,如MP3/AAC)的分水岭,也是本文的主角。从2G的AMR,到4G高清语音的AMR-WB,再到5G VoNR用的EVS,二十五年间换了三代,底层思想却一脉相承。今天我们把这套“给嗓子建模型”的手艺拆开看。

二、压缩之前,先给声音定档

讨论编码之前要分清两个容易混淆的维度:带宽和保真度。带宽由采样率决定,决定了你能听到多大范围的声音;保真度由比特率决定,决定了频带内的声音有多“细腻”。

等级 频带范围 采样率 代表编码 大众叫法
窄带 NB 300–3400 Hz 8 kHz G.711、AMR-NB 传统"电话音"
宽带 WB 50–7000 Hz 16 kHz AMR-WB "高清语音"
超宽带 SWB 20–14000 Hz 32 kHz EVS "超高清"
全频带 FB 20–20000 Hz 48 kHz EVS 接近CD听感

有两个反直觉的点值得记住。第一,传统电话音的上限3400Hz是人声“最省比特”的区间——辅音的咬字信息大多在3kHz以下,所以窄带语音虽然闷,但可懂度并不差。第二,“高清语音”(运营商的HD Voice营销名)指的是宽带,即AMR-WB把低频的浑厚感(50Hz起)和中高频的临场感(到7kHz)补了进来,提升最大的其实不是“高音”,而是自然度。

AMR-NB每20毫秒处理一帧(160个样本),一帧只要95~244比特;折算下来就是4.75~12.2kbps。这244比特是怎么省出来的?答案在下面这个模型里。

三、发声的物理模型:一根管子和两种激励

人的发声系统可以粗暴地拆成两部分:激励源和声道滤波器。

flowchart TD
    A["肺部气流"] --> B["激励源二选一"]
    B -->|"声带振动:浊音"| C["准周期脉冲串"]
    B -->|"气流擦音:清音"| D["随机白噪声"]
    C --> E["声道共振腔滤波"]
    D --> E
    E --> F["共振峰染色后的话音"]
    F --> G["麦克风输出"]

这个“激励—滤波”模型是语音编码的奠基性假设。它的威力在于:声道形状在20毫秒内几乎不变。你说话时舌头、嘴唇的物理运动以几十毫秒为单位,远慢于声音波形本身(几毫秒就振荡一个周期)。于是波形里就藏着大量冗余——相邻样本高度相关,相邻帧参数几乎相同。

压缩的全部艺术,就是把这两层冗余彻底挤干:帧内的冗余交给线性预测,激励的冗余交给码本。

四、线性预测:声道是个“惯性系统”

既然声道形状短时不变,那么下一个声音样本和前几个样本就必然高度相关。线性预测(LPC, Linear Predictive Coding)把这层关系写成一句话:

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

即用过去p个样本的加权和来预测当前样本。预测得准,说明声道惯性稳;预测不准的地方,恰恰是激励(声门脉冲、清音噪声)“出格”的时刻。预测残差为:

$$e(n) = s(n) - \hat{s}(n)$$

于是语音被解耦成两部分:

解码端反过来,用残差去激励声道滤波器:

$$H(z) = \frac{1}{A(z)} = \frac{1}{1-\sum_{k=1}^{p} a_k z^{-k}}$$

直觉上,A(z)就是那段“管子”的频率响应。窄带语音用10阶预测就能把共振峰描绘得八九不离十;宽带语音频带翻倍,需要16阶。LPC系数本身还要再“瘦身”一次——工程上不直接量化系数,而是转换成更稳健的LSP(线谱对)参数再量化,因为LSP的量化误差不会引起滤波器剧烈波动,这是教科书里“参数稳健性”的经典案例。

到这里,编码器已经能以几十比特描述“管子”了。剩下的麻烦是激励:残差信号虽然“新鲜”,但直接传波形还是太贵。怎么把激励也压到几十比特?答案是语音编码史上最优雅的设计——闭环搜索。

五、CELP:先试装,再发货

CELP(码激励线性预测)的核心动作叫合成-分析(Analysis-by-Synthesis):编码器里内嵌一个解码器,把候选激励逐个“试播”一遍,用与接收端完全相同的算法合成出语音,跟原始语音比误差,哪个候选误差最小就传哪个的编号。发一个编号,远比发一段波形便宜。

候选激励存在两本“字典”里:

但比较误差时不能直接比波形。人耳对不同频段的失真敏感度不同——在共振峰附近,耳朵的分辨力反而最钝(掩蔽效应),共振峰之间的能量空隙才是失真最刺耳的地方。于是搜索目标改成感知加权误差最小:

$$W(z) = \frac{A(z/\gamma_1)}{A(z/\gamma_2)}, \quad 0 < \gamma_2 < \gamma_1 < 1$$

它故意把失真往共振峰里赶——那里耳朵听不清。这就是语音编码“骗过耳朵”的关键一招:不是让误差最小,而是让耳朵感觉到的误差最小。

flowchart TD
    A["输入话音帧"] --> B["LPC分析:提取声道包络"]
    B --> C["LSP量化:几十比特"]
    A --> D["闭环搜索最佳激励"]
    C --> D
    D --> E["自适应码本:管音调周期"]
    D --> F["固定码本:管残差形状"]
    E --> G["本地试合成"]
    F --> G
    G --> H["误差过感知加权滤波"]
    H -->|"选耳朵最满意的一组"| D
    D --> I["只传索引和增益"]

12.2kbps的AMR帧,就是这样一个“包裹”:LPC参数 + 音调滞后 + 码本索引 + 增益,合计244比特。解码端按索引从同样的字典里取素材、过同样的滤波器,重建出听感几乎无差的语音。字典两端各存一份,信道上只传页码——这句话就是CELP家族全部的秘密。

六、AMR:会看路况的八档变速箱

单有压缩还不够。无线信道时好时坏:信号强时可以奢侈一点传高码率,小区边缘误码飙升时,再高的码率也是徒劳——比特错一个,整帧语音就毁一片。AMR(自适应多速率)的解法朴素而聪明:准备8档码率,随时换挡。

特性 AMR-NB AMR-WB EVS
标准年代 1999 2003(ITU编号G.722.2) 2014
采样率 8 kHz 16 kHz 8–48 kHz
频带 300–3400 Hz 50–7000 Hz 最高20 kHz
码率档位 8档:4.75–12.2 kbps 9档:6.6–23.85 kbps 5.9–128 kbps
编码模式 ACELP ACELP CELP+MDCT+通道感知
典型场景 2G/3G/VoLTE 3G/VoLTE高清 VoNR/VoLTE

换挡的依据是对信道质量的实时测量,形成一条闭环:

flowchart TD
    A["接收端周期上报信道质量"] --> B["网络综合评估质量"]
    B -->|"信道变差"| C["降一档码率"]
    B -->|"信道变好"| D["升一档码率"]
    C --> E["省下的比特给纠错冗余"]
    D --> F["更多比特花在音质上"]
    E --> G["下一帧20ms即生效"]
    F --> G
    G --> A

注意这个换挡的本质是信源与信道的联合分配:总比特数大致不变,音质和可靠性此消彼长。站在小区边缘,你的通话自动降档到6.7甚至4.75kbps——声音变“薄”了,但断线的风险换成了可懂度。这就是为什么你走进电梯时电话往往“音质变差但没断”:变速箱在悄悄降挡。

AMR还有一个省流量的隐藏开关:VAD/DTX。人说话天然有约一半时间是停顿(听对方讲、喘气、换行)。VAD(语音激活检测)判断当前帧是否含语音;静音期间,编码器只发极低速率的SID帧(每约160毫秒一次)描述背景噪声参数,其余时间不发言。接收端根据SID参数合成一段相似的背景噪声——所谓舒适噪声。不做这一步,对方会以为电话断了;做了这一步,上下行的静音流量省下近一半。你在深夜通话时听到的对方那头轻微的“沙沙”声,就是解码器合成出来的噪声,不是真实的电流声。

顺便说一段趣史:AMR设计8档时,其中12.2kbps档直接沿用GSM的增强全速率编解码(EFR),6.7kbps档对应日本的PDC制式——它从出生起就是一部“多制式兼容变速箱”,为的是让2G/3G网络过渡时无需重新设计。这解释了为什么AMR的档位数字看起来毫无规律:那些数字是从各代现网“继承”来的。

七、EVS:5G话音的三副面孔

到了VoNR时代,AMR家族的两个短板暴露了:一是宽带封顶23.85kbps,撑不起全频带;二是只会说话,来一段彩铃、一段hold音乐就原形毕露——CELP的发声模型对音乐根本不成立。2014年定稿的EVS(Enhanced Voice Services)一次解决三件事:

第一,带宽与码率双扩展。EVS一套编解码覆盖窄带到全频带(48kHz采样),码率从5.9kbps到128kbps连续可档。低码率区间它与AMR-WB听感持平或更好,高码率区间可达透明音质——同一通电话,从“省流量模式”到“录音室模式”全覆盖。

第二,双模型切换。EVS内置两种编码核:语音走CELP(用发声模型),音乐和混合内容切到MDCT变换编码(与AAC同族的频域编码,用掩蔽效应)。编码器逐帧判断当前是说话还是唱歌,自动换核。这也是为什么用支持EVS的手机打VoNR电话时,运营商播放的彩铃终于不再“糊”了。

第三,也是最工程化的一笔:通道感知模式(channel-aware mode)。传统思路里,丢包靠接收端的错误隐藏(丢了帧就“脑补”一帧)硬扛。EVS干脆在编码时就掺入部分冗余——把上一帧的关键参数降低精度复制一份,藏进当前帧。网络正常时这些冗余是浪费的少量比特;一旦某帧丢了,解码端从下一帧里挖出它的“备份残影”重建,听感损失骤降。这相当于把纠错从“事后补救”前移到“事前埋伏”,代价是牺牲一小部分净码率。在丢包率5%量级的真实网络上,通道感知模式对MOS分的改善远比单纯升档码率划算——丢包多的现网,这是比“调高码率”正确得多的调优方向。

八、现网里你在哪里会撞见它

最后留一个常见误解:采样率升级不等于音质必然提升。窄带话音升宽带,提升来自补进来的频带;但若信道差到只能跑最低档,宽带低档的听感未必好过窄带高档——比特永远不够分,带宽只是“分法的候选”。音频编码的世界里没有免费的高清。

九、结语

从AMR到EVS,二十五年三代技术,变的是档位、带宽和抗丢包的花样,不变的是同一个洞察:语音不是任意波形,而是一根管子在两种激励下的受迫响应。先把发声模型建出来,再把耳朵的弱点算进去,最后让编码器自己在无数候选里挑一个“耳朵最满意”的答案——比特数就再也压不下去了吗?不,是再也不需要那么多了。

下一次听到“高清语音”“通话保真”,你知道那背后不是玄学:是244比特一帧的包裹里,装着一副建模的嗓子。

常见问题

Q: AMR和AMR-WB到底差在哪,为什么运营商叫它“高清语音”? A: 两处根本差别。采样率从8kHz提到16kHz,频带从300–3400Hz扩展到50–7000Hz,补上了人声的低频浑厚感和中高频自然度;码率上限从12.2提到23.85kbps,9档比8档分得更细。因为听感明显提升,运营商营销上称"HD Voice",本质就是AMR-WB。

Q: 为什么微信语音比打电话清晰,它们用的编码不一样吗? A: 是的。微信这类OTT应用走互联网,常用通用音频编码(如Opus/SILK)且没有无线信道的严苛比特预算,码率可以更宽裕;蜂窝通话走AMR/EVS,为适应无线信道专门设计,强调低码率下的话音可懂度和快速换挡。代价是微信语音对网络抖动更敏感——它没有无线专用的信源信道联合设计兜底。

Q: EVS的通道感知模式和普通抗丢包(如FEC)有什么区别? A: 通道感知模式把“上一帧的低精度冗余”直接织进当前帧的编码流程里,冗余与主信息联合优化,编码端知道网络会丢包并为之定价;传统FEC多是编码完成后的外层包裹,粒度粗、效率低。EVS的方案在同等冗余开销下恢复质量更好,且只在检测到丢包风险时才加大冗余比例。

Q: 语音为什么固定20毫秒一帧,不更短或更长? A: 这是三方折中。帧越短,时延越低(通话要求端到端单向时延约150ms内),但帧头开销占比越大、LPC参数估计越不稳;帧越长,压缩效率越高,时延却不可接受。20ms正好落在"参数稳定"与"时延可控"的交点上,人耳几乎察觉不到这一粒度的延迟。

Q: 舒适噪声的“沙沙声”是哪来的,能关掉吗? A: 它是接收端根据SID帧里的噪声参数合成的假背景声,为的是让静音期不至于“死寂”让你以为掉线。它是DTX机制的组成部分,关掉它等于关掉DTX——静音省流量的好处就没了。现网中它是特性不是故障。

参考来源

  1. Adaptive Multi-Rate audio codec - Wikipedia — AMR八档码率、20ms帧长与多制式继承关系的权威条目
  2. Adaptive Multi-Rate Wideband - Wikipedia — AMR-WB九档码率、16kHz采样与G.722.2编号
  3. Enhanced Voice Services - Wikipedia — EVS码率范围、带宽等级与通道感知模式
  4. Code-excited linear prediction - Wikipedia — CELP合成-分析与码本机制
  5. Comfort noise - Wikipedia — VAD/DTX与舒适噪声生成原理

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