K—L变换语音自适应压缩算法

2015-05-29 13:19李小航姜占才
电脑知识与技术 2015年10期

李小航 姜占才

摘要:为了实现数字语音的有效压缩,提出了一种基于K-L变换的语音自适应压缩算法。由语音帧向量构造协方差矩阵;通过对协方差矩阵的特征值分解,得到与帧对应的正交矩阵;用正交矩阵对帧向量作正交变换得到变换系数向量,并将其截短;由截短的变换系数向量重构帧向量;最后经抽取,实现对帧向量的压缩。在不同信噪比下对不同语音样本进行仿真实验,并同离散余弦变换压缩比较,实验表明,该算法不仅数据压缩率高、重构语音清晰和自然,而且同时实现语音良好的自适应增强。

关键词:K-L变换;离散余弦变换;自适应增强;数据压缩

中图分类号:TN9 文献标识码:A 文章编号:1009-3044(2015)10-0187-03

1 概述

语音信号作为一种自然信号,其时变性使得实际采样得到数字语音存在很大程度的冗余。因此,数字语音压缩技术的研究成为当今世界通信领域的热点之一[1-2]。目前的语音压缩算法主要有无损压缩和有损压缩两大类。其中,有损压缩算法能节约存储空间和降低数码率,实现高效压缩,是当前数字语音通信及存储的发展方向。随着计算机技术和数字信号处理技术的飞速发展,人们不断提出新的数字语音压缩技术。基于小波变换的数字语音压缩技术,压缩率高,重构语音清晰、自然,但其算法比较复杂[3-5]。利用离散余弦变换(DCT)的语音压缩方案,本质上是正交变换语音压缩,算法原理简单,且有快速算法,被广泛采用[6-7],但它不能实现帧间自适应。文献[8]提到了利用帧间自适应和帧内自适应的方法来提升压缩处理后的语音质量,取得了明显的效果,但其算法较繁琐不利于数字语音传输或存储。文献[9]提出了基于语音帧能量分级和帧间位置惯性的语音信号自适应压缩算法,在保证一定的恢复语音质量的前提下,此算法可以明显地减少语音信号的恢复时间,虽然算法复杂度相比文献[8]有了明显的降低,但文中提到的观测值是一个经验值,不容易求出。本文提出的基于K-L变换数字语音压缩方法,不仅算法简单、压缩率高、重构语音清晰、自然,而且由于具备帧间自适应,能方便、有效地实现语音的自适应去噪。

2 K-L变换及其压缩原理

2.1 K-L变换

K-L变换是Karhunen-Love变换的简称,这是一种特殊的正交变换,主要用于一维和二维信号的数据压缩。

一个宽平稳的实随机向量[x=x0,x1,…,xN-1T],其协方差矩阵[Cx]定义为:

式中[E?]代表求均值运算,[μx=Ex]是信号[x]的均值向量,[Cx]的元素

[Cxi,j=Exi-μxxj-μx=Cxj,i]

即协方差阵是对称的。显然,矩阵[Cx]体现了信号向量的各分量之间的相关性。若[x]的各分量互不相关,那么[Cx]中除对角线以外的元素皆为零。

K-L变换的思路是寻找正交矩阵[A],使得[A]对[x]的变换[y]的协方差阵[Cy]为对角矩阵。

由λ的N阶多项式

[λI-Cx=0]

求协方差矩阵[Cx]的特征值[λ0],[λ1],…,[λN-1],再由式

[CAi=λiAi],i=0,1,…,N-1 (2)

求协方差矩阵[Cx]的N个特征向量[A0],[A1],…,[AN-1],并将其归一化。由归一化的向量[A0],[A1],…,[AN-1]构造归一化的正交矩阵[A],即

[A=A0?A1?…?AN-1T]

计算[y=Ax]实现对信号[x]的K-L变换。

重构信号就是解逆变换,由下式完成

[x=A-1y=ATy] (3)

对[xn]做数据压缩,直接对[x]的变换[y]做压缩即可,即舍去[yn]中一部分分量。不失一般性,假定舍去[ym+1],[ym+2],…,[yN-1],这样,由[y0],[y1],…,[ym]恢复[xn]时,将只能是对[xn]的近似,即

[x∧=i=0myiAi] (4)

2.2 K-L变换语音压缩算法原理

语音信号具有短时平稳性,为此,将语音信号分成长度为160个样点的语音帧[xn],对其去直流后按(1)式构造协方差阵[Cx],特征值分解后构造正交变换阵[A],用[A]对[xn]作K-L变换得到变换后的信号[y];将[y]截短为长度为N的信号[y1];[y1]按(3)式进行K-L逆变换重构长度为160个点的语音信号。将160个点的重构语音信号抽取为N点,传输到解码端后再通过插值技术恢复为160点的语音帧,通过帧间拼接技术,合成出语音。K-L变换语音自适应压缩算法原理如图1所示。

3 离散余弦变换及其压缩原理

3.1 离散余弦变换(DCT)

Ahmed和Rao于1974年首次给出了离散余弦变换的定义。给定序列x(n),n=0,1,…,N-1,其离散余弦变换的定义为:

[X(k)=2Mc(k)m=0M-1x(m)cos(2m+1)kπ2M],k=0,1,…,M-1

逆变换定义为:

[x(m)=2Mk=0M-1c(k)X(k)cos(2m+1)kπ2M],m=0,1,…,M-1

其中,[c(0)=12],[c(k)=1],[k≠0]。

DCT的各行各列基向均是正交归一的。语音信号经过DCT变换后较大的系数集中在低频区域,较小的系数则集中在高频区域,具有很好的能量压缩性能,如图2所示。因此用部分DCT系数表示全部语音信号,可对数字化的语音信号进行压缩。

3.2 离散余弦变换语音压缩算法原理

语音信号属于非平稳随机信号,大量研究结果表明,语音信号具有短时平稳性。语音的特征参数在短时内基本保持不变,如短时过零率、短时能量及基音周期等。利用语音信号的短时平稳性的特点,将语音信号分成160点(20ms)的语音帧,每次仅对一帧语音信号进行离散余弦变换,再利用离散余弦变换后语音信号的能量主要集中在低频段的特点,去掉高频段的变换系数而只传输低频段的变换系数。

具体实现步骤:对一帧语音信号进行离散余弦变换后,根据语音信号能量在频域的集中性,取低频区域较大的变换系数值,舍去高频区域较小的变换系数值,通过离散余弦逆变换重构原始语音信号。

4 算法仿真实验

本文提出的算法按图1的算法原理用matlab语言编程,以文件名klt_comp.m存储;同时,对离散余弦变换压缩算法编程,以文件名dct_comp.m存储;在计算机上仿真实验。通过重构语音的波形显示,判定其算法的有效性。在仿真实验中,利用计算机上的录音机功能录制语音样本,全部样本都是8kHz采样8bit量化的线性PCM码。

4.1 重构语音波形显示

同一语音样本在信噪比为13dB时,离散余弦变换和K-L变换两种算法进行4倍压缩的实验结果。结果显示,对信噪比为13dB时,K-L变换的重构语音波形几乎逼近原始语音波形,而离散余弦变换的重构语音波形稍带有噪声的影响(图略)。图3是同一语音样本在信噪比为10dB时,离散余弦变换和K-L变换两种算法进行4倍压缩的实验结果。结果显示,对信噪比为10dB的带噪语音样本,K-L变换重构语音效果明显优于离散余弦变换重构语音的效果。

4.2 重构语音基音周期轨迹分析

图4是10dB下对语音的特征(基音周期)进行比较,因为基音周期是语音的重要特征,是辨别语义和语者的主要特征之一,也是判定重构语音效果的重要依据,许多语音处理系统都要依赖于基音周期。结果显示,利用K-L变换法重构语音的基音周期轨迹与原始语音基音周期轨迹的走势几乎一致,而DCT重构语音的基音周期轨迹没有K-L变换法重构语音的基音周期轨迹那么平滑,甚至部分帧的周期有减小或消失现象。这是由于DCT处理过程中

不能实现帧间自适应导致抗噪能力较差。

5 结束语

基于K-L变换的数字语音压缩方法不仅算法简单、压缩率高、重构语音清晰、自然,而且对语音实现帧间自适应,有效地实现自适应消噪。该算法有望用于数字语音多媒体存储和数字语音通信。

参考文献:

[1] 胡广书.数字信号处理[M].2版.北京:清华大学出版社,2003.

[2] 杨真真,杨震.语音压缩感知硬阈值梯度追踪重构算法[J].信号处理,2014,30(4):391-396.

[3] Chong Cha Keon, Arzawa Kiyoharu, Saito Takahiro, et al. Subband image coding with biorthgonal wavelets [J]. IEICE Trans Fundamentals,2001,75(7):871-881.

[4] 华容.基于不完全小波包分解的语音信号数据压缩[J].计算机工程与设计,2009,30(10):2471-2474.

[5] 周开利.基于子波变换的语音信号压缩[J].海南大学学报:自然科学版,2002,20(2):103.

[6] 符晓娟,杨万全.利用离散余弦变换的语音信号压缩方案[J].信息技术,2006(11):74-76.

[7] 张长青,陈砚圃.离散余弦小波包变换及语音信号压缩感知[J].声学技术,2014,33(1):36-40.

[8] 郭海燕,王天荆,杨震.DCT域的语音信号自适应压缩感知[J].仪器仪表学报,2010,31(6):1262-1268.

[9] 雷颖,钱永青,孙洪.帧间自适应语音信号压缩感知[J].信号处理,2012,28(6):895-897.