语音信号矢量量化设计及实现算法的matlab仿真毕业设计说明书Word下载.docx
- 文档编号:850949
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:46
- 大小:184.76KB
语音信号矢量量化设计及实现算法的matlab仿真毕业设计说明书Word下载.docx
《语音信号矢量量化设计及实现算法的matlab仿真毕业设计说明书Word下载.docx》由会员分享,可在线阅读,更多相关《语音信号矢量量化设计及实现算法的matlab仿真毕业设计说明书Word下载.docx(46页珍藏版)》请在冰点文库上搜索。
矢量量化研究的进展是很快的,1980年,美国加州公司在原来的编码速度为2.4kb/s
的线性预测声编码器的基础上,仅将滤波系数从标量量化改为矢量量化,就可以使编码速率降低到800b/s,而声音质量基本未下降。
1983年,美国BBN公司研制了一种分段式声编码器。
由于该声码器采用了矢量量化,所以可以用150b/s的速率来传送可懂的话音。
近几十年来在已经提出的各种矢量量化方法和系数的基础上,更多更好的矢量量化方法渐渐出现。
在图像数据压缩和语音识别的应用方面,矢量量化研究也得到了很快的发展,提出各种各样的矢量量化系统,用硬件实现矢量量化系统的方法也越来越多
矢量量化压缩技术的应用领域非常广阔,如军事部门和气象部门的卫星(或航天飞机)遥感照片的压缩编码和实时传输、雷达图像和军用地图的存储与传输、数字电视和DVD的视频压缩、医学图像的压缩与存储、网络化测试数据的压缩和传输、语音编码、图像识别和语音识别等等。
第一章矢量量化器
1.1矢量量化概述
矢量量化技术涉及到许多学科的技术和理论知识,且应用范围非常广泛。
由于矢量量化的数据压缩具有编码简单,效率高,压缩比大等优点,所以矢量量化最先在语音,图像,视频这些媒体信息的压缩中取得了巨大的应用。
由于矢量量化的高压缩比,使得它可以应用在民用的高清电视,网络视频的实时传输上,也可以应用在军用国防的卫星遥感,雷达监测等方面。
矢量量化技术在其他方面的应用也发展十分迅速,如矢量量化技术已广泛地应用于语音识别,说话人识别,数字水印,文件检索,纹理压缩,移动通信等众多科学领域。
矢量量化的三大关键步骤和技术是:
码书设计,码字搜索和码字索引分配
前两项是矢量量化过程中的关键。
码书设计可以看成是一个统计聚类的过程。
从另一个角度来看,码书设计也是一个迭代过程,码书可以视为一个类似函数优化的问题,所以要搜索最优化的全局码书,就需要一种全局算法。
从以上分析可以看出,码书的优化是一个很重要的任务。
人们试图找到各种新的码书优化的算法和策略。
多种理论研究都应用到了码书算法,例如神经网络,模糊集合论,遗传算法等。
此外,先进的预测技术也是提高压缩比的一种方法。
1.1.1矢量量化的基本概念
要了解矢量量化首先要了解量化和标量量化等基本概念
量化就是把一个模拟信号值的连续范围分为若干相邻并具有唯一量值的区间,凡落在某区间的抽样信号样值都指定为该区间量值的过程。
量化分为两类:
标量量化和矢量量化一 标量量化
整个动态范围被分成若干个小区间,每个小区间有一个代表值,量化时落入小区间的信
号值就用这个代表值代替,或者叫被量化为这个代表值。
这时的信号量是一维的,所以称为标量量化。
图(1-1)标量量化原理图
二矢量量化
矢量量化:
若干个标量数据组成一个矢量,矢量量化是对矢量进行量化,它把矢量空间分成若干个小区域,每个小区域寻找一个代表矢量,量化时落入小区域的矢量就用这个代表矢量代替,或者叫着被量化为这个代表矢量。
在输入信号序列中,每K个连续样点可以组成一组K维欧式空间中的一个矢量,矢量量化就是把这个K维输入矢量X映射成另一个K维量化矢量。
其中量化矢量构成的集合y={Y1,Y2,,Y7}称为码书或码本,码书中的每个矢量Yi称为码字或码矢。
比如
说,当K=2时,所得到的是二维矢量。
所有可能的二维矢量就构成了一个平面,记为
(a1,a2),所有可能的(a1,a2)就是一个二维空间。
如图(a)所示,矢量量化就是将平面分成M小区域,即S1,S2,,SM,从每个小区域中找出代表向量Yi,这些代表向量的
集合就是有M个区间的二维矢量量化器。
若要对落在二维矢量空间中的一个模拟矢量X=(a1,a2)进行量化,首先要选择一个合适的失真测度,而后利用最小失真原则,分别计算用量化矢量Yi(i=1,2, ,7)替代X
所带来的失真。
其中最小失真值所对应的那个量化矢量Yi(i=1,2, ,7)中的某一个,就
是模拟矢量X的重构矢量(或称恢复矢量)。
通常把所有M个量化矢量构成的集合{yi}称之为码书(codebook)或码本。
码书中的量化矢量称为码字(codeword)或码矢
(codevector),例如图(b)中所示的矢量量化器的码书y={Y1,Y2, ,Y7},其中每个量
化矢量Y1,Y2, ,Y7称为码字或码矢。
不同的划分或不同的量化矢量选取就可以构成不同
的矢量量化器。
(a) (b)
图(1-3)矢量量化示意图
根据上面对矢量量化的描述,我们可以给矢量量化以下的定义:
矢量量化是把一个K维模拟矢量XÎ
xÎ
Rk映射成为另一个K维量化矢量,其数学
表达式为
Y=Q(X)
YÎ
yN={Y1,Y2,.....,YNYiÎ
Rk}
式(1-1)式(1-2)
式中:
X表示输入矢量;
x表示信源空间;
Rk表示K维欧氏空间;
Y表示量化矢量(码字或码矢);
yN表示输出空间(即码书);
Q(·
)表示量化符号;
N表示码书的大小(即
码字的数目)。
矢量量化系统通常可以分解为两个集合的映射,即
Q=ab
式(1-3)
N
式中,a是编码器,它是将输入矢量XÎ
Rk映射为信道符号集I
={i,i,......,i}
12
中的一个元ij;
b是译码器,它是将信道符号ij映射为码书中的一个码字Yi,即
a(X)=ijb(ij)=Yi
(XÎ
x,ijÎ
IN(ijÎ
IN,YÎ
i
)
yN)
式(1-4)式(1-5)
1.1.2矢量量化步骤
矢量量化共有三个关键技术,即:
码书设计,码字搜索和码字索引分配。
其中前两项最关键
—码书设计
对于矢量量化首先要解决的问题是设计出一个性能好的码书。
如果没有码书,那么编码将根本无法实现。
如果用平方误差测度作为失真测度并且训练矢量数为N,想要生成含有M(M<
N个)码字的码书。
那么设计码书的过程就要找到一种最佳方案把N个训练矢量分成M类,而把这M类的质心矢量作为码书的码字。
所以,寻求一种有效的算法,使尽可能找到全局最优或接近全局最优的码书来提高码书性能才是研究码书设计算法的目的,从而减少计算的复杂程度。
二码字搜索
矢量量化码字搜索算法是当码书已经设计好的时候,输入给定矢量,在码书中搜索与输入码字间失真最小的码字[1]。
三码字索引分配
在矢量量化参与的编码和解码系统中,如果信道有噪声,则在信道左端的索引i经过信道传输输出索引j,这样就会导致在解码端引入额外的失真。
码字索引进行重新分配可以有效的减少这种失真
对于矢量量化来说,设计性能好的码书是矢量量化最为关键的问题。
好的码书能最大程度的提高矢量量化的效果,使得恢复后的矢量,语音,图像和原来的矢量,语音,图像尽可能的相似。
1.2矢量量化器概述
矢量量化在实际中的应用实现就是矢量量化器。
矢量量化器在实际生产生活中的应用非常广泛,特别是在多媒体信息中。
矢量量化技术的核心是矢量量化器的设计。
1978年第一个实际的矢量量化器发明。
在这么多年的发展中矢量量化技术被不断的推出新的设计。
1.2.1矢量量化器原理
矢量量化器可以分解为两个部分:
编码器和解码器。
在编码端,输入矢量X与码书
(I)中的每一个或部分码字进行比较,分别计算它们的失真,搜索到失真最小的码字Yi的序号i(或此码字所在码书中的地址),并将i的编码信号通过信道传输到译码端;
在译码端,先把信道传来的编码信号译成序号i,再根据序号i(或码字Yi所在地址),从码书(II)中查出相应的码字。
由于码书(I)与码书(II)是一样的,此时失真D(X,Yi)最小,所以Yi就是输入矢量X的重构矢量(恢复矢量)。
很明显,由于在信道中传输的并不是矢量Yi本身,而是其序列号i的编码信号,所以传输速率还可以进一步提高。
失真测度
d(X,Y)
码书(I)
Y1,Y2, ,YN
码书(II)
输入矢量
VQ编码器
VQ解码器
Y=Q(X)
X
计算mind(X,Yi)
信道或存储器
寻找Yi
置a(X)=i
b(i)=Yi
矢量量化器原理框图如下:
1.2.2失真测度
编码端 译码端
图(1-4)矢量量化器原理框图
设计矢量量化器的关键是编码器的设计,而译码器的工作仅是一个简单的查表过程。
在编码的过程中,需要引入失真测度的概念。
前已指出,失真是将输入信号矢量用码书的重构矢量来表征时的误差或付出的代价,而这种代价的统计平均值(平均失真)描述了矢量量化器的工作特性。
失真测度是以什么样的方法来反映用码字Yi代替信源矢量X时所付出的代价,即
D=E[d(X,Q(X))]
式(1-6)
式中,E[.]
表示求期望。
在矢量量化器的设计中,失真测度的选择是很重要的,失真测度选用得合适与否,直接影响系统的性能。
失真测度主要有均方误差失真测度(即欧氏距离),加权的均方误差失真测度,板仓-斋藤似然比距离,似然比失真测度等,它们在语音信号处理中常被应用于语音波形矢量量化,线性预测参数矢量量化和孤立词识别的矢量量化中。
在本毕业设计中,各种
算法中涉及到计算失真的部分均采用的是欧氏距离-均方误差。
欧氏距离-均方误差的定义如下:
设输入信号的某个K维矢量X,与码书中某个K维矢量Y进行比较,xi,yi分别表示X和Y中的各元素(1£
i£
k),则定义均方误差为欧氏距离,即有
Kå
d(X,Y)=1K(x-y)2
2 i i
i=1
式(1-7)
这里,d2(X,Y)的下标2表示平方误差。
第二章矢量量化器算法研究
经过多年的研究,矢量量化算法已有不少,包括:
LBG算法,K均值算法(K-Means),模拟退火算法,K均值修正算法(MKM,)链映射法,最邻近算法,预测矢量量化法(PreVQ),乘积矢量量化法等等。
本章选取LBG算法,覆盖算法和PNN算法三种算法进行研究。
2.1最佳码本设计
最佳矢量量化器的码本设计也被称为最佳码本设计,即从大量的输入信号样本中训练出一个好的码本,在一定的条件下,矢量量化器的最佳码本设计使失真最小。
矢量量化器最佳设计中最重要的问题是如何确定量化区间和确定矢量量化,也就是
要达到最佳划分和最佳码书。
一 最佳划分
码书给定,可以用最近邻准则NNR(NearestNeighborRule,也称voronoi分割条件)得到最佳划分。
最邻近准则;
根据该条件对信号空间进行最佳划分,对于信源空间中的任意一个矢
量X,若X和码字Yi的失真小于它和其他码字Yi的失真,即
j
S={XÎ
RK:
d(X,Y)£
d(X,Y);
i¹
j,iÎ
I}
式(2-1)
则Sj为最佳划分,Sj即为一个胞腔
由于给定码书yN={Y1,Y2, ,YN}中共有N个码字,所以可以把信源空间划分为N
个区间Sj(j=1,2, ,N).
二 最佳码书
划分了Sj(j=1,2, ,N)后,为了使码书的平均失真最小,码字Yi必须为相应划分
的Sj(j=1,2,......,N)形心即满足centroid质心条件
Yj=
1 X
Sj
å
XÎ
式(2-2)
Sj为集合中矢量的个数
2.2LBG算法实现
LBG算法由Linde,Buzo和Gray在1980年提出,它是标量量化器中Lloyd算法的推广,在矢量量化中是一个基本算法[2]。
LBG算法以其严密的理论,简便的应用和设计效果良好,被广泛的应用,是许多新型码书设计算法的基础算法。
LBG算法是一种迭代算法,从一个最初选定的初始码本开始迭代。
把训练序列进行分组,找到每组的初始
码书,计算初始码本与训练序列的失真度,根据最小失真度来确定新的码本,产生的新码本作为第二次迭代的初始码本。
重复上述过程,直到系统满足性能要求或不在有明显改进是结束迭代。
2.2.1LBG算法的实现流程
LBG算法根据最佳矢量量化器设计的最佳划分和最佳码书这两个必要条件提出,它的特点是算法理论严密,物理概念清晰和算法实现容易。
LBG算法是目前比较常用和流行的一种码书建立方法,该方法可以用于两种情况:
一是已知信源概率分布,二是未知信源概率分布,但是已知一个信号序列的情况。
由于实际情况中信源确定多维的概率分布很难,所以利用训练序列建立码本的LBG算法用得比较多一些。
利用训练序列建立码书的LBG算法的步骤如下[3]:
第一步初始化:
给定初始码书y(0),即给定码书的大小N和码字
Y0
,
N {1 2 L N}
并设置n=0,设起始平均失真第二步 迭代:
D(-1)=¥
,以及给定计算停止门限e。
用初始码书y(n)为形心,根据最邻近准则将训练序列分成N个胞腔,即
j j i
dn={d(X,Y)<
d(X,Y)}
式(2-3)
j,Y,YÎ
y(n),XÎ
TS(i=1,2, ,N)
式(2-4)
i j N
第三步 计算平均失真与相对失真:
må
平均失真为D(n)=1
m
mind(X
Y),YÎ
y(n)
式(2-5)
D(n-1)-D(n)D(n)
相对失真为D%(n)=
r N
r=1
式(2-6)
若D%(n)£
e,则停止计算,当前的码书y(n)就是设计好的y
N=y(n+L)
,否则进行第四步:
第四步 利用公式
Y=1
X
xÎ
Si
计算这时划分的各个胞腔的形心,由这N个新形
心{Y(n+1),Y(n+1),.....,Y(n+1)}构成新的码书y(n+1),并置n=n+1,返回第二步再进行计算,直
1 2 N N
到D%(n)£
e得到所要求的码书y
N=y(n+L)为止。
LBG算法流程图如下所示:
开始
给定码书大小N,初始码书y(0),训练序列TS
置n=0,起始平均失真D(-1)=¥
以及给定计算停止门限e。
用给定码书 划分成N个胞腔 {d(X,Y) d(X,Y)}
y
(n)
d=
n
<
j,Y,YÎ
TS(i=1,2, ,N)
计算平均失真和相对失真
D(n)=
1m
mind(X,Y)
r
D%(n)=
D(n-1)-D(n)
D(n)
Y
D%(n)£
e
求出新码书y(n+1)
y=y(n)
N N
结束
图(2-1)LBG算法流程图
2.2.2LBG算法初始码书的选取
—随机选取法
该方法最先是用在聚类算法中,它是从训练序列中随机选取N个矢量作为初始码字构成初始码书。
其优点是大大节约计算时间,而且由于初始码书是从训练序列中选出来得,所以没有空胞腔的问题。
随机选取法的另一个优点是,形成初始码书的过程需要的时间较短。
但这种方法也存在一些问题,就是很可能选到一些不是典型的矢量作为码字,因此该胞腔只有很少的矢量,特别是只剩下一个初始码字,造成在某些空间将胞腔划分的太细致,码字中有很多个码字得不到充分的利用,而有些空间将胞腔分的过大,所以该方法比较适用于相对比较平稳的序列。
语音信息与别的多媒体信息比较,信息之间的冗余较少,本设计中的语音信息由于选取的时间较短,就是一个相对平稳的序列,所以使用随机选取法选取初始码书是可行的。
二分裂法
该方法是1980年由Linde,Buzo,Gray提出的,先取一个较少码字的码书,用LBG算法对其优化,对优化的结果进行分裂,得到较大的体积,较优化的码书再,重复优化,分裂,再优化过程。
具体步骤如下:
1
第一步计算所有训练序列的形心,将此形心作为第一个码字Y(0);
第二步用一个合适的参数A,乘以码字Y(0),形成第二个码字Y(0);
1 2
第三步以码字Y(0),Y(0)为简单的初始码书,即
y(0)={Y(0),Y(0)}
式(2-7)
2 1 2
用前面所述的LBG算法,去设计仅含两个码字的码书y(n)={Y(n),Y(n)};
第四步将码书中的两个码字Y(n),Y(n)分别乘以合适的参数B,得到四个码字
1 2 1 2
Y(n),Y(n),BY(n),BY(n);
第五步以这4个码字为基础,按步骤3构成含4个码字的码书,再乘以合适的参数以扩大码字的数目。
如此反复,经过log2N次设计,就得到所要求的有N个码字的初始码书。
在此方法中,这些参数的选择对初始码书的设计性能有一定影响。
用分裂法形成的初始码书,其性能较好,当然矢量量化器的性能也较好,只是计算工作量比较大,随着马书中码字的增加,计算量也迅速增加。
2.2.3LBG算法非典型码矢的问题
LBG算法中,遇到的另一个问题是随机选取法中的非典型码字如何处理,此问题同样存在于其他算法中。
下面进行说明[4]。
在随机选取法中,存在一些非典型矢量,用它们去形成胞腔时,胞腔中往往只有少数几个矢量,甚至只有它们自身一个矢量。
其实在别的设计算法中。
也有只含有很少几个矢量的胞腔,此时一般采用下面的方法进行处理:
第一步重新选择随机初始码字,直到没有非典型码字为止;
第二步把这种胞腔中少数矢量分别归并到邻近的各个胞腔中,再用分裂法把其中一个最大的胞腔分裂为两个小胞腔。
2.3覆盖算法的实现
2.3.1覆盖算法的基本原理及实现流程
覆盖算法的基本原理如下[5]:
第一歩给定一个失真半径er,任选一个训练矢量作为第一个码字Y1,计算出此码字相对训练序列TS中各个矢量的失真,凡失真小于er的那些TS中的矢量,均属于胞腔Y1,这样确定的胞腔S1为
S1={Xd(X,Y1)£
er,XÎ
TS}
式(2-8)
第二歩 在剩余的矢量之中,选一个训练矢量作为第二个码字Y2,仍以与上述相同
的矢量半径计算Y2相对剩余TS中各矢量的失真,以确定第二个胞腔S2,即
S2={Xd(X,Y2)£
式(2-9)
第三歩 按上述步骤,构成新的胞腔S3,S4,„„,要不断的修改失真半径
er反
复多次修改,直至选出的码字个数满足码书大小N的要求为止。
覆盖算法流程图如下所示:
初始化失真半径er,训练序列TS
码书大小N,设置失真半径增量r
划分胞腔,凡小于失真小于er的那些
TS中的矢量,均属于胞腔Y,
Si={Xd(X,Yi)£
计算生成的码字个数M
改变失真半径
er=er+r
M是否等
于N
图(2-2)覆盖算法流程图
2.4成对最邻近(PNN)算法的实现
2.4.1成对最邻近(PNN)算法的实现流程
成对最邻近算法(PNN,pairwisenearestneighbor
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 矢量 量化 设计 实现 算法 matlab 仿真 毕业设计 说明书
![提示](https://static.bingdoc.com/images/bang_tan.gif)