7.1概述7.2矢量量化的基本原理7.3失真测度7.4最佳矢量量化器和码本设计7.5降低复杂度的矢量量化系统7.6语音参数的矢量量化7.1概述矢量量化(VQ,即VectorQuantization)是一种极其重要的信号压缩方法。VQ在语音信号处理中占十分重要的地位。广泛应用于语音编码、语音识别和语音合成等领域。量化分为两类:*标量量化:将取样后的信号值逐个地进行量化。*矢量量化:将若干取样信号分成一组,即构成一个矢量,然后对此矢量一次进行量化。凡是要用量化的地方都可以采用矢量量化。矢量量化是实现数据压缩的一种有效方法,早在50和60年代就被用于语音压缩编码。直到70年代线性预测技术被引入语音编码后,矢量量化技术才活跃起来。80年代初,矢量量化技术的理论和应用研究得到迅速发展。采用矢量量化技术对信号波形或参数进行压缩处理,可以获得很好的效益,使存储要求、传输比特率需求或和计算量需求降低.采用矢量量化的效果优于标量量化的原因?矢量量化能有效的应用矢量中各分量之间的四种相互关联性质来消除数据中的冗余度。这四种相互关联的性质是线性依赖(相关性)、非线性依赖(统计不独立)、概率密度函数的形状和矢量量化的维数,而标量量化仅能利用线性依赖和概率密度函数的形状来消除冗余度。矢量量化研究的目的?针对特定的信息源和矢量维数,设计出一种最优化的量化器,在R(量化速率)一定的情况下,给出的量化失真尽可能接近D(R)(最小量化失真)。7.2矢量量化的基本原理标量量化是对信号的单个样本或参数的幅度进行量化;标量是指被量化的变量,为一维变量。矢量量化的过程是将语音信号波形的K个样点的每一帧,或有K个参数的每一参数帧构成K维空间的一个矢量,然后对这个矢量进行量化。标量量化可以说是K=1的矢量量化。矢量量化过程和标量量化过程相似。将K维无限空间划分为M个区域边界,然后将输入矢量与这些边界进行比较,并被量化为“距离”最小的区域边界的中心矢量值。矢量量化的定义将信号序列的每K个连续样点分成一组,形成K维欧式空间中的一个矢量,矢量量化就是把这个K维输入矢量X映射成另一个K维量化矢量。其中量化矢量构成的集合称为码书或码本,码书中的每个矢量称为码字或者码矢。}{iy}{iYiY},,{21KiNRYYYYY以K=2进行说明:当K=2时,所得到的是二维矢量。所有可能的二维矢量就形成了一个平面。记为(a1,a2),所有可能的(a1,a2)就是一个二维空间。如图7-1(a)所示图7-1矢量量化概念示意图矢量量化就是将这个平面划分为M块S1,S2,…,Si…SM,然后从每一块中找出代表值Yi(i=1,2….M),这就构成一个有M个区间的二维矢量量化器。图7-1(b)所示的是一个7区间的二维矢量量化器,即K=2,M=7。通常这些代表值Yi称为量化矢量。对一个矢量X进行量化,首先选择一个合适的失真测度,然后用最小失真原理,分别计算用量化矢量Yi替代X所带来的失真。其中最小失真值所对应的那个量化矢量,就是矢量X的重构矢量(或恢复矢量)。所有M个量化矢量构成的集合称为码书或码本;把码书中的每个量化矢量Yi(i=1,2….M)称为码字或码矢。不同的划分或不同的量化矢量选取就可以构成不同的矢量量化器。注:根据仙农信息论,矢量越长越好。实际中码书是不完备的,即矢量数是有限的,而对于任何一个实际应用来说,矢量通常是无限的。在实际运用中,输入矢量和码书中码字不匹配的情况下,这种失真是允许的。iY存在的问题一、如何划分M个区域边界。方法是:将大量欲处理的信号的矢量进行统计划分,进一步确定这些划分边界的中心矢量值来得到码书。二、如何确定两矢量在进行比较时的测度。这个测度就是两矢量间的距离,或以其中某一矢量为基准时的失真度。它描述了当输入矢量用码书所对应的矢量来表征时所付出的代价。图7-2矢量量化系统的组成工作过程:在编码端,输入矢量Xi与码书中的每一个码字进行比较,分别计算出它们的失真。搜索到失真最小的码字的序号(或该码字所在码书中的地址),这些序号就作为传输或存储的参数。在恢复时,根据此序号从恢复端的码书中找出相应的码字。由于两本码书完全相同,此时失真最小,所以就是输入矢量Xi的重构矢量。minjYjminjYminjY特点:传输存储的不是矢量本身而是其序号,所以据有高保密性能收发两端没有反馈回路,因此比较稳定矢量量化器的关键是编码器的设计,译码器只是简单的的查表过程。矢量量化的性能指标除了码书的大小M以外还有由于量化而产生的平均信噪比。矢量量化的准则:在给定码本大小K时使量化所造成的失真最小。矢量量化的设计:从大量信号样本中训练出好的码书,从实际效果出发寻找最好的失真测度定义公式,设计出最佳的矢量量化系统,以便用最少的搜索和计算失真的计算量,来实现最大可能的平均信噪比。7.3失真测度前面我们讲过设计矢量量化器的关键是编码器的设计。而在编码的过程中,就需要引入失真测度的概念。失真测度(距离测度):是将输入矢量Xi用码本重构矢量Yi来表征时所产生的误差或失真的度量方法,它可以描述两个或多个模型矢量间的相似程度。[1]p84失真测度是矢量量化和模式识别中一个十分重要的问题,选择合适与否直接影响系统的性能。失真是将输入信号矢量用码书的重构矢量来表征时的误差或所付出的代价。这种代价的统计平均值(平均失真)描述了矢量量化器的工作性。失真度选择必须具备的特性必须在主观评价上有意义,即小的失真应该对应于好的主观语音质量;必须是易于处理的,即在数学上易于实现,这样可以用于实际的矢量量化器的设计;平均失真存在并且可以计算;易于硬件实现失真测度主要有均方误差失真测度(即欧氏距离)、加权的均方误差失真测度、板仓-斋藤(Itakura-Saito)距离,似然比失真测度等,还有人提出的所谓的“主观的”失真测度。一、欧氏距离-均方误差设输入信号的某个K维矢量X,与码书中某个K维矢量Y进行比较,xi,yi分别表示X和Y中的各元素,则定义均方误差为欧氏距离:KYXYXyxKYXdTKiii)()()(1),(122)1(Ki几种其他常用的欧氏距离:1.r方平均误差KiriiryxKYXd11),(2.r平均误差rKiriiryxKYXd11']1[),(3.绝对值平均误差KiiiyxKYXd111),(4.最大平均误差iiKirrrMyxYXdYXd11max)],([lim),(二、线性预测失真测度用全极模型表示的线性预测方法,广泛应用于语音信号处理中。它在分析时得到的是模型的预测系数.仅由预测系数的差值,不能完全表征这两个语音信息的差别。应该直接由这些系数所描述的信号模型的功率谱来进行比较。222)()()(jjeAeXf当预测器的阶数,信号与模型完全匹配时,信号功率谱为:p信号的功率谱预测误差能量预测逆滤波器的频率响应222)()()(jpjeAeXf1ln),(2aRaffdTISTa相应的,设码书中某重构矢量的功率谱为则定义Itakura-Saito距离为piaaTirirrrRaa1)()(2)0()0(这种失真测度是针对线性预测模型、用最大似然准则推导出来,所以特别适用于LPC参数,描述语音信号的情况,常用于LPC编码中。我们由此又推导出两种线性预测色失真测度,他们比上述具有更好的性能,即)ln(ln),(22RaaaRaffdTTpLLR①对比似然比失真测度②模型失真测度11),(22RaaaRaffdTTpm注:这两种失真测度都仅仅比较两矢量的功率谱,而没有考虑其他能量信息。三、识别失真测度失真测度的定义)(),(),(EEgffdEfdLLR加权因子输入信号矢量的归一化能量码书重构矢量的归一化能量)()()(0)(FFddxxxxxxxxxxg当两矢量的能量接近时(即),忽略能量差异引起的影响;当两矢量能量相差很大时,即进行线性加权;而当能量差超过门限时,则为固定值dxEEFx7.4最佳矢量量化器和码本的设计最佳设计就是使失真最小最佳设计中,重要的问题是如何划分量化区间和确定量化矢量。这两个条件回答了两个问题。一、最佳划分二、最佳码书一、矢量量化器最佳设计的两个条件最佳矢量量化器满足的两个必要条件1)Voronoi分割条件(最近邻准则)对信号空间的分割应满足});,(),(:{liYXdYXdRXSilKl根据该条件可以对信号空间进行最佳划分,得到的称为一个胞腔lS2)Centroid质心条件子空间分割固定后,Voronoi胞元的质心就是量化器的码字][llSYXEY对于一般的失真测度和信源分布,很难找到质心的计算方法,但对于一般的分布和常用的均方失真测度,可以证明lSXllXNY1是中包含的矢量个数lS二、LBG算法1980年由Linde,Buzo和Gray提出,它是标量量化器中Lloyd算法的推广,在矢量量化中是一个基本算法。LBG算法由于其理论上的严密性、应用上的简便性以及较好的设计效果,得到了广泛的应用,并常被作为各种改进算法的基础LBG算法步骤第一步:初始化给出训练VQ码书所需的全部参考矢量X,X的集合用S表示;设定量化级数,失真控制门限,算法最大迭代次数L以及初始码书;设总失真;迭代次数的初始化为m=1},,,{)0()0(2)0(1NYYY)0(D第二步:迭代2)计算失真:1)根据最近邻准则将S分成N个子集,,┅,,即当时,下式成立:)(1mS)(mNS)(2mS)(1mSXljiYXdYXdmiml,),,(,()1()1(NiSXmlmmlYXdD1)1()()(),(4)计算相对失真改进量:3)计算新码字)(1)(miSXimiXNY)()()1()()()(mmmmmmDDDDD)(m将与失真门限值进行比较。若则转入6)否则转入5);)(m)(m:,,,)()(2)(1mNmmYYY5)若则转至6),否则m加1,转至1)Lm第三步:结束6)得到最终的训练码书,)()(2)(1,,,mNmmYYY并输出总失真)(mD为了避免迭代算法无限制循环下去,这里设置了两个阈值参数:最大迭代次数L和失真控制门限。的值设得远小于1,当时,表明再进行迭代运算失真得减小是有限的、可)(m以停止运算。L是限制迭代次数的参数,防止设置较低时迭代次数过多三、初始码书的选择①随机选取法②分裂法7.5降低复杂度的矢量量化系统•矢量量化系统主要由编码器和译码器组成:编码器主要由码书搜索算法和码书构成,译码器由查表方法和码书构成。•矢量量化器的研究主要围绕降低速率、减少失真和降低复杂度展开。•降低复杂度的设计方法大致分为两类:一类是无记忆的矢量量化器,另一类是有记忆的矢量量化器。一、无记忆的矢量量化系统无记忆矢量量化是指量化每一个矢量时都不依赖于此矢量前面的其他矢量,即每一个矢量都是独立量化的。1、全搜索矢量量化器前面我们介绍的LBG算法,在进行VQ编码时,采用的就是全搜索法,即对于每个输入矢量,比较它与每一个码书中的码字的失真,并将失真最小的码字标号作为输出2.树形搜索的矢量量化系统•树形搜索是减少矢量量化计算量的一种重要方法。•它又分为二叉树和多叉树两种:码字不象普通的码字那样随意放置,而是排列在一棵树的接点上,如图所示,码本尺寸为M=8的二叉树,它的码本中共包含14个码字。输入矢量X先与Y0和Y1比较,计算出失真d(X,Y0)和d(X,Y1)。如果后者较小,则走下面支路,同时送出“1”,同理,如果最后达到Y101,则送出的输出角标101。这就是矢量量化的过程。表7-1二叉树与全搜索的比较失真运算量比较运算量存储容量最佳程度全搜索M=8M=8M=8全体二叉树2log2M=62log2M=32(M-1)=14局部二叉树搜索的主要优点是计算量有很大减少而性能下降并不多,但存储量增加