语音信号矢量量化设计及实现算法的matlab仿真毕业设计说明书.docx
《语音信号矢量量化设计及实现算法的matlab仿真毕业设计说明书.docx》由会员分享,可在线阅读,更多相关《语音信号矢量量化设计及实现算法的matlab仿真毕业设计说明书.docx(57页珍藏版)》请在冰豆网上搜索。
![语音信号矢量量化设计及实现算法的matlab仿真毕业设计说明书.docx](https://file1.bdocx.com/fileroot1/2022-10/9/0213a933-5a60-447c-8816-486d1d709ff8/0213a933-5a60-447c-8816-486d1d709ff81.gif)
语音信号矢量量化设计及实现算法的matlab仿真毕业设计说明书
引言
21世纪是信息的社会,各种科技领域的信息大爆炸。
数字信号的数据量通常很巨大,对存储器的存储容量,通信信道的带宽及计算机的处理速度带来压力,因此必须对其进行量化压缩来紧缩数据存储容量,较快地传输各种信号,并使发信机功率降低。
矢量量化(VQ)是一种极其重要的信号压缩方法,其在语音信号处理中占有十分重要的地位,广泛应用于语音编码,语音识别,语音合成等领域。
在许多重要的课题中,VQ都起着非常重要的作用。
采用矢量量化技术对信号波形或参数进行压缩处理,可以获得非常高的效益。
VQ不仅可以压缩表示语音参数所需的数码率,而且在减少运算量方面也是非常高效的,它还能直接用于构成语音识别和说话人识别系统。
语音数字通信的两个关键部分是语音质量和传输数码率。
但这两者是矛盾的:
要获得较高的语音质量,就必须使用较高的传输码率;相反,为了实现高效地压缩传输数码率,就很难得到良好的语音质量。
但是矢量量化却是一种既能得到高效压缩的数码率,又能保证语音质量的方法。
量化可以分为两大类:
一类是标量量化,一类是矢量量化VQ。
标量量化是把抽样后的信号值逐个进行量化,而矢量量化是先将k个抽样值组成k维空间中的一个矢量,然后将此矢量进行量化,它可以极大的降低数码率,优于标量量化。
各种数据都可以用矢量表示,直接对矢量进行量化,可以方便的对数据进行压缩。
矢量量化属于不可逆压缩方法,具备比特率低,解码简单,失真较小的优点。
矢量量化的发展大致可以分为两各阶段:
第一阶段约为1956至1977年。
1956年steinhaus第一次系统的阐述了最佳矢量量化的问题。
1957年,在loyd的“PCM中的最小平方化”一文中给出了如何划分量化区间和如何求量化值问题的结论。
约于此同时MAX也得出同样的结果。
虽然他们谈论的都是标量量化问题,但他们的算法对后面的矢量量化的发展有着深刻的影响。
1964年,NEWMAN研究了正六边形原理。
1977年,berger的‘率失真理论’一书出版。
总体来说,这一阶段的工作多是理论性的,但它为第二阶段的发展奠定了一定的基础。
第二阶段约为1978年至今。
1978年,buzo第一个提出实际的矢量量化器。
他提出的量化系统组成分为两步:
第一步将语音信号做线性预测分析,求出预测系数,第二步,对这些系数做矢量量化,于是得到压缩数码的语音编码器。
1980年,linde,buzo和gray将Loyd-max算法推广,发表了第一个矢量量化器的设计算法,通常称为LBG算法。
这就将矢量量化的研究向前推动了一大步。
这一时期,人们对矢量量化问题展开了全面的研究,其中主要是对失真测度的探讨,码书的设计,各种矢量量化系统的研究,快速搜索算法的寻找等等。
矢量量化研究的进展是很快的,1980年,美国加州公司在原来的编码速度为2.4kb/s的线性预测声编码器的基础上,仅将滤波系数从标量量化改为矢量量化,就可以使编码速率降低到800b/s,而声音质量基本未下降。
1983年,美国BBN公司研制了一种分段式声编码器。
由于该声码器采用了矢量量化,所以可以用150b/s的速率来传送可懂的话音。
近几十年来在已经提出的各种矢量量化方法和系数的基础上,更多更好的矢量量化方法渐渐出现。
在图像数据压缩和语音识别的应用方面,矢量量化研究也得到了很快的发展,提出各种各样的矢量量化系统,用硬件实现矢量量化系统的方法也越来越多
矢量量化压缩技术的应用领域非常广阔,如军事部门和气象部门的卫星(或航天飞机)遥感照片的压缩编码和实时传输、雷达图像和军用地图的存储与传输、数字电视和DVD的视频压缩、医学图像的压缩与存储、网络化测试数据的压缩和传输、语音编码、图像识别和语音识别等等。
第一章矢量量化器
1.1矢量量化概述
矢量量化技术涉及到许多学科的技术和理论知识,且应用范围非常广泛。
由于矢量量化的数据压缩具有编码简单,效率高,压缩比大等优点,所以矢量量化最先在语音,图像,视频这些媒体信息的压缩中取得了巨大的应用。
由于矢量量化的高压缩比,使得它可以应用在民用的高清电视,网络视频的实时传输上,也可以应用在军用国防的卫星遥感,雷达监测等方面。
矢量量化技术在其他方面的应用也发展十分迅速,如矢量量化技术已广泛地应用于语音识别,说话人识别,数字水印,文件检索,纹理压缩,移动通信等众多科学领域。
矢量量化的三大关键步骤和技术是:
码书设计,码字搜索和码字索引分配
前两项是矢量量化过程中的关键。
码书设计可以看成是一个统计聚类的过程。
从另一个角度来看,码书设计也是一个迭代过程,码书可以视为一个类似函数优化的问题,所以要搜索最优化的全局码书,就需要一种全局算法。
从以上分析可以看出,码书的优化是一个很重要的任务。
人们试图找到各种新的码书优化的算法和策略。
多种理论研究都应用到了码书算法,例如神经网络,模糊集合论,遗传算法等。
此外,先进的预测技术也是提高压缩比的一种方法。
1.1.1矢量量化的基本概念
要了解矢量量化首先要了解量化和标量量化等基本概念
量化就是把一个模拟信号值的连续范围分为若干相邻并具有唯一量值的区间,凡落在某区间的抽样信号样值都指定为该区间量值的过程。
量化分为两类:
标量量化和矢量量化
一标量量化
整个动态范围被分成若干个小区间,每个小区间有一个代表值,量化时落入小区间的信号值就用这个代表值代替,或者叫被量化为这个代表值。
这时的信号量是一维的,所以称为标量量化。
图(1-1)标量量化原理图
二矢量量化
矢量量化:
若干个标量数据组成一个矢量,矢量量化是对矢量进行量化,它把矢量空间分成若干个小区域,每个小区域寻找一个代表矢量,量化时落入小区域的矢量就用这个代表矢量代替,,或者叫着被量化为这个代表矢量。
在输入信号序列中,每K个连续样点可以组成一组K维欧式空间中的一个矢量,矢量量化就是把这个K维输入矢量X映射成另一个K维量化矢量。
其中量化矢量构成的集合
称为码书或码本,码书中的每个矢量
称为码字或码矢。
比如说,当K=2时,所得到的是二维矢量。
所有可能的二维矢量就构成了一个平面,记为(a1,a2),所有可能的(a1,a2)就是一个二维空间。
如图(a)所示,矢量量化就是将平面分成M小区域,即
.…..,
从每个小区域中找出代表向量
,这些代表向量的集合就是有M个区间的二维矢量量化器。
若要对落在二维矢量空间中的一个模拟矢量
进行量化,首先要选择一个合适的失真测度,而后利用最小失真原则,分别计算用量化矢量
替代X所带来的失真。
其中最小失真值所对应的那个量化矢量
中的某一个,就是模拟矢量X的重构矢量(或称恢复矢量)。
通常把所有M个量化矢量构成的集合
称之为码书(codebook)或码本。
码书中的量化矢量称为码字(codeword)或码矢(codevector),例如图(b)中所示的矢量量化器的码书
,其中每个量化矢量
称为码字或码矢。
不同的划分或不同的量化矢量选取就可以构成不同的矢量量化器。
(a)(b)
图(1-3)矢量量化示意图
根据上面对矢量量化的描述,我们可以给矢量量化以下的定义:
矢量量化是把一个K维模拟矢量
映射成为另一个K维量化矢量,其数学表达式为
式(1-1)
式(1-2)
式中:
X表示输入矢量;
表示信源空间;
表示K维欧氏空间;Y表示量化矢量(码字或码矢);
表示输出空间(即码书);
表示量化符号;N表示码书的大小(即码字的数目)。
矢量量化系统通常可以分解为两个集合的映射,即
式(1-3)
式中,
是编码器,它是将输入矢量
映射为信道符号集
中的一个元
;
是译码器,它是将信道符号
映射为码书中的一个码字
,即
式(1-4)
式(1-5)
1.1.2矢量量化步骤
矢量量化共有三个关键技术,即:
码书设计,码字搜索和码字索引分配。
其中前两项最关键
一码书设计
对于矢量量化首先要解决的问题是设计出一个性能好的码书。
如果没有码书,那么编码将根本无法实现。
如果用平方误差测度作为失真测度并且训练矢量数为N,想要生成含有M(M那么设计码书的过程就要找到一种最佳方案把N个训练矢量分成M类,而把这M类的质心矢量作为码书的码字。
所以,寻求一种有效的算法,使尽可能找到全局最优或接近全局最优的码书来提高码书性能才是研究码书设计算法的目的,从而减少计算的复杂程度。
二码字搜索
矢量量化码字搜索算法是当码书已经设计好的时候,输入给定矢量,在码书中搜索与输入码字间失真最小的码字[1]。
三码字索引分配
在矢量量化参与的编码和解码系统中,如果信道有噪声,则在信道左端的索引i经过信道传输输出索引j,这样就会导致在解码端引入额外的失真。
码字索引进行重新分配可以有效的减少这种失真
对于矢量量化来说,设计性能好的码书是矢量量化最为关键的问题。
好的码书能最大程度的提高矢量量化的效果,使得恢复后的矢量,语音,图像和原来的矢量,语音,图像尽可能的相似。
1.2矢量量化器概述
矢量量化在实际中的应用实现就是矢量量化器。
矢量量化器在实际生产生活中的应用非常广泛,特别是在多媒体信息中。
矢量量化技术的核心是矢量量化器的设计。
1978年第一个实际的矢量量化器发明。
在这么多年的发展中矢量量化技术被不断的推出新的设计。
1.2.1矢量量化器原理
矢量量化器可以分解为两个部分:
编码器和解码器。
在编码端,输入矢量X与码书(
)中的每一个或部分码字进行比较,分别计算它们的失真,搜索到失真最小的码字
的序号
(或此码字所在码书中的地址),并将
的编码信号通过信道传输到译码端;在译码端,先把信道传来的编码信号译成序号
,再根据序号
(或码字
所在地址),从码书(
)中查出相应的码字。
由于码书(
)与码书(
)是一样的,此时失真
最小,所以
就是输入矢量X的重构矢量(恢复矢量)。
很明显,由于在信道中传输的并不是矢量
本身,而是其序列号
的编码信号,所以传输速率还可以进一步提高。
矢量量化器原理框图如下:
图(1-4)矢量量化器原理框图
1.2.2失真测度
设计矢量量化器的关键是编码器的设计,而译码器的工作仅是一个简单的查表过程。
在编码的过程中,需要引入失真测度的概念。
前已指出,失真是将输入信号矢量用码书的重构矢量来表征时的误差或付出的代价,而这种代价的统计平均值(平均失真)描述了矢量量化器的工作特性。
失真测度是以什么样的方法来反映用码字
代替信源矢量
时所付出的代价,即
式(1-6)
式中,
表示求期望。
在矢量量化器的设计中,失真测度的选择是很重要的,失真测度选用得合适与否,直接影响系统的性能。
失真测度主要有均方误差失真测度(即欧氏距离),加权的均方误差失真测度,板仓-斋藤似然比距离,似然比失真测度等,,它们在语音信号处理中常被应用于语音波形矢量量化,线性预测参数矢量量化和孤立词识别的矢量量化中。
在本毕业设计中,各种算法中涉及到计算失真的部分均采用的是欧氏距离-均方误差。
欧氏距离-均方误差的定义如下:
设输入信号的某个K维矢量X,与码书中某个K维矢量Y进行比较,
分别表示X和Y中的各元素(
),则定义均方误差为欧氏距离,即有
式(1-7)
这里,
的下标2表示平方误差。
第二章矢量量化器算法研究
经过多年的研究,矢量量化算法已有不少,包括:
LBG算法,K均值算法(K-Means),模拟退火算法,K均值修正算法(MKM),链映射法,最邻近算法,预测矢量量化法(PreVQ),乘积矢量量化法等等。
本章选取LBG算法,覆盖算法和PNN算法三种算法进行研究。
2.1最佳码本设计
最佳矢量量化器的码本设计也被称为最佳码本设计,即从大量的输入信号样本中训练出一个好的码本,在一定的条件下,矢量量化