语音波形编码与参量编码 LPC 的性能分析
摘要
本文深入探讨了语音的波形编码和参量编码 LPC(线性预测编码)两种方式的优缺点,详细阐述了以 20 毫秒语音帧传输为例,两种编码方式在发送端的处理过程以及接收端的解析过程,包含相关公式推导。同时,介绍了从编码速率、计算复杂度等方面衡量这两种编码方式性能的方法,并针对实例进行计算。
一、引言
在语音通信和处理领域,编码技术起着至关重要的作用。波形编码和参量编码 LPC 是两种常见的语音编码方式,它们各有优缺点。波形编码试图精确地重现原始语音的波形,能提供较高的语音质量,但通常需要较高的编码速率;参量编码 LPC 则通过提取语音的特征参数进行编码,能在较低的编码速率下实现语音传输,但语音质量相对较低。了解它们的性能差异,有助于在不同的应用场景中选择合适的编码方式。
二、波形编码与参量编码 LPC 的处理过程
2.1 波形编码处理过程
2.1.1 发送端处理
假设我们要处理一段 20 毫秒的语音帧,采样频率为 fsf_sfs。对于波形编码,常见的如脉冲编码调制(PCM)。
首先进行采样,根据采样定理,采样频率fsf_sfs需满足 fs≥2fmaxf_s\geq 2f_{max}fs≥2fmax,其中 fmaxf_{max}fmax 是语音信号的最高频率。设采样点数为 N=fs×0.02N = f_s\times0.02N=fs×0.02。
然后进行量化,将采样得到的模拟信号幅度值映射到有限个离散电平上。假设采用 b 位量化,量化电平数为 L=2bL = 2^bL=2b。量化过程可以表示为: x^(n)=Q[x(n)]\hat{x}(n)=Q[x(n)]x^(n)=Q[x(n)] 其中 x(n)x(n)x(n) 是采样值,x^(n)\hat{x}(n)x^(n) 是量化后的值,Q[⋅]Q[\cdot]Q[⋅] 是量化函数。
最后进行编码,将量化后的离散电平用二进制代码表示。例如,对于 b 位量化,每个采样值用 b 位二进制数表示。
2.1.2 接收端解析
接收端接收到二进制代码后,首先进行解码,将二进制代码还原为量化后的电平值。然后进行反量化,根据量化规则,将量化电平值近似还原为原始的采样值。最后,通过低通滤波器进行平滑处理,得到近似的原始语音信号。
2.2 参量编码 LPC 处理过程
2.2.1 发送端处理
同样对于 20 毫秒的语音帧,采样点数为 N=fs×0.02N = f_s\times0.02N=fs×0.02。
分帧与加窗:将语音信号分帧,每帧长度为 N,为减少频谱泄漏,使用汉明窗对每帧信号进行加窗处理。加窗后的信号 xm(n)=x(n+mN)w(n)x_m(n)=x(n + mN)w(n)xm(n)=x(n+mN)w(n),其中 w(n)w(n)w(n) 是汉明窗函数。
线性预测分析:对每帧加窗后的信号进行线性预测分析,计算线性预测系数 aka_kak(k=1,2,⋯ ,p)(k = 1,2,\cdots,p)(k=1,2,⋯,p),p 为预测阶数,通常取 (10 - 12)。线性预测的目标是用当前帧的过去 p 个样本的线性组合来预测当前样本,即 x^m(n)=∑k=1pakxm(n−k)\hat{x}_m(n)=\sum_{k = 1}^{p}a_{k}x_m(n - k)x^m(n)=∑k=1pakxm(n−k)。通过最小化预测误差 em(n)=xm(n)−x^m(n)e_m(n)=x_m(n)-\hat{x}_m(n)em(n)=xm(n)−x^m(n) 的均方值来确定线性预测系数 aka_kak。
增益计算:计算每帧信号的增益 GmG_mGm,可以通过计算预测误差信号 em(n)e_m(n)em(n) 的均方根值得到,即 Gm=1N∑n=0N−1em2(n)G_m=\sqrt{\frac{1}{N}\sum_{n = 0}^{N - 1}e_m^2(n)}Gm=N1∑n=0N−1em2(n)。
基音检测(对于浊音):判断每帧语音是浊音还是清音,并对于浊音帧检测其基音周期 T0T_0T0。
参数量化与编码:对计算得到的线性预测系数 aka_kak、增益 GmG_mGm 和基音周期 T0T_0T0(对于浊音帧)进行量化和编码,转换为二进制比特流发送。
2.2.2 接收端解析
接收端接收到二进制比特流后,进行解码,恢复出量化后的线性预测系数 a^k\hat{a}_ka^k、增益 G^m\hat{G}_mG^m和基音周期 T^0\hat{T}_0T^0(对于浊音帧)。然后进行反量化,得到近似的原始参数值 ak′a_k'ak′、Gm′G_m'Gm′ 和 T0′T_0'T0′。
根据反量化后的线性预测系数 ak′a_k'ak′,构建全极点合成滤波器,其系统函数为 :
H(z)=11−∑k=1pak′z−kH(z)=\frac{1}{1-\sum_{k = 1}^{p}a_{k}'z^{-k}}H(z)=1−∑k=1pak′z−k1
根据每帧语音的类型(浊音或清音)生成相应的激励信号 um(n)u_m(n)um(n)。对于浊音帧,根据基音周期 T0′T_0'T0′ 生成周期性的脉冲序列作为激励信号;对于清音帧,生成随机白噪声序列作为激励信号。
将激励信号 um(n)u_m(n)um(n) 输入到合成滤波器中,得到重建的语音信号 x^m(n)\hat{x}_m(n)x^m(n)。最后,将重建的语音信号 x^m(n)\hat{x}_m(n)x^m(n) 乘以反量化后的增益 Gm′G_m'Gm′,得到最终的重建语音信号 ym(n)=Gm′x^m(n)y_m(n)=G_m'\hat{x}_m(n)ym(n)=Gm′x^m(n)。
三、性能衡量指标及计算
3.1 编码速率
- 波形编码(PCM):编码速率 RPCM=b×fsR_{PCM}=b\times f_sRPCM=b×fs(bps),其中 b 是量化位数,fsf_sfs 是采样频率。例如,若 b=8b = 8b=8 位,fs=8000Hzf_s = 8000Hzfs=8000Hz,则 RPCM=8×8000=64000R_{PCM}=8\times8000 = 64000RPCM=8×8000=64000 bps。
- 参量编码 LPC:假设线性预测系数用 bab_aba 位量化,增益用 bgb_gbg 位量化,基音周期用 bpb_pbp 位量化,通常总位数较低(如每帧50位)。每帧时长为 T=0.02T = 0.02T=0.02 秒,帧移为 TsT_sTs 秒,通常等于帧长(无重叠),Ts=0.02sT_s =0.02sTs=0.02s。编码速率 RLPC=ba×p+bg+bp×ITsR_{LPC}=\frac{b_a\times p + b_g + b_p\times I}{T_s}RLPC=Tsba×p+bg+bp×I(bps),其中 I 是一个指示变量,浊音帧时 I=1I = 1I=1,清音帧时 I=0I = 0I=0。
- 典型速率:约 2.4kbps(如 50位/帧÷0.02s=2500bps)。
3.2 计算复杂度
- 波形编码(PCM):计算复杂度主要集中在采样、量化和编码过程。采样是简单的定时操作,量化是查找量化表的操作,编码是将量化值转换为二进制代码,计算复杂度较低。
- 参量编码 LPC:计算复杂度较高,主要体现在线性预测分析、基音检测等过程。线性预测分析需要计算自相关函数和求解线性方程组,计算量较大。
3.3 抗噪性能
- 波形编码(PCM):对噪声较为敏感,因为它直接对语音信号的波形进行编码,噪声会直接影响编码后的信号质量。可以通过计算误码率(BER)来衡量抗噪性能,BER=错误比特数传输的总比特数BER=\frac{错误比特数}{传输的总比特数}BER=传输的总比特数错误比特数。
- 参量编码 LPC:具有较好的抗噪性能,由于它是基于语音信号的特征参数进行编码,对噪声具有一定的鲁棒性。同样可以通过计算误码率来衡量其抗噪性能。
四、结论
本文详细比较了语音的波形编码和参量编码 LPC 的优缺点,阐述了它们在处理过程、性能衡量指标及计算方法等方面的差异。在实际应用中,应根据具体的需求,如对语音质量、编码速率、计算复杂度等的要求,选择合适的编码方式。