人在电话中讲话时,麦克风首先得到连续变化的模拟语音信号,而IP网络传输的是数字数据。PCM(Pulse Code Modulation,脉冲编码调制)解决的就是模拟语音数字化问题:按照一定时间间隔对语音信号进行采样,再把每个采样值量化并表示成数字码字。
在电话和VoIP领域,经常与PCM一起出现的是G.711。G.711采用8kHz采样,并使用A-law或μ-law对电话语音进行8bit编码,因此形成64kbit/s的语音有效载荷。这里的64kbit/s是语音编码本身的码率,并不等于一通VoIP电话在实际IP网络中只需要64kbit/s带宽。
连续语音怎样变成PCM数字数据
PCM数字化通常可以分成采样、量化和编码三个基本过程。
模拟语音 → 采样 → 量化 → 数字编码
采样
采样是在连续语音波形上按照固定时间间隔取得信号幅度。例如8kHz采样意味着每秒取得8000个语音样本,相邻两个样本之间的时间间隔为125微秒。
采样以后,原来的连续时间语音变成了一系列离散的样本,但每个样本的幅度此时仍可以理解为连续变化的数值。
量化
量化是把每个采样值归到有限数量的幅度等级中。实际采样值可能位于两个量化等级之间,因此量化后的数字值与原始信号之间会存在一定差异,这就是量化误差。
量化等级越细,能够描述的幅度变化越精确,但表示每个样本所需要的数据量也会增加。
编码
量化后的数值最终需要转换成二进制码字,才能存储或通过数字通信系统传输。完成这一步以后,原来的模拟语音就变成了连续的数字语音数据。
如果需要进一步了解采样、量化、量化噪声和非均匀量化等基础理论,可查看网络电话波形编码一般原理。650这篇重点不再重复这些推导,而是继续解释PCM在VoIP中的实际使用。
为什么传统电话语音采用8kHz采样
原文把300Hz~3400Hz写成“人的声音频率范围”,这个说法并不准确。人声包含的频率范围比传统电话传输的范围更宽,约300Hz~3.4kHz描述的是传统窄带电话系统重点保留的话音频带。
为了把这一频带的语音转换为数字信号,电话系统采用8kHz采样,也就是:
每秒采样8000次。
根据采样理论,采样频率需要高于待保留信号最高频率的两倍。传统电话话音上限约为3.4kHz,对应的两倍为6.8kHz,8kHz采样为电话系统留下了必要的滤波和实现余量。
因此,需要区分两个概念:
- 话音频带: 传统窄带电话主要保留约300Hz~3.4kHz的语音频率;
- 采样率: 数字电话系统通常每秒取得8000个样本,即8kHz。
采样率描述的是“一秒钟取多少次样”,并不是网络传输码率。原文把“抽样速率”和“64kbit/s传输速率”写成同一个概念,需要分开理解。
G.711为什么正好是64kbit/s
VoIP设备中常见的PCMA和PCMU都属于G.711电话语音编码。G.711使用8kHz采样,每个语音样本使用8bit表示,因此它的编码码率可以直接计算:
8000 samples/s × 8 bit/sample = 64000 bit/s = 64 kbit/s
所以:
- 采样率是8kHz;
- 每秒有8000个语音样本;
- 每个样本编码为8bit;
- 最终G.711语音有效载荷码率为64kbit/s。
这里不能再写成“PCM一般先得到16bit数据,然后压缩成8bit”。PCM本身并没有规定所有系统都必须先采用16bit线性样本。不同数字音频系统可以使用不同采样率和量化位数,而电话领域的G.711有自己明确的编码方式。
A-law和μ-law有什么区别
G.711包含A-law和μ-law两种对数压扩规则。在SIP和RTP系统中,经常分别写作:
- PCMA:G.711 A-law;
- PCMU:G.711 μ-law。
两者目的相似,都是让有限的8bit码字更合理地表示电话语音动态范围,使较小幅度的语音也能获得较好的量化表现。
它们并不是普通文件压缩意义上的“把一个16bit文件压缩成8bit”,而属于电话PCM编码中的非线性量化和压扩方法。
不同设备建立SIP电话时,会通过会话协商确定双方共同支持的语音编码。如果一端只接受PCMA,而另一端只提供PCMU,就需要由中间设备进行相应转码,或者重新配置共同支持的codec。
64kbit/s的G.711进入VoIP以后怎样传输
G.711完成语音编码以后,得到的是连续的PCM语音数据。VoIP系统不会把这些数据直接裸传到网络,而是按一定时间长度组成语音包,再通过RTP、UDP和IP发送。
典型路径可以表示为:
麦克风 → 语音采样 → G.711编码 → RTP → UDP → IP网络 → RTP解包 → G.711解码 → 扬声器
RTP用于承载实时语音媒体,并提供时间戳和序列号等信息,使接收端能够按照正确的时间顺序播放语音。UDP负责传输数据报,IP则负责让数据包到达目标设备。
为什么实际带宽会超过64kbit/s
64kbit/s只是G.711语音数据本身的码率。进入IP网络以后,每个语音包还需要增加RTP、UDP和IP头部,进入以太网后又会增加相应的链路层开销。
例如采用20ms语音打包时:
- 20ms的G.711语音包含160字节有效载荷;
- 每秒需要发送50个RTP语音包;
- 在常见IPv4环境中,仅计算RTP、UDP和IP头部后,实际IP层数据率就已经高于64kbit/s。
因此,企业计算VoIP并发带宽时不能简单使用:
通话数量 × 64kbit/s
还需要考虑RTP/UDP/IP封装、以太网/VLAN开销、上下行两个方向,以及实际采用的语音打包时间。
打包时间为什么也会影响网络开销
如果每个RTP包只装较短时间的语音,就需要更频繁地发送数据包,固定协议头占总数据的比例会提高;如果一个数据包包含更长时间的语音,协议开销比例会下降,但单个数据包承载的语音时间增加。
所以VoIP系统在带宽、时延和网络处理开销之间需要做合理配置,而不是单独追求最小数据包或最大数据包。
PCM/G.711适合哪些VoIP通信场景
G.711最大的特点不是“压缩率高”,而是结构简单、编解码处理量较小,并且与传统数字电话系统有良好的互通基础。因此,它仍然是SIP电话、IP PBX和语音网关中非常常见的语音编码。
局域网和企业IP电话
企业局域网通常具有比较充足的带宽。IP话机、软电话和IP PBX之间使用G.711,可以减少复杂语音压缩带来的处理过程,并保持传统电话级语音兼容性。
PSTN和语音网关互通
传统数字电话网络大量使用64kbit/s PCM语音,因此FXS、FXO和数字中继网关与SIP系统互通时,经常涉及G.711。
例如:
模拟电话 → FXS网关 → G.711/RTP → SIP服务器
或者:
PSTN → 语音网关 → G.711/RTP → IP PBX
关于网关怎样完成传统电话接口与SIP/RTP之间的转换,可以查看VoIP Gateway是什么?语音网关的工作原理与类型。
带宽受限环境需要重新考虑codec
G.711每路语音本身就需要64kbit/s,加上IP协议封装以后实际网络占用还会进一步增加。如果大量通话需要经过带宽较小的广域网或公网链路,就需要把并发数与可用带宽一起评估。
这种情况下,也可能采用G.726或其他低码率语音编码来降低每路通话的数据量,但同时需要考虑设备兼容性、编解码处理、语音质量和转码需求。
关于ADPCM及G.726的工作方式,可继续查看G.726网络电话语音编码。
PCM在VoIP中的作用可以归纳为一条清晰链路:模拟语音先经过采样、量化和编码形成数字语音;G.711以8kHz采样和8bit码字形成64kbit/s的电话语音数据,再由RTP、UDP和IP协议封装后通过网络传输。理解采样率、编码位数和网络码率之间的区别,也就不会再把“8kHz采样”和“64kbit/s带宽”当成同一个参数。