一种改进的线性预测语音编码技术及实现
Computer Engineering and Applications 计算机工程与应用2009,45(15)163
一种改进的线性预测语音编码技术及实现
纪友芳,刘桂斌JI You-fang ,LIU Gui-bin
中国石油大学(华东)计算机与通信工程学院,山东东营257061College of Computer and Communication Engineering ,China University of Petroleum ,Dongying ,Shandong 257061,China E-mail :[email protected]
JI You -fang ,LIU Gui -bin.Improved linear predictive speech coding technique and realizes.Computer Engineering and
(15):Applications ,2009,45163-165. )is an important technology to realize speech coding.In this paper ,Abstract :The Linear Prediction Coding (LPC the linear pre -
diction coding technology ’s realization is introduced ,and an improved sound excited linear prediction speech coding method is recommended.Finally ,this paper compares the simple LPC speech coding and the sound excited LPC speech coding.The experimen -tal results demonstrate that the method can achieve speech coding well ,moreover the sound effect is more ideal than simple LPC. (LPC );(DCT );Key words :speech coding ;Linear Prediction Coding Discrete Cosine Transform MATLAB 摘
要:线性预测编码是实现语音编码的一项重要技术,介绍了线性预测编码技术的实现,提出一种改进型的声激励线性预测语
音编码方法。最后,将简单LPC 语音编码与声激励LPC 语音编码进行比较。实验结果表明,该方法能够很好地实现语音编码,声音效果也比简单LPC 更理想。
关键词:语音编码;线性预测编码;离散余弦变换;MATLAB
文章编号:(2009)DOI :10.3778/j.issn.1002-8331.2009.15.0471002-833115-0163-03
文献标识码:A
中图分类号:TN912.3
1前言2简单LPC 音码器
语音编码是将当前语音信号进行变换,得到一种更紧凑的
形式,使其能够以占用更小内容空间的方式传送出去。语音编码目前主要分为三类:波形编码、参数编码和混合编码[1]。混合编码是结合前两类编码方法的优点而发展起来的,波形编码与参数编码的主要区别在于重构的语音时域信号是否在波形上尽量与原始信号一致。波形编码力图使重构后的语音时域信号的波形与原语音信号波形保持一致,它具有适应能力强、话音质量好等优点,但需要用到的编码速率较高。参数编码根据对声音形成机理的分析,在以重构语音信号具有足够的可懂性的原则上,通过建立语音信号的产生模型,提取代表语音信号特征的参数来编码,而不一定在波形上与原始信号匹配。在频域上该模型对应具有一定零极点分布的数字滤波器,编码器需要发送滤波器参数和相关的特征值。由于话音的短时平稳性,所以模型特征参数更新的频度较低,这就有效的降低了编码比特率,可以低于2.4kb/s甚至以下。本文中的语音编码采用一种改进的LPC-10技术。实验中使用LPC 技术对三男二女读语句的语音信号进行编码,待编码的语音信号是宽频信号,频率范围从0到8kHz ,在100ms 的最大端对端延迟情形下,采样频率取16kHz 。实验结果表明声激励LPC 方法比简单LPC 方法得到的整个语句声音效果要更好一些。
线性预测编码(LPC )是基于全极点模型假设,采用时域均
方误差最小准则来估计模型参数的,它们能够较准确的表征语音信号的频谱幅度和声道特性,而运算量也不大,应用这组模型参数能够有效的降低语音信号编码的比特率。
如:音高、共振峰LPC 方法可估计出一些基本的语音参数,
和频谱。简单LPC 音码器的结构图,如图1所示。
(n )s
LPC
分析器
编码器
信道
解码器
(n )LPC sout
合成器
音高检测器
发送端接收端
图1简单LPC 音码器的结构图
2.1实现原理
一个语音的采样能够用过去若干LPC 方法的基本思想是:
个语音采样的线性组合来逼近,在有限的时间间隔内使原始语音信号和估计得到的语音信号间的平方误差最小,进而求取一系列唯一的预测系数,预测系数每帧估计一次。LPC 模型是以系数a i 和增益G 为模型参数的全极点模型(AR )。时变数字滤波器的传递函数为[2]:
(z )H =G
1-Σa Z ΣΣ
p
-i
i =1
i
(1)
作者简介:纪友芳(1953-),男,高级工程师,硕士生导师,主要研究方向:计算机智能控制、计算机测控技术;刘桂斌(1980-),男,硕士研究生,主要
研究方向:人工智能及应用。
收稿日期:2008-03-24
修回日期:2008-08-29
1642009,45(15)Computer Engineering and Applications 计算机工程与应用
(n )s
LPC
分析器激励检测器
编码器
信道
解码器
(n )LPC sout
合成器
…,{a i }预测系数,i =1,p ,p 为模型的阶数。增益因子G 由下式计算得到[3]:
2)(2)G =s (i ΣM i =1
对于LPC-10算法而言P 为10,本文的改进算法使用18,即,只有前18个系数传输到LPC 音码器。用于计算预测系数的最常用方法是协方差法和自相关法。采用自相关法,原因在于该方法能保证式(1)中多项式的根总是位于单位圆内部,从
M
姨
发送端接收端
图2声激励LPC 音码器的结构图
检测,合成语音时使用一个脉冲序列,对激励后的信号给出更
好的估计。进而使用LPC 分解器的传输函数对每一帧输入信号进行滤波,为获得高压缩率,需要对滤波后的残差信号实施离散余弦变换(DCT ),按每一帧作DCT 变换,对变换域系数量化编码。因DCT 在其一阶少量系数中包含了信号的大部分能量,所以压缩信号时仅传输包含大部分能量的系数。测试与仿真表明,这些系数甚至可以仅用4bit 量化,接收机则简单的实施一个反DCT 变换,利用获得的结果信号来激励出声音。
而保证系统传递函数H (z )稳定性。对于自相关法可用Levin -
son-Durbin [4]递推算法计算所需的参数。该算法过程如下:
)计算自相关系数R n (i ),…,(1j =0,1,p ;
(2)(0);E =R n
(3)i =1;(4)开始按如下公式进行递推运算:k i =R n (i )-Σa j
j =1
(0)
Σ
i -1
(i -1)
(i-j )E R n
3.2
(3)(4)
离散余弦变换
设一帧语音信号s (n ),帧长为N ,可以形成一0≤n ≤N -1,
(i -1)
a i =k i a j =a j
(i )(i )
(i -1)
(i )
个矢量:
(5)(6)
(0),(1),…,(N -1)X =[s s s ]
N 点的DCT 正变换为:(k )(n )(k )X c =Σx c cos
n =0N -1
T
(12)
…,-k i a i-j ,j =1,i -1
2
(i -1)
(i -1)
(1-k i )E =E
(5)使i=i+1,若i=p,则算法结束退出,否则返回第(4)步,按式(3)到式(6)进行递推。a j 表示第i 阶预测系数的第j 个预经递推计算后,可测系数,E 为第i 阶预测器的预测残差能量,
得i =1,…,2,p 各阶预测器的解。最终解为:
(p )
赞=a ,…,a j =1,2,p j j
(i )
(i )
(2n +1)k π
≤2N
(13)
其中,0≤n ≤N -1。
DCT 反变换为:
(2n +1)k π1(n )(k )(k )(14)x =ΣX c c cos
2N N n =0
其中,式中,0≤n ≤N -1,
(k =0)1
(k )(15)c =
(1≤k ≤N -1)姨可以证明,DCT 与用N 个零点填充矢量X 而得到的2N 点
[7]
函数的离散傅里叶变换(DFT )有关。令y (n )为X 的填充形式,设Y 的DFT 为:
N -1
≤
(7)
和
(0)(1-k i )E =R n 仪
i =1
(i )
(p )
p
2
≤
(8)
由于各阶预测器的预测残差能量E 都是非负的,因此由
式(6)可以推知参数k i 必定满足:
…,|k i |≤1,i =1,2,p
(i )
(9)
(k )(n )Y =Σy W
n =0
N -1
N -1
nk
(16)
且E 随着预测器阶数的增加而减少,参数k i 称为反射系数(PARCOR )。可以证明式(9)是保证系统H (z )稳定的充要条件。
式中,(-j 2π/2N )由于填零的原因,求和计算到N -1为止,W =exp
(k )Y =W
-k /2
2.2预加重滤波器
预加重滤波器可以加强语音中的高频共振峰,使语音短时谱与残差谱变得更平坦,从而提高谱参数估值的精确性。语音信号经历了-6dB/倍频的频谱衰减,为抵消这种效应,使用如下预加重滤波器[5-6]:
(n )(n )(n -1)y =x-ax 其中,(n )为输入信号,(n )为输出信号,x y a 取0.95。
其传递函数为:
(z )H pw =1-0.9375z
-1
(n )W Σy
n =0
(n +1/2)k
(17)
和的实数部分为:对实数y 来说,(2n +1)k π(n )cos Σy
2N
n =0N -1
(18)
因此X 的DCT 为:
(10)
(k )(k )X c =cRe[W
-k /2
(k )Y ](19)
上式表明,利用这个关系可获得计算DCT 的快速算法,同时频
谱包络的信息可以从DCT 得到。
(11)
3声激励LPC 音码器
简单LPC-10音码器的最大缺陷在于对浊音的激励不强,
4性能分析及实验结果
4.1比特率
计算出两种方法所需比特率,如表1、2所示。计算时下述参数不变:语音信号带宽:采样率:窗宽B =8kHz ;Fs =16kHz ;(帧):(320个采样点);重叠:(为实现完全重构,需20ms 10ms 要重叠处理)。从而,实际的窗口宽度为30ms (包含480个采样点);每秒有50帧信号;LPC 模型预测器的系数个数为18。
一个解决方案是使用声激励LPC 音码器来提高声音质量。其
结构图,如图2所示。
3.1基本思想
声激励LPC 音码器的主要思想是:避免对音高的非精确
纪友芳,刘桂斌:一种改进的线性预测语音编码技术及实现
表1
简单LPC 音码器比特率
每帧位数
预测器系数增益音高周期浊音/清音切换
合计总比特率
18×8=144
561156
50×156=7800bit/s
预测器系数
增益DCT 系数合计总比特率
2009,45(15)165
表2带DCT 处理的声激励LPC 音码器比特率
每帧位数18×8=144
540×4=160309
50×309=15450bit/s
LPC 的波形看起来更接近原始声音。
MATLAB 实验用到的main.m 源文件如下:
%main.m clear all ;clc ;
%TheThird Man ’s speech ‘MaleThree.wav ’;InputFilename=%read the wave file
(InputFilename );Fs ,bits]=wavread[inspeech,
);outspeech1=speechcoder1(inspeech );outspeech2=speechcoder2(inspeech %display the results (1);figure
(3,);(inspeech );subplot 1,1plot grid ;(3,);(outspeech1);subplot 1,2plot grid ;(3,);(outspeech2);subplot 1,3plot grid ;
(‘Press a key to play the original sound! ’);disp pause ;
(inspeech ,);soundsc Fs
(‘Press a key to play the LPC compressed sound! ’);disp pause ;
(outspeech1,);soundsc Fs
‘Press a key to play the voice -excited LPC compressed disp ();sound! ’
pause ;
(outspeech2,);soundsc Fs
4.2客观性能分析
实验中使用MATLAB 7.0提供的fuction 函数定义了一个
“segsnr (x ,)”函数,用来测量原始语音文件对编码及重构后的y
语音文件间的部分信噪比(Segmental Signal to Noise Ratio ,)。计算SNR 之前将信号归一化,获得结果如表3所示。SEGSNR
[1]
表3简单LPC 和声激励LPC 的信噪比
简单LPC/dB-24.89-24.83-24.85-23.90-24.79
声激励LPC/dB
0.54300.75560.59450.23210.7612
音码器类型SNR1SNR2SNR3SNR4SNR5
(1)“The future looks beautiful ”;MaleOneSpeech :
):It ’;(2MaleTwoSpeech “s easy to tell the depth of a well ”(3)“Glue the sheet to the dark blue MaleThreeSpeech :;background ”(4)“Kick the ball straight and follow FemaleOneSpeech :;through ”(5)“A pot of tea helps to pass the FemaleTwoSpeech :。evening ”
由表3可知,简单LPC 得到的声音非常嘈杂,具有负的而声激励LPC 编码获得的声音,虽然SNR 有一个很小的SNR ;
正数,但效果要远胜于第一个结果。
5结论
LPC 方法在传输语音信号方面的最大优点是极大的减少
了数据传输的比特率,从表1、但其缺点是声音质2可以看出,量较差,这严重影响了它的可用性。基于上述不足,提出了一种改进的声激励LPC 方法,该方法对于原始信号的更强关联可产生一个更精确的声音复制,而不增加计算复杂性及延迟。实验结果表明,声激励LPC 方法对语音编码问题的解决是行之有效的。
4.3实验结果
用MATLAB 7.0所做的实验结果如图3所示,通过比较原
始语音与简单LPC 重构后的语音和声激励LPC 重构后的语音,可以看出,简单LPC 音码器的结果几乎不可辨认,其声音听起来像在窃窃私语,噪声感非常强烈;而声激励LPC 重构得到的声音更类似于说话,虽然也有一些噪音,但单词很容易理解,整个语句声音效果也不错。和简单LPC 结果相比,声激励
0.10-0.1
020-200.10-0.1
1
2
3
4
5
6
7×104
1
2
3
4
5
6
7×104×104
1
2
3
4
5
6
7
参考文献:
机械工业出版社,[1]赵力. 语音信号处理[M].北京:2003.
合[2]汪憾铭. 嵌入式系统中语音编码压缩技术的研究与应用[D].安徽:
肥工业大学,2007.
陈亮,杨吉斌,等. 现代语音处理技术及应用[M].北京:机械[3]张雄伟,
工业出版社,2003.
[4]彭远疆. 基于线性预测编码的低速率语音编码算法的研究[D].四川:
电子科技大学,2005.
[5]Wu Gin -der ,Zhu Zhen -wei.Chip design of LPC -cepstrum for
speech recognition[C]//Proceedingsof the 6th International Confer -ence on Computer and Information Science.IEEE Computer Soci -(13):ety ,2007,1143-47.
Teague K A.Algorithm compatible improvements for [6]Andrews W D ,
FS-1016CELP[C]//Proceedingsof the 34th Asilomar Conference on Signals ,Systems 2000:1454-1458.
张磊,郑铁然,等. 语音信号处理[M].北京:清华大学出版[7]韩纪庆,
社,2004.
and
Computers.Pacific
Grove.CA :IEEE
Press ,
(a )
原始语音信号
(b )简单LPC-10
语音信号
(c )声激励LPC
语音信号图3“MaleThree ”语句的语音信号波形