首页 › deep-tech › 不传波形传口音:语音编码原理

不传波形传口音:语音编码原理

一通高清语音电话,你的声音在空口上通常只占 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 的承载能力。如果照抄波形,一条语音就吃掉整个时隙还倒欠。

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

二、换思路:人声不是随机波,是乐器的输出

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

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

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(码激励线性预测)又砍了第三刀:残差也不传,只传“编号”。

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

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 个比特要装下声道参数、激励索引和增益,一个都不能超支。

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

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

六、VAD 与舒适噪声:不说话,就一个比特都不发

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

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

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 — AMR 八档码率、与 GSM 增强全速的兼容关系、VAD/DTX 机制
  2. Adaptive Multi-Rate Wideband — Wikipedia — AMR-WB 带宽、九档码率与 G.722.2 编号
  3. Enhanced Voice Services — Wikipedia — EVS 码率范围、全频带支持与信道感知模式
  4. Code-excited linear prediction — Wikipedia — CELP 合成分析法与码本搜索原理
  5. G.711 — Wikipedia — 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学通信知识星球海报-扫码加入