1.1 课题研究的背景和意义
随着社会时代的发展,人类迅速进入信息时代,对于各种资源的利用率要求越来越高,从而推动了语音编解码技术的飞跃发展。与此同时,伴随着微电子技术的快速发展,以及超大规模集成电路设计技术的不断完善,使得语音编解码技术越来越广泛的深入到通信领域、消费电子领域,辟如数字录音笔、IP电话、复读机等等都是语音压缩编码技术的典型应用。语音编码技术就是将模拟的语音信号数字化离散化,利用语音听觉上的制约或者数据的冗余度来压缩信号的一些不必要的信息,以此来增加传输速率、减少存储容量,然后再进行传输、存储或者处理,而解码就是相反的一个过程。
ADPCM是自适应差分脉冲编码调制的简称,是语音编码的多种算法中的一种,更是最早使用于数字通信系统中的一种语音编解码算法。此算法利用了语音信号样点间的相关性,针对语音信号的非平稳特点,使用了自适应预测和自适应量化,即预测器和量化器它们的参数能随着输入信号的统计特性,自适应于或接近于最佳的参数状态,在32kbps的速率上能够给出网络等级话音质量。ADPCM究其本质是一种针对 16bits( 或8bits或者更高) 声音波形数据的一种有损压缩算法,它可以将声音流中每次采样的 16bit 数据用4bit 来存储,所以其压缩比为 1:4。而且它的压缩/解压缩算法非常简单,所以又是一种低空间消耗、高质量高效率声音获得的好途径。ADPCM 其主要是针对连续波形数据的,保存的则是波形的变化情况,从而以达到描述整个波形的目的。
1.2语音编码的发展和研究状况
数字语音有很多的优点是模拟语音不可比拟的,它能更方便的传输和存储,可以在噪声信道中进行相当可靠的传输,容易进行交换,能够很方便的对信号进行加密传输。数字语音可以由模拟语音简单的抽样,量化来得到,但由于数字语音其数据量比较大如果不经过处理,那它在传输和存储时就会占用很大量的信道资源以及存储空间,那么给系统提出的要求势必就会很高,所以数字语音通常情况下都是要进行压缩编码的。在确保编码语音一定质量的前提下,究竟如何高效率进行压缩编码,或者说在给定信息速率的前提下,如何去提高编码后的语音质量,是当代语音编码所要研究的重点。
语音编码技术一般分为两种:信源编码和信道编码。信源编码的目的是为了
1
提高信号的传输和存储效率,在这指的就是数字语音信号被压缩的比特率(即每秒钟传输语音信号所得出的比特数,通常也可以称为数码率),使得更多路的语音信号能在同样的信道容量中传输,或者说只需要较小的容量存储数字语音信号,所以这一类编码又被称为语音信号的压缩编码。而信道编码因为是为了提高传输的可靠性而作出的处理,所以又被称为可靠性编码。
语音信号编码从方法上讲有波形编码和分析合成系统两大分支。波形编码是以尽最大可能无失真的重构出语音波形为目标,在其编码时以波形逼近为基本原则,在时域上或变换域上直接进行编码,虽然这种方法压缩效率不很高,但是在64~16Kb/s 的速率上,却可以合成出相当高的语音质量,然而在速率进一步下降时,编码语音的质量将会随之大幅度下降。常用的波形编码算法有:时域上编码的PCM(Pulse Code Modulation),ADPCM,APC(Adaptive Predictive Coding); 在频域上进行编码的子带编码SBC(Sub-Band Coding)和自适应变换编码ATC(Adaptive Transform Cording)。分析合成系统是把语音信号产生模型作为基础,把语音信号变换成模型参数后再进行编码,因此又称之为参数编码。参数编码其出发点同波形编码有所不同,它的原则是以在尽量保持语音可懂度的条件下,为语音信号搭建一个数学模型,然后通过给定的语音信号计算模型参数并且量化编码来实现。而且它的模型参数对比于语音波形来说数据量是很小的,因而其压缩效率很高。虽然也许参数编码会导致重建话音和原始语音在它时域波形上有很大的区别,但它的可懂度仍然可以保持在一个相当高的程度。现在,还时常采用混合编码的方案,混合编码是波形编码和参数编码优点的结合,这种结合是保留分析合成编码技术精华的基础,引用波形编码准则优化激励源信号,从而在一个较小的数码率上(4.8~9.6kbit/s)获得更高质量的合成语音。
自1937年以来的脉冲编码调制(PCM)是AH里夫斯已经提出,语音编码技术的发展历史已经超过60年。尤其是在过去的20年里,随着计算机的语音编码技术和微电子技术的发展得到了快速发展。64kbit/s的PCM系统标准CCITT于1972年确定了64kbit/s的PCM语音编码G. 711建议,已被广泛应用于数字交换机,数字通讯等领域,到现在为止,仍然是占主导地位。虽然这种编码方法可以得到良好的语音质量,但缺点是,它会占用更多的带宽,有限的带宽资源条件下不使用。
CCITT在20世纪80年代初,就开始专攻小于64KB/s的非PCM编码算法,32K比特/秒ADPCM语音编码G. 721建议,于1984年通过,它不仅可以实现与PCM等效语音质量,还更好的抗误码性能,它被广泛用于海底电缆,卫星,和可变速率的数字语音内插编码器清空设备。连续地,在那之后,1986年,1988,做了进一步的修改在此,也可以是32K比特/秒的PCM比特率,一般是高速率的
2
一半,达到接近正常的PCM语音质量,防误性能优于PCM格式。随后颁布G. 723标准,扩大到24Kbit/s和40Kbit/s的编码标准税率。 1990年G. 723,G. 721由ITU合并,将进一步扩展的编码率16KBIT /秒,从而促进G. 726标准形成的。语音插值技术和浮动利率结合原来的PCM通道的ADPCM编码,可扩展到8-10倍,称之为数字语音通道倍增设备DCME。 G. 726标准算法不仅简单,但高品质的声音,即使在经过反复的切换,以确保他们的声音质量,所以网络会议系统,8-ISDN通信和VOIP网络通信等方面具有广泛的应用。然后16KB/s的低时延码激励线性预测(LD-CELP)G. 728建议,在1992年出版。正是由于其较低的利率,高性能,低延迟在实践中广泛使用,如:单路单载波卫星,无绳电话和数字插值空气设备,海事卫星通信,存储,数字移动无线系统,分组语音,转发系统,语音留言录制。最后,在11月1995年共轭代数码激励线性预测(CS-ACELP)8KB/s的语音编码G. 729建议ITU-TSGl5全体会议通过,并通过G. 729附件降低复杂8KB/s的CS-ACELP讲话编解码器在ITU-TSGl5 1996年6月的会议上正式成为国际标准。这种编码其延迟小,可以节省带宽的87.5%,为32KB/s的ADPCM语音质量,音质在同级别最优的比特率,在嘈杂的环境中也可以更好的语音质量。
虽然CS—ACELP语音编解码器占用比特率比ADPCM的少,但是其算法复杂度远没有ADPCM的算法简单明了,所以在现代通信系统中,ADPCM这种编码算法仍然占主导地位。
1.3 语音压缩编码的评价
语音质量是一个语音编码系统必然要保证的性能指标,速率再低,编码效率再高,不能得到满意的语音质量也不能算是一个优良的编码算法。那么,在语音压缩编码中,怎样评价一个语音压缩质量的好坏就成为了是一个极其重要的概念,通常,评价语音压缩的标准主要有以下几点: 1)语音质量
语音质量的评价方法可分为主观评定和客观评定两大类。客观评定方法用客观测量的手段来评价语音编码质量,常用的方法有均方误差、信噪比、加权信噪比、平均分段信噪比等。主观评定方法是用人们自身去感受语音质量的感觉,然后主观评判其语音压缩编码的质量。 2)编码速率
编码速率,可以使用“比特/秒”(比特/秒或bps)的措施,即总速率编码,通常用I表示,即每秒的编码比特的数量。 3)编解码复杂度
所谓编解码的复杂度指的就是实现一个信号编解码算法的难易程度。编解码算法的复杂程度和语音编码的话音质量有着相当密切的联系。在一个相同的数码
3
率情况下,算法复杂一些的将会获得更好的语音质量。编解码复杂度可以由算法复杂程度、硬件实现及价格等许多因素来衡量。 4)编解码延时
数字音频编解码器的延迟主要由两部分组成:算法延迟和处理延迟。之前的压缩的音频信号到高速缓存中的数据必须是有效的,这个时间延迟称为算法延迟,它是不是唯一的方法,以减少通过改变延迟时间。即,音频信号压缩编码器和解码器的编解码器的实现在不同的应用程序所需的时间的处理延迟,国际社会已延时的编解码器不同的要求,如长途编解码器延迟不超过5-10毫秒,但对于可视电话可以扩展到几十毫秒到几百毫秒。 5)稳健性(Robustness)
所谓稳健性是指编译码系统的抗噪声、抗信道误码能力。一个实用的声码器,其误码率要求在10-3的信道上传输时,语音质量不至于过分恶化,而对于移动通信中的声码器则要求在信道误码率为3×10-2时仍能正常工作。
ADPCM就语音质量的评价上来说,语音质量的客观评价方法主要采用均方误差和信噪比来评定。但客观评价还不能全面反映人对语音质量的感觉,而主观评定方法符合人们对语音质量感觉的要求。主观评价的优越性,主要体现在其处理还原后给人主观感觉效果很好,感觉语音失真度小;就编码速率来讲,ADPCM的编码速率为16KB/S,优于其他编码方式;就其编解码的复杂度而言,ADPCM采用四位二进制的差值编码方式,使用起来简单又容易实现;它的抗噪能力也比较强即稳健性相当好。
1.4 论文研究的主要内容及章节内容安排
本论文研究的内容是语音编解码的算法及软件实现过程,主要是研究ADPCM的语音编解码算法及在MATLAB软件中的实现。
论文共分4章,各章内容安排如下:
第一章:简要介绍课题研究背景和意义,语音编解码的发展和研究状况以及它的评价标准。
第二章:主要介绍语音信号脉冲编码基本理论,为对语音进行ADPCM编码译码系统提供理论依据。
第三章:介绍PCM与DPCM(Differential Pulse Code Modulation)的工作原理,并对二者进行比较,从而体现出DPCM编码的优越性。接着介绍增量调制DM(delta modulation)及自适应增量调制ADM(adaptive delta modulation)的原理与运用,二者比较得出ADM更容易跟踪信号变化快的的语言,最后阐述了ADPCM的由来及主要原理。
第四章:确定ADPCM实现的总体设计框图,以及ADPCM编码和解码实现过程
4
的设计流程图, 并采用MATLAB软件对ADPCM编解码系统的实现进行了仿真。
5
2 语音信号脉冲编码基本理论
当前最主要的通信业务有电话、图像(传真、电视)等,它们都是时间上和幅度上连续的模拟信号,如果要想实现数字化的传输和交换,则首先要做的就是把模拟信号变化成数字信号,电话信号数字化一般被称为语音编码,而图像信号数字化就被称为图像编码。虽然两者各有各的特点,但两者的编码原理基本上仍然是一致的。而当前的通信网中很多业务基本上都是电话业务,因此语音编码将为本章讨论的重点。可以说这些理论对任何模拟信号数字化的实现过程都是适用的,其不失一般意义。
依照语音的特点,通常把语音编码方法分为波形编码和参量编码,波形编码是指对信号的波形进行编码,它具有较高重建信号质量的能力。参量编码则是通过提取语音信号的一些特征参量,从而对其进行编码,它的特点是码速率较低,但其语音质量要较波形编码差一些。
波形编码的质量比较高,通常在300~3400Hz话路通道中传输模拟信号(例如模拟数据信号、电话信号、传真信号及各种随路信令信号等)在数字化以后,仍然可以达到原来的质量容限。这一特点是通信网由模拟转换为数字过渡过程中极其重要的一点。
根据语音的特性,通常分为波形编码和参数编码类型的两类语音编码方法,波形编码,用于编码的信号波形,它具有更高的能力来重建信号的质量。参数编码是通过提取语音信号的参数的一些特点,从而编码,它的特点是较低的比特率,但不如波形编码的语音质量。
波形编码质量是比较高的,通常会在通道300〜3400Hz传输各种模拟信号(如模拟数据信号,电话信号,传真信号,与信道相关信令的各种信号)后的数字仍实现其原来的质量宽容。的通信网络,其特征在于由模拟到数字的转换是非常重要的。
语音信号有很多波形编码方法,例如脉冲编码调制(PCM)、自适应增量调制(ADM)、自适应差值脉冲编码调制(ADPCM)、子带编码(SBC)、矢量编码(VQC:Vector Quantitation Coding)等。
为对语音进行ADPCM编码译码系统提供理论依据,下面主要介绍编码的一些基本理论。
2.1 语音信号压缩的基本原理
6
在数字通信中,语音信号被编码为二进制数字序列,通过信道传输或存储,在经过解码后恢复为可懂的语音。将语音信号编码为二进制数字序列后再经传输或储存有其独特的优点。例如,可摆脱传输或存储中噪声的干扰。模拟传输信道的噪声总是要使语音信号发生畸变,而数字通信只要有足够的通信站,就能排除所有噪声的影响;另一方面,磁带录音机存储模拟信号时要受磁带噪声和其他噪声的影响,而采用计算机存储数字语音信号时,惟一的失真来自模数转换前的低通滤波。另外,数字编码的信号还便于处理和加密、再生与转发,也可与其他信号复用一个信道,设备便于集成等。
最简单的语音编码方法是对其直接进行模/数变换;只要其取样率足够高,量化每个样本的比特数足够大,那么就能保证解码恢复的语音信号有非常好的音质,而且也不会丢失有用信息。可是对语音信号直接进行数字化其所需数码率太高,比如普通电话通信中采用8KHZ取样率,如用12bit进行量化,则数码率为96kbit/s,这样大的数码率即使对很大容量的传输信道也是难以承受的。而语音信号用PCM编码后,数码率为64kbit/s,不进行压缩很难用调制解调器在电话线路上传输,所以必须进行压缩编码。
对语音进行编压缩码的基本依据有两个。一是,从产生的物理机理和语音结构的性质来看,语音信号中存在较大的冗余度。从信息保持的角度讲,只有当信源本身具有冗余度,才能对其进行压缩。语音压缩实质上就是识别语音中的冗余度并设法去除掉它们。冗余度最主要部分可以分别从时域或频域来考虑,归纳起来有以下几个方面:1,语音信号样本间的相关性很强,即其短时谱不平坦。2,浊音语音段具有准周期性。3,声道的形状及其变化比较慢。4,传输码值的概率分布是非均匀的。
语音编码的第二个依据是利用人类听觉的某些特性。人耳听不到或感知不灵敏的语音分量可视为冗余(这种冗余可看作为主观上的冗余),所以可以利用人耳感知模型,去除掉人耳感觉不灵敏的语音分量,而重构后的语音质量不明显下降。
总之,利用冗余度或者是听觉上的制约,可以压缩表示语音信号的必要信息,从而可降低传输速率或存储容量。
下面给出脉冲编码的基本框图: 模拟语音 信号输入取样量化图1 模拟脉冲编码框图
编码数字语音信号输出2.2 采样定理
7
2.2.1 Nyquist采样定理
采样是指将时间上连续的模拟信号变为时间上离散样值的过程。采样定理最主要要回答的问题是看能不能由离散样值序列重建出原始的模拟信号。且抽样定理还是任何模拟信号数字化的理论基础。其主要有以下几种:①Nyquist采样定理;②带通采样定理;③自然采样④平顶采样。接下来简单的介绍一下Nyquist采样定理和带通采样定理。
Nyquist采样定理:设定一个频率带限信号为x(t),将其频带限制在(0, fH)或以下,若对x(t)以不低于fs2fH的采样速率进行等间隔采样,那么获得时间离散的采样信号x(n)x(nTs) (其中Ts1/fs称为采样间隔), 通过所得到的采样值x(n)原信号x(t)将完全的确定。
奈奎斯特采样定理指出,如果信号是一个不小于2倍的采样率进行采样的,则由所得到的离散采样值就可以唯一的恢复原信号。根据抽样理论,使采样信号通过一个低通滤波器,其带宽不小于H,过滤掉高频成分,因此它可以恢复的原始信号Xs()的无失真的从Xs()中。
随着时间离散采样值来代替连续时间模拟信号的采样定理的意义是,这将模拟信号处理数字化奠定了理论基础。 2.2.2 带通信号采样
Nyquist采样定理仅仅讨论了频谱分布在(0, fH)上的基带信号的采样问题, 但在实践中,我们遇到的信号,尤其是语音信号中,通常会在一个有限的频带(fL,
fH)范围内的信号的带通频率分布,由奈奎斯特采样定理,依然能按照fs2fH的采样速率去进行采样。当fHBfHfL时,即当信号最高频率fH远远大于该信号带宽B时,若仍然按照Nyquist采样率去进行采样的话,那么它的采样频率就会变得很高,从而就很难去实现, 或随后的处理速度是非常困难符合要求的。
带通采样定理:设一个带限信号x(t),将其频带限制在(fL,fH)范围内,若其采样速率关系式满足:
2fH2fLfs (1) n1n其中n为整数,其取值区间为:[0,N],N为fL/B的整数部分。那么Xs()的频
谱将不会发生混叠,即能从Xs()中无失真的恢复出X()。
从以上采样定理中很容易推导出最低采样率
fsmin4f02(fLB)1fLB2B2N1N1N1(2)
8
(当n=最大值N时, fs最小),且又由式可以得知:带通采样频率最小值在2B到4B之间,即
2Bfsmin4B (3)
通常,当带通信号的带宽比信号的最低频率fL大时,就可将此信号作为低通信号处理。只有当不满足上述条件时才使用带通抽样定理。
2.3 量化定理
2.3.1 基本概念
量化是指将一个幅度连续变化的信号变为一个离散信号的过程。由于用有限长度的二进制数字码组表示模拟信号样值是PCM的数字化过程,然而有限长度的二进制数字码组又只能代表有限数量的样值,所以若要用有限的数量样值去表示原模拟信号无限个幅度抽样值,那么就需要对其进行量化。量化的方法就是,将所需量化样值的最大变化范围分成若干个相邻区间段落,当其样值落在某一间区间内,它的输出数值就用此区间内的某一个单一固定值来表示。量化间隔可以是相等的,也可以是不相等的,一般有均匀量化和非均匀量化两种量化方法。从量化结果可以发现,不论量化的间隔有多么小,都会带来一定的误差,随之就产生了量化噪声。虽然将量化间隔取得较小,量化级数会因此变多从而能减小一定的量化误差,但与此同时,也会相应的增加数码率,提高编码设备的复杂程度,而且需要较宽的传输信道。
例如,对语音信号,其抽样速率为fs8KHz,如果每个样值编码8位,量化共有256个量化间隔,每路语音PCM编码后的数码率为8x8=64kib/s;如果每位样值编11位码,数码率提高到88kbit/s。 2.3.2 均匀量化
均匀量化也叫线性量化,它在量化时各量化间隔是相等的。任意一个量化器都会有一定的量化范围,通常取-V~V。在均匀量化的情况下与, 量化间隔(Δ)和量化级数N的关系为:
2V (4) N通常情况下每一个量化间隔内的量化值可以取此区间内的任意一值,但是理
论上为了减小平均量化误差功率, 一般量化值的取值会取量化间隔中间值,那么这样量化的最大误差便为Δ/2。一般来说,信源码都是二元码,所以其码位n与量化级数N的关系为N2n,即nlbn。
对于均匀量化的量化间隔或是量化电平用n位码表示,就得到了数字编码信
9
号,通常称为线性PCM编码信号。 2.3.3 非均匀量化
非均匀量化是一种量化间隔取决于使用不同信号的,在信号幅度值比较小的区间内就采用小的量化间隔,而在信号幅值比较大的区间内则采用大的量化间隔,量化间隔不再是一个恒定值。非均匀量化较均匀量化方法具有以下两个优点:
a)当对一个概率密度非均匀分布的语音信号进行量化时,非均匀量化方式就可以得到较高的平均信号量化噪声功率比。
b) 在非均匀量化,量化噪声的语音信号的rms值的功率大致成比例的采样,即,量化的或大或小的语音信号的量化噪声信号的方法,无论水平是相同的,即改善均匀量化的声音时,小信号量化噪声比。
非均匀量化小的用于小信号的量化噪声,以确保在同一时间有一定的限制,在量化过程中,有足够的动态范围的量化比特数并没有把一个大的信号过载。如果我们知道的语音信号的幅度的概率密度函数的序列,我们可以设计给定的量化比特数的量化噪声是最小的非均匀量化器。输入语音信号的方差和概率密度函数进行量化,与量化的质量密切相关,我们需要通过量化方法一种受二者影响较小的,目前在这方面的杰出贡献的,我们经常看到的A律或μ律量化。
非均匀量化的过程中,可以等效地视为非线性的压缩语音信号的振幅,然后的线性量化处理。非线性压缩方法是目前理想的对数压缩。所谓的对数压缩,也就是说,要量化的对数压缩的语音信号的振幅值,振幅的第一语音信号的对数,然后量化值,提高量化器的动态范围。在解码侧,通过过程的逆过程 - 恢复的话音消息的采样的指数函数的对数。仅取自量化步长的量化噪声对数压缩,从该语音信号的方差。然而,其值的对数的语音信号的振幅可能很大,需要定量或定量的特定的量化比特的电平,以便对数压缩更难以实现。可将对数压缩特性作些近似,这样才有了后来的律的压缩方式:先将语音抽样信号作公式(5)变换得到
Y(n),量化器再对Y(n)进行量化。
X(n)]Xmax(5) Y(n) F[X(n)]Xmaxsign[X(n)]log[1]log[1当X(n)0时, 当Y(n)0时, 当0时, Y(n)X(n)输入输出信号相同,即没有进行压缩,信号子幅度范围即量化电平均匀分布;当μ很大,并且X(n)也很大时,则有:
X(n)Y(n)Xmaxlog (6)
Xmax10
此时的μ律量化器的信噪比可推导为:
XX SNR 6 20log [log(1 )] 10log 1 B 4.77[max]22[max](7)
10
xx由上述公式可知: μ律量化器信噪比SNR与Xmaxx关系不大。大量实验结果表明,对于一个固定的Xmax值,若x减为二分之一,则SNR减少6dB;而对于一个固定的Xmaxx值,码每增加一位,则SNR增加6dB。
μ律量化器以量化信噪比作较小牺牲为代价,使量化器有一个比较宽的动态范围。通常作为“长途电话质量”语音波形标准的7位μ律PCM在动态范围合适的情况下保持有34dB的信噪比。而若用均匀量化器得到同样宽度的动态范围,大约需要11位,比μ律量化器高出50%还多。 2.3.4自适应量化
一方面,在语音信号中的量化器的量化步长,从选定的足够大,以适应动态范围;另一方面,希望减小量化步长,以减少量化噪声相差。这种现象的原因是语音信号,语音通信过程是不固定的。与扬声器或通信环境的变化,和由浊音清音段到段的语音内容,语音信号的幅度会在一个很宽的范围内。正如我们所看到的,使用非均匀量化,以适应这些幅度的波动是一种方式,还有一个比这更好的方式,采用自适应量化,即使量化的量化步长自动适应输入电平的变化。在本节将介绍自适应量化的一般原则。
自适应量化的基本思想,是使量化步长的距离,变成输入信号相匹配的幅度变化,作为输入信号的振幅从规定的变化,从而进一步提高其定量结果的量化步。也可以在前面的一个固定量化器的自适应增益控制,使之进入到量化器的输入信号保持到一个固定的常数方差。这两种方法是等效的。这两种方法应容易地估计随时间变化的输入信号的振幅,来纠正从Δ(n)的量化步长的增益值。
并根据不同的估计方法,自适应量化可以分为两种类型:一种是输入振幅或输入估计值本身的方差,此程序被称为前馈自适应量化(AQF),另一种是,在根据与量化步长从量化器输出x(n)是自适应的,或等价的输出码字C(N)自适应调整,这个程序被称为反馈自适应量化(AQB)。
无论的AQF法或AQB方法,可以显着提高量化的输入信号电平变化的适应能力,可以使大或小信号输入信号输入具有很高的量化噪声比。
1)前馈自适应量化
所谓前馈自适应是指,信号x(n)的能量或者方差是通过输入信号x(n)其本
身估算出来的,通常是先在估算出x(n)的方差2(n)后,然后令两种系统输出
2(n)0(n),G(n)G0(n)
11
(8)
即(n)正比于2(n),而G(n)反比于盯2(n)。
因为量化噪声不能影响的AQF估值方法,所以AQF估值相当可靠的。在同一时间,这也意味着,为了信息的传送量,使用额外的比特到解码器,被称为边信息。典型5-6位需要编写每个量阶,所以,估值的频率不能太高,不然总的编码速率过大,一般为10至30毫秒的时间估计。 AQF方法还具有的另一个问题是,将引入一个较长的编码延迟,它经常被用于子帧的编码处理。
2)反馈自适应量化器
反馈自适应量化器的估值方法是使用量化的信号后去提取量阶信息,所以就避免了边带信息和延迟的问题。 AQB的问题是其估值精度将量化噪声的影响,并会影响加剧量化粗糙性的增加,甚至有可能导致量化工作不正常。因此,AQB方法通常被用在相对较高的质量在短暂的延迟语音编码中。
通常说来,前馈的适应性和反馈自适应相比,信噪比略高一些,但是前馈自适应需要延迟一段时间,短期时间去计算方差,而反馈自适应然后瞬间完成。总之,能够给予超过μ律或A律自适应量化量化的信号信噪比,适当的选择
maxmin,但也允许自适应动态范围与后者相当,选择一个较小的min无语言
也使活动时量化噪声非常低,因此自适应量化是一种非常有效的编码方法。
12
3 自适应差分脉冲编码调制ADPCM
目前,脉冲编码调制(PCM)的数字通信系统已经在大容量数字微波、光纤通信系统,以及市话网局间中继传输系统中获得广泛的应用。但是现有的PCM编码必须采用64Kbit/s的A律或μ律对数压扩的方法,才能符合长途电话传输语音的质量指标,其占用频带要比模拟单边带通信系统宽很多倍。这样,对于费用昂贵的长途大容量传输,尤其是对于卫星通信系统,采用PCM数字通信方式时的经济性很难和模拟相比拟。因此,人们一直致力于研究压缩数字化语音占用频带的工作,也就是努力在相同质量指标的条件下,降低数字化语音数码率,以提高数字通信系统的频带利用率。
自适应差值编码调制(ADPCM)是在差值脉冲编码调制(DPCM)基础上逐步发展起来的。它在实现上采用预测技术减少量化编码器输入信号的多余度,将差值信号编码以提高效率、降低编码信号速率,这广泛应用于语音和图像信号数字化。CCITT近几年确定了64Kb/s—32kb/s的变换体制,将标准的PCM码变换为32kb/s的ADPCM码,传输后再恢复为64Kb/s的PCM信号,从而使64Kb/s数字话音压缩速率一倍,使传输信道的容易扩大一倍。
ADPCM中的量化器与预测器均采用自适应方式,即量化器与预测器的参数能根据输入信号的统计特性自适应于最佳参数状态。通常,人们把低于64Kb/s数码率的语音编码方法称为语音压缩编码技术,语音压缩编码方法很多,自适应差值脉冲调制(ADPCM)是语音压缩编码中复杂程度较低的一种方法。它能32kbit/s数码率上达到符合64kbit/s数码率的语音质量要求,也就是符合长途电话的质量要求。
ADPCM是波形编码中非常有效的一种数字编码方式。在ADPCM系统中量化器和预测器均采用自适应方式,即量化器和预测器的参数能随输入信号的统计特性自适应于或接近于最佳的参数状态。与PCM系统相比,ADPCM的量化器和预测器都是根据前面出现的PCM抽样值并对下一个抽样值进行预测,将当前的抽样值和预测值进行求差,然后对差值进行编码。对差值编码需要的位数要比直接对原始语音信号编码所需的位数少,从而达到对信号压缩的目的,在这里编码所包含的
13
信息从原来的原始语音信号变为语音信号之间的变化。
3.1 脉冲编码调制PCM
PCM编码被称为脉冲编码调制,这是在一个数字通信的编码,是最简单的波形编码方法,编码主要过程是语音,图像,对其进行采样以规则的间隔上的一些模拟信号,使该信号是离散的,在同一时间的样值被舍入,根据分层量化单元的舍入,而在采样脉冲振幅的采样值与一组二进制码。 PCM编码的最大的优点是,音质好,最大的缺点是笨重。我们常见的音频CD上使用了PCM编码。
PCM模式是抽样,量化和编码三个基本方面完成。音频信号通过一个低通滤波器的带限滤波处理,从取样,量化和编码三环节完成PCM调制,来实现A / D转换,形成PCM数字信号的纠错编码和调制,它被记录在记录介质上。数码录音CD和磁带介质。在播放期间,从记录介质中取出由数字信号处理,例如解调和纠错后,恢复成PCM数字信号,然后由数/模变换器以及低通滤波器还原成模拟音频信号。在CD-PCM的数字信号转换成模拟信号,以恢复解码器 - 被称为CD-PCM解码器。
脉冲调制就是将一个时间连续,取值连续的模拟信号变换成时间离散,取值离散的数字信号后在信道中传输。脉冲编码调制的过程就是先对模拟信号进行抽样,再对样值幅度量化,最后进行编码。
模拟信号的周期性扫描的将时间连续信号转换成离散时域信号的过程称为采样。经过模拟信号采样的原始信号也应包含的所有信息,能恢复原来的模拟信号无失真。采样速率的下限是由抽样定理来确定。
量化在PCM中所指的就是将一个经过抽样后得到的瞬时值使其幅度离散化,即用一组规定的电平去表示其瞬时抽样值最接近电平的值。
通过采样的模拟信号进行量化获得的量化的脉冲幅度调制信号,这是一个预定电平的样值来表示的瞬时值的最近水平。
对于编码,使用一个二进制代码来表示每个组有一个固定的量化电平,但它实际上是量化同时在编码过程中,因此也可以被称为编码处理的模拟/数字转换,可以是A / D转换的意思。
3.2 差分脉冲编码调制DPCM
差分脉冲编码调制记录的不是信号的绝对大小而是相对大小。因为通常情况下的信号的相对大小的变化小于信号本身,那么编码所用的码位也就少。假如取样频率足够高的话,那么大多数连续采样之间将产生很大的关联。所以差分系统就利用了这种信息的冗余,不在于记录信号的大小,而是去记录相邻值之间差值的大小。
14
抽样值x(n)+e(n)量化器e(n)x(n)预测器x(n)+图2 DPCM编码器示意图
差分编码中使用的预测编码技术,这个想法是从输入中减去预测值,然后进行量化的预测误差,和最终的代码的预测值和实际值之间的差值。与过去的数据来预测当前样本,然后使用的错误代码来重建原始样品的解码器。此方法使用一个相对较小的比特数,但其性能依赖于它的能力,以适应变化的信号和预测编码方法。
为了便于分析,我们需要定义预测器的性质。按照语音产生模型和数学上容易进行处理,通常是线性的预测,即预测输出X(N)与前量化值的线性组合关系
ˆ(nk)(9) x(n)ak xk1p为简单起见,往往可能采取以下的通式(10)在一个固定的一阶预测的形式
ˆ(n x(n)ax1)(10)
ˆ(n)满足于xˆ(n1),则系统函数有 ˆ(n1)d此时,差分方程x(n)ax
1H1(z)1az1 (11)
当系统函数的式(10)是相当于数字积分器(当a =1),且a≠l时,它们可以被称为“漏积分器”。大量实验表明,使用二阶预测器有可能获得一个大信号噪声比(SNR),即
ˆ(n1)a2xˆ(n2) (12) x(n)a1x则有
ˆ(n)a1xˆ(n1)a2xˆ(n2)d(n) (13) x该系统函数有
15
当Hz(z)两个极点为实数时,就有二阶预测器的性能高于一阶的预测器,这种预测是通常被称为“双积分器”,比较一阶预测器有4分贝的改善。
这种线性预测系数在跟随语音变化而变化时,那么它被称为自适应预测。自适应预测有三个特点:
首先,相同的量化的比特数,信噪比总是大于非预测编码,即,其自适应预测增益总是大于1。
1Hz(z)(0a,b1) (14)
(1az1)(1bz1)二是它的增益是随时间变化的,因为它是信号频谱函数,谱的动态范围越大,其信号样本之间相关性就越强,预测增益也就越高。因此,这种预测器又被称之为基于频谱包络的预测。
三,其量化噪声是类似于白噪声,因此输出噪声频谱是平坦的。
由2.3小节可知,自适应量化包括前馈自适应量化和反馈自适应量化,同样,自适应预测器也可分为前馈自适应和反馈自适应,前馈自适应预测器计算预测系数是通过误差
N1N1p2 (15) Ee(n)s(n)ais(ni)n0n0i1
2最小来求得。e(n)为线性预测误差,ai是按照帧时来变化的,即按照10到30毫秒为一帧来决定求和样本点数N和系数,而是式(15)使用了输入语言信号s(n),它在其接收端是得不到的,因而其预测系数必须作为边信息传输到接收端。对反馈
ˆ(n)序列出发,使误差 自适应预测器,预测系数从其s
2ˆˆ(n)sˆ(n)aisˆ(ni)Een0n0i1N1N1p2(16)
ˆ(n)在发送端与接收端都能得到,所以除了传送eˆ(n),最小得到,由图3可知,s无须要任何的附加边信息传给接收端。
s(n) + e(n)量化器ˆ(n)e码化器c(n)c'(n)ˆ(n)e解码器-预测器+预测器接收端ˆ(n)s+ˆ(n)s 图3 自适应预测编码系统
s(n)发送端为了清楚可见,现将前馈自适应预测和反馈自适应预测做一下简略的比较。 1)效果是前馈反馈自适应预测一般稍好,但主要的问题的前馈预测的发送到接收器的预测系数,并且,以确保准确的传递,需要适当的量化和编码它们,
16
ˆ(n)结合起来,并有效地与e实现高效率的传输,这将使发件人反馈的预测变得更
加复杂,并没有这个问题。
ˆ(n)传输的误码对反馈自适应预测的编码影响比较大,在前馈自适应预2)eˆ(n)误码不会影响预测器系数。当然,预测系数其传输本身也会出现误测器中,e码,但是它只局限于影响本帧的结果,在一般情况下,编码器的预测器系数时,将采取有效措施,即使发生误码,不会导致系统不稳定。反馈预测算法获得的预测系数,不保证它们形成的合成滤波器的一定的稳定性,同时,又要考虑该算法的收敛性和有限字长的影响,这将使得相对复杂反馈自适应预测算法。
3.3增量调制DM
DPCM对输入信号与预测值之差进行编码,当采样频率的增加,减少样品之间的变化,样本之间的相关性变强。增量调制本质上是一个DPCM方法,与一般DPCM两个主要区别是:首先,在delta调制的波形的采样率远高于奈奎斯特采样定理确定的采样率,第二个是使用两个电平值信号差即1比特量化器。这是在更高的采样频率和一个1-bit编码。因为只有一个量化电平来表示样本值的变化,以跟踪信号的变化,则必须使用上述一般要求相对高的采样频率为200kHz,因此,反映差分编码本身,而不是原来的信号。
斜率过载失真幅度取样周期0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1 0 1时间图4 使用1比特差分码进行编码的△调制
颗粒噪声
DM,也被称为Δ调制器,它是一种预测编码技术,被PCM编码的基础上发展而来的,它可以说是一个变化的PCM,PCM编码的每一个采样信号的幅度是整个量化和编码,所以它具有任意波形的编码能力; DM实际采样的采样信号的极性之间的实际差异信号和预测编码,有关的极性变成“0”和“1”两个可能的值之一。如果实际的采样信号减去采样信号预测之间的差异是“积极的”(即“积极”的极性),然后用“1”,而是使用“0”。由于只有一个1-bit的DM编码的语音信号进行编码,编码系统,也被称为DM“升位系统”。可以看出从图4中,在开始阶段,有Δ调制器的输出不能跟踪的输入信号的现象非常快速的变化,我们称这种现象为Δ调制器的“斜率过载”。一般来说,当输出信号的反馈环路中是最大
17
变化速度超过的输入信号的变化率,将有一个所谓的斜率过载。发生这种现象的主要原因,因为由量化步长的限制,和量化步长的大小的变化的输出信号的反馈环路的最大速率是固定的。从图4可以看出,当输入信号的变化相对缓慢,即输入信号和预测信号,当该差值接近于零,delta调制器的输出,有随机交替的“0”和“l “的现象。这种现象被称为“粒状噪声(颗粒噪声)”Δ调制器,该噪声不能被消除。当输入信号的变化更快,斜率过载将成为人们关注的焦点,当输入信号的变化慢时,它会再次成为关注的焦点粒状噪声。因此,为了避免发生斜率过载时,通常有必要增加量化步长Δ,但这样做,它会成为较大的颗粒噪声,相反,如果你想减少颗粒噪声,那么它是必要的,以减少量化步长,这样就使得斜率过载会变得更加严重,因此,促进自适应增量调制ADM的发展研究。
3.4 自适应增量调制ADM
自适应增量调制的基本思想就是使增量Δ自适应于语音信号的平均斜率变化,当语音信号波形的平均斜率变大时,Δ就会自动增大,反之,Δ就会自动减小,从而缓解增量调制中由于Δ固定引起的矛盾。
通常情况下,人耳对过载量化噪声不是很敏感,而对颗粒噪声较为敏感,因此就需要将Δ的幅值取得足够的小。然而,虽然此时Δ被取得比较小,随之而来的过载噪声就会因此增大,所以此时必须要通过增加采样频率来确保减少信号量化过程中的过载噪声,但是如果此时去提高采样频率,又会使其信息压缩的效果因此降低。所以综上两方面的要求,需要采用一种随输入波形自适应改变Δ大小的自适应编码方式,从而使得Δ值随信号平均斜率变化而变化:当斜率大时,Δ就会自动增大;当斜率大时,Δ就会自动减小。这就是自适应增量调制ADM(Adaptive DM)。
此方法的原理:在一段语音信号幅值变化不很大的区间内,就取较小的Δ值去抑制颗粒噪音;而在幅值变化比较大的区间内,就取相对较大的Δ值去减小过载噪音。它的增量幅度确定方法是,先在颗粒噪音不会产生大的影响的条件下,确定一个最小的Δ幅值。在相同符号持续产生的情况下,将Δ幅值增加到原来的2倍。也就是当+Δ、+Δ连续增加时,若下一个残差信号仍然是相同的符号,则就再将Δ幅值再次翻番,等等,还要确定最大限幅Δ,只要的振幅的最大值Δ一个持续产生相同的符号将继续增加的幅度Δ下来。如果相反,残差信号是一个不同的符号,将前一个原始幅度的Δ1/2作为这一次振幅。即,如果连续地产生相同的两个或更多个相同的,而第三个将增加一倍幅Δ,如果它们具有不同的符号,在Δ的幅值被减小了1/2。此外,不同的电话号码时,继续产生时的振幅减小Δ,已减少到最低限度,以便确定Δ初始振幅极限为止。此ADM算法,采样率至少为16千赫。
18
模拟输入 1 1 1 0 1 1 0 0 1 0 0 0 输出码子图5 连续0和1引起增量步长的改变
3.5 自适应差分脉冲编码调制ADPCM
3.5.1 编码原理
自适应差分脉冲编码调制就是用预测编码去压缩数据量。其主要结合了ADM的差分信号和PCM的二进制码的方法,是一种性能非常好的波形编码。它的核心思想是:一是使用自适应量化步长的想法来改变其大小,即小的差值用比较小的量化阶去编码,大的差值使用大的量化阶去编码;二是是使用以前的样值来估计即将到来的下一个输入样本的预测值,所以实际样本值和预测值之间的差已被保持在最低限度。
编码输出sidq++d量化逆量化器xp(n1)-+srsp步长调节预测器q
图6 ADPCM原理框图
ADPCM编码的想法是实际样本值与预测值和预测之间的差值被编码,其量化的方式非均匀量化,并让不同幅值信号的信噪比接近一致,以避免语音信号的小振幅的SNR值是小的,但大幅值语音信号信噪却又比较大的现象。它的编码过程如图6所示。向编码器输入一个语音数据Si的16位的二进制补码,这是在32767-32767之间的范围内。SP为预测采样值,其同线性输入Si之间的差值为d。量化的差分量化器,用于产生一个带符号的4的编码数据I,该数据的表示7和-7之间的范围内,其特征在于,所述编码的值的最高位是符号位的数据。
编码时,首先要计算出16位二进制补码的当前采样值Si与上一个预测采样
19
值SP的差值d,那么将输出的4位ADPCM值I即为该差值的量化编码。在该算法的过程中,将存储预测采样SP定义为一个结构变量,还定义一个量化步长索引,并制定两个表。一表是索引调整表,差值量化编码I作为其输人,用以更新步长索引;另一表为步长调整表,将步长索引为其输人,步长q为输出。编码时,先用上一个采样点的步长去索引查步长调整表求出步长q。若是当前采样值Si与采样预测值SP之间的差值d为负,那么I的D3位置即最高位为1。假如该差值绝对值大于步长q,那么I的D2位置1。若dq大于q2,则I的D1位置1,如果(dqq2)大于q4,则I的D0位置1。如果上述条件没有得到满足,那么相应的位置将被设置为0。这将确定的编码值I,然后,再将编码值I作为指标,来作为索引调整表的输入,然后输出索引调整通过查表所获得,并与结构变量中原步长索引相加,生成新的步长索引用于编码下一个采样值中使用。编码输出I后,还需要重复进行相同的计算过程,从而获得新的预测样本SP。 3.5.2 解码原理
解码是编码的相反的过程,给出ADPCM的解码过程框图如图7所示。将前面编码输出的I作为解码器的输入,然后通过逆量化器将编码I逆量化成差值dq。差值dq和预测采样SP相加后得到一个解码输出Sr。解码的过程和编码过程中求
I逆量化器dq+Sp预测器Sr步长调节q图7 解码原理框图
预测采样其原理是相同的,如果你想能够在解码端的Sr也重现Si,那么你需要编码端的Sr能够很好的跟踪上Si。这里所涉及的因素算法本身的延迟和实施平台,实时的方法等。
解码过程:首先求得获得量化步长,这个可以根据步长索引查步长调整表来得到,并让差值量化编码I经过逆量化器后得到语音差值dq,这是求I的逆过程;接着和前次预测值一同重建当前的语音信号Sr;最后根据固定预测SpSr,更新预测采样Sp,用I去更新量化步长索引值。
20
4 基于ADPCM的语音编解码设计的软件实现
本章提出了一种基于ADPCM的语音编解码设计,确定ADPCM实现的总体设计框图,以及ADPCM编码和解码实现过程的设计流程图, 并采用MATLAB软件对ADPCM编解码系统的实现进行了仿真。
4.1 总体设计框图
依据ADPCM编解码的基本原理,得出该设计的总体设计框图如图8所示,首先用电脑自带录音软件录制一段“.wav”格式语音作为设计中的信源即“输入语音信号”。用MATLAB自带函数“wavread(文件名)”将语音信号读取进来(该函数读入即为离散信号)并对其采样;然后,用ADPCM的编码方式对其编码;再将编码后的信号输入到一个模拟的信道中模拟传输,在输出端对信号进行语音还原即ADPCM的解码,并求得原始信号与编解码传输信号之后的误差。
输入语音信号采样ADPCM压缩语音信号 模拟信道ADPCM解码还原语音求出误差图8 程序框图
该主程序主要代码如下: [y,fs]=wavread('lf.wav');
sound(y,fs) %播放原始语言 y=wavread('lf.wav'); %读入原始语音 y1=y(1:1000:1323000 ,1); %采样
bmh=bm(y1); %对信号进行编码 x=awgn(bmh,20); %加白噪声模拟信道 bmh=round(x); %滤波取整 Y=jm(bmh); %对信号解码 Z=Y-y1'; %计算误差 [y1,fs]=wavread('lf.wav');
sound(y1,fs) %播放语音,便于人耳识别
4.2 编解码设计流程图
ADPCM的编解码系统主要是由四个部分组成:量化、逆量化、量化阶数的更
21
新以及自适应预测器。首先,量化器由前后两个PCM信号的差值编码成为ADPCM的形式;然后,通过后向自适应预测器的动态调整改变量化阶数的大小,即用大的量化阶编码大的差值,用小的量化阶编码小的差值。量化阶数更新后送入逆量化器,逆量化器将编码后的信号还原为预测的差值,然后再送回到后向自适应量化器中。这样,整个系统就可以重复不断的进行量化编码知道结束,实现其功能如图9所示流程。
由上可知,要实现ADPCM算法其核心问题在于预测系数的更新。
开始计算预测值开始差值编码计算预测值量化重构重构量化更新系数更新系数返回编码值返回重构信号结束(a)编码流程图结束(b)解码流程图图9 ADPCM算法实现流程图
部分程序代码说明:
%以下用于确定编码的最高为D3位。
cz= ys_y(n) - qyz; %信号现在值与预测值差 if (cz < 0)
code = 8; %如果差值大于0,则负号位为0,否则为1
22
cz = -cz; %取正值 else code =0; end
%以下确定编码的次高位D2位。并按照此算法依次确定D1、D0位,从而确定其编码值
xbc = bc; %步长,量化级 if (cz >= xbc)
code = bitor(code, 4); %按位或运算,将第三位编码为1 cz = cz - xbc; end
%确定最小量化阶。并用此算法依次判断第一第二位并更新其量化阶 czq = bitshift(bc, -3); %将步长变为原来的1/8
if (bitand(code, 4)) %按位与运算,判断第三位是否为1 czq = czq + bc; %原步长+1/8原步长 end
%以下用于求出新的预测值。
if (bitand(code, 8)) %判断最高是否为1
qyz = qyz - czq; %将上一个预测值减去步长得到新的预测值 else
qyz = qyz + czq; end
在编码程序的过程中,会得到4位的code,其中最高位是符号位,后面的3位则是幅度位。在整个编码过程中,首先要进行的就是正负符号位的判断,然后再通过3次的按位“移”运算即bitshift进行差值的大小判断,从而确定索引指针sy以及相应步长索引bct(sy),得到量化步长。得到量化步长之后,根据ADPCM的编码原理计算其编码值I(k),然后通过I(k)和之前相逆的过程求出差值Dq(k),进而计算预测采样值Sp(k)和重构信号Sr(k),确定新的sy和bct(sy)。索引调整表syb和步长索引表bct(sy)分别是16×1和89×1的矩阵,里面的数值要事先写到程序中,以供查表使用。
4.3 仿真结果
用电脑录音机录取一段60秒的语音,文件格式为“.wav”,文件名为“lf.wav”,作为仿真设计的信源即原始语音信号,并采用matlab6.5软件对其编程仿真,其仿真程序详见附录。用“y=wavread('lf.wav');length(y)”两个
23
语句计算出语音长度为1323000,本设计采样是每隔1000个点取1个即总共取1323个样点,此时为采样后的波形如图10所示:
图10 原始语音波形
在经过采样后,调用ADPCM编码的子程序对离散的信号进行编码压缩,压缩完之后的图形如图11所示,因为采用是四位二进制数对其编码,其编码结果由图可知均在0到15之间。
图11 ADPCM编码后语音波形图
解码输入的信号即为编码的输出信号,编码后的信号经模拟信道传输过来给解码端对其语音压缩信号采用ADPCM的解码方式对语音进行解码,解码后的语音波形如图12所示。再仔细比较图10和图12可看出,经ADPCM处理之后,其语
24
音信号的波形与给定的原始信号的波形除了振幅上有一点点微小的差别外,几乎没有什么不同。
图12 ADPCM解码后波形图
经ADPCM编解码之后与原信号差生的误差,其波形如图13所示,其误差很小,几乎处在-0.04到0.04之间,只有少数几个点的误差比较大,但都未超过0.1。
图13 ADPCM编解码误差图
在程序的结尾部分再次播放了语音,经ADPCM处理后的语音,在还原后音质与原始语音差别不大,人耳可以很清晰的识别语音。
通过上面仿真分析得知,ADPCM具有如下几个优点:
25
① 通过MATLAB仿真计算,得出语音信号经ADPCM处理后的均方误差为5.1605e-005,通常,均方误差越小其波形还原度越好,失真越小,从数据可以看出经ADPCM处理后的信号其还原度非常好;②就编码速率来讲,ADPCM的编码速率为16KB/S,优于其他编码方式;③就其编解码的复杂度而言,ADPCM采用四位二进制的差值编码方式,使用起来简单又容易实现;④它的抗噪能力也比较强即稳健性相当好。
26
结束语
随着新的通信方式以及计算机网络的飞速发展 ,对语音信号编码传输的要求也随之提出了新的要求。在新一代网络中 ,希望可以充分利用信号源的特征和其信道的统计复用性 ,改变以往的信源一般输出恒定速率码流的特点 ,以具有不同速率的分层编码和变速编码 ,作为新的信源编码系统。
ADPCM算法的思路比较清晰,其软件编程实现较方便,具有较优的语音跟踪性,同时可以很好地压缩语音信号,因而大大缩减了其数据存储空间,而且也提高了数据的传输速度。ADPCM算法在当前已经成为一种极其受用的语言压缩算法,它既能有效的压缩语音,而且又能还原出高质量语音。
本设计即是针对ADPCM算法的特点,设计了一个基于ADPCM的语音编解码设计,用MATLAB软件对ADPCM编解码系统的实现进行了仿真。
从上面的仿真结果来看,ADPCM编码的效率是比较高的,而且其解码后的误差也比较小。ADPCM算法的编码位数为4位二进制,提供了更高的压缩比,减小了带宽利用率,同时也提高了频率利用率,因此在频带如此紧缺的现代通信中具有相当广泛的应用前景。
虽然此设计算法比较简单易懂,但还有需要改进的地方和许多不足之处: 1)语音信号在传输过程中必然会携带一定量的噪声,本设计虽然在编码后加入了一定量的模拟噪声,但并未发现其影响,因而不能更好的体现其抗噪的优越性。这是一个值得改进的地方。
2)信号并不都是稳定的,其变换速度有快也有慢,在编解码时它的自适应量化和自适应预测必然会存在一个跟踪信号能力的问题,因而会产生一定量的误差,而在本设计中并未设计到怎样降低该误差,所以这是一个不足之处。
27
参考文献
[1] 张雄伟,陈亮,杨吉斌.现代语音处理技术及应用[M].北京:机械工业出版社,
2003.
Zhang XiongWei,Chen Liang,Yang Jibin modern voice processing technology and application [M].Beijing: Mechanical Industry Press, 2003.
[2] 蔡莲红,黄德智,蔡锐.现代语音技术基础与应用[M].北京:清华大学出版社,
2003.
Cai Lin Hong,Huang Dezhi, Cai Rui modern speech technology foundation and
application [M].Beijing: Tsinghua University Press,2003.
[3] [美]IT.W.Parsons著.文成义,常国岑,王化周.赖金福译.语音处理[M].北
京:国防工业出版社,1990.
[America] IT.W.Parsons was.Wen Cheng Yi,Chang Guocen,the king of
weeks.Lai Jinfu translation.Speech Processing [M].Beijing: National Defense Industry Press,1990.
[4] 张刚,张雪英,马建芬.语音处理与编码[M].北京:兵器工业出版社,2000. Zhang Gang,Zhang Xueying,Majian Fen.Voice processing and coding [M].
Beijing: Weapon Industry Press,2000.
[5] 胡光锐.语音处理与识别[M].上海:上海科学技术文献出版社,1994. Hu Guangrui.Voice processing and recognition [M].Shanghai: Shanghai Science
and Technology Literature Publishing House,1994.
[6] Michael Koerner著.李逸波,郭天杰,王华驹译.最新语音识别技术[M].北
京:电子工业出版社1998.
Michael Koerner forward.Li Yibo,Guo tianjie,Wang Huaju translation.The latest
speech recognition technology [M].Beijing: Electronic Industry Press, 1998. [7] 冯重熙.话音编码技术的进展[J],通信学报,1992.
Feng Chong-xi. Voice coding technology progress [J], Journal of Communication,
1992.
[8] 蒋海霞.典型低速语音编码算法抗背景噪声性能的研究与应用[D].南京:
通信工程学院,1999.
Jiang Haixia. A typical low-speed voice coding algorithms antinoise performance
background research and application of [D]. Nanjing: Communication Engineering, 1999.
[9][美]McEIiece.R.J.李斗译.信息论与编码理论[M].北京:电子工业出版
28
社,2004.
[America] McEIiece. R. J. Lee Doo translation. Information Theory and Coding Theory [M]. Beijing: Electronic Industry Press, 2004.
[10] 鲍长春.低比特率数字语音编码基础[M].北京:北京工业大学出版社,2001.
Bao Changchun. Low bit rate digital speech coding based [M]. Beijing: Beijing University Press, 2001.
[11]丁玉美,高西全.数字信号处理[M].西安:西安电子科技大学出版社,2001.
Ding Mei, Gao full digital signal processing [M]. Xi'an: Xi'an University of Electronic Science and Technology Press, 2001.
[12] 陈溯.ADPCM语音压缩编码的分析与仿真[J].中国西部科技.2008.
Chen Su. ADPCM voice compression coding analysis and simulation [J]. Technology of West China .2008.
[13]丁玉美,阔永红,高新波.数字信号处理—时域离散随机信号处理[M].西安:
西安电子科技大学出版社,2002.
Ding Mei, wide Yonghong, high-tech wave of digital signal processing - time-domain discrete stochastic signal processing [M]. Xi'an: Xi'an University of Electronic Science and Technology Press, 2002.
[14]楼顺天.基于MATLAB的系统分析与设计—信号处理[M].西安:西安电子科技
大学出版社,1998.
Floor Shun. MATLAB-based system analysis and design - Signal Processing [M]. Xi'an: Xi'an University of Electronic Science and Technology Press, 1998. [15] 吴力勤.基于ADPCM语音压缩编码算法的研究与实现[D].四川大学.2006. Wu Liqin. ADPCM voice compression coding algorithm based on the research
and implementation [D]. Sichuan University .2006.
[16] 李天任.基于DSP的ADPCM编译码系统研究[D].长春理工大学.2005.
Tian Ren. ADPCM codec DSP-based System [D]. Changchun University of .2005.
[17] 黄慧明,王瑛,赵思伟,张知易.语音系统客观音质评价研究[J].电子学
报.2000.
Huang Huiming, Wang Ying, Zhao Siwei, Zhang Zhi Yi. Objective voice quality evaluation system [J]. Electronic Journal .2000.
[18]樊昌信,张甫翔,徐炳祥,吴成柯.通信原理(第五版)[M].北京:国防工业出版
社,2001.
Fan Changxin, Zhang Fu Xiang, Xu Bingxiang, Wu Cheng-ke. Communication
29
Theory (fifth edition) [M]. Beijing: National Defense Industry Press, 2001. [19] 廖广锐,刘萍.基于ADPCM语音压缩编码算法研究[J].计算机与数字工
程,2006.
Liaoguang Rui, Liu based ADPCM voice compression coding algorithm [J]. Computer and Digital Engineering, 2006.
[20]胡航.语音信号处理[M].哈尔滨:哈尔滨工业大学出版社,2000.
Hu Hang. Speech Signal Processing [M]. Harbin: Harbin Institute of Technology Press, 2000.
[21] 殷严刚,唐宁,周松青.基于ADPCM技术的合成语音芯片设计[J].光通信研
究.2008.
Yin Yan Gang, Downing, Zhou Songqing based ADPCM speech synthesis chip design technology [J]. Optical Communications .2008.
[22]刘玉君.信道编码[M].郑州:河南科学技术出版社,1992.
Liu Yujun. Channel coding [M]. Zhengzhou: Henan Science and Technology
Press, 1992.
[23]吕峰,王虹,刘皓春,苏扬.信息理论与编码[M].北京:人民邮电出版社,
2004.
Lu Feng, Wang Hong, Liu Haochun, Su Yang. Information Theory and Coding [M]. Beijing: People's Posts and Telecommunications Press, 2004. [24]常迥.信息理论基础[M].北京:清华大学出版社,1993.
Often circuitous. Information theory [M]. Beijing: Tsinghua University Press, 1993.
[25] 吴力勤.基于ADPCM语音压缩编码算法的研究与实现[D] .四川大学,2006 Wu Liqin. ADPCM voice compression coding algorithm based on the study and
implementation of [D]. Sichuan University, 2006
[26] 李天任.基于DSP的ADPCM编译码系统研究.长春理工大学, 2005
Li Tianren. ADPCM codec DSP-based systems research. Changchun University
of Technology, 2005
[27] 陈明义等.基于FPGA的ADPCM语音编解码器设计实现.电子科技[J],2007
Chen Mingyi. FPGA-based ADPCM voice codec design and implementation. Electronic Technology [J], 2007
30
致 谢
我们总会感慨时光如梭。四年的求学生涯说不长也不短,在师长、同学、亲友的大力支持下,虽然走得有些辛苦却也收获颇多。在论文即将结束之际,思绪万千,内心久久不能平静。 伟人与名人虽然为我所崇拜,但我更急切的需要把我的崇敬和赞美献给我的指导老师。虽然我不是您最出色的学生,但是您却是我最尊敬的老师。您有着严谨的治学态度,渊博的学识,深邃的思想,雄阔的视野,为我们创造了一种良好的学习氛围。俗话说“授人以鱼不如授人以渔”,耳濡目染,潜移默化,置身其间,不仅培养了我的全新的思考方式,使我树立了远大的学术目标,也领悟到了基本的思考方式,从毕业论文课题的选定,到论文的写作与指导,经过您的悉心点拨和我深刻的思考后,经常使我有一种“山重水复疑无路,柳暗花明又一村”的感觉。
感谢我最亲爱的父母,没有你们就没有今天的我,你们的养育之恩我无以回报,我最大的心愿是希望你们永远快快乐乐,健健康康。在这论文即将要完成之际,我的内心千回百转,从刚开始的课题进入,一直到顺利完成论文,有许许多多可亲可爱的师长、同学以及我的朋友给了我无声的帮助,在此请接受我最真诚的谢意!
最后再一次感谢我的指导老师,感谢所有在我毕业设计中曾经帮助过我的老师、同学和朋友,当然还要感谢在我设计中被我引用或者参考的论著的作者。
31
附 录
MATLAB程序如下: %ADPCM编码:
function bmh = bm(ys_y)
syb = [-1, -1, -1, -1, 2, 4, 6, 8, -1, -1, -1, -1, 2, 4, 6, 8];%索引调整表
bct = [7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767];%步长索引表 yz = 0; sz = 1;
Ns = length(ys_y); n = 1;
ys_y = 32767 * ys_y; % 降输入信号变为16bit while (n <= Ns) qyz = yz;%预测值传递 sy = sz;%索引指针 bc = bct(sy);
cz = ys_y(n) - qyz;%信号现在值与预测值差
if (cz < 0)%如果差值大于0,则负号位为0,否则为1 code = 8; cz = -cz;%取正值 else code =0; end
xbc = bc;%步长,量化级
32
if (cz >= xbc)
code = bitor(code, 4);%按位或运算,将第三位编码为1 cz = cz - xbc; end
xbc = bitshift(xbc, -1);%二进制移位操作,目的是变成1/2 if (cz >= xbc)
code = bitor(code, 2);%按位或运算,第二位编码为1 cz = cz - xbc; end
xbc = bitshift(xbc, -1); if (cz >= xbc)
code = bitor(code, 1);%第一位编码为1 end
czq = bitshift(bc, -3);
if (bitand(code, 4))%按位与运算,提取第三位 czq= czq +bc; end
if (bitand(code, 2))
czq = czq + bitshift(bc, -1); end
if (bitand(code, 1))
czq = czq + bitshift(bc, -2); end
if (bitand(code, 8)) qyz = qyz - czq; else
qyz = qyz + czq; end
if (qyz > 32767) qyz= 32767;
elseif (qyz < -32768) qyz = -32768; end
33
sy = sy + syb(code+1); if (sy < 1) sy = 1; end
if (sy > 89) sy = 89; end yz = qyz; sz = sy;
bmh(n) = bitand(code, 15); %bmh(n) = code; n = n + 1; end
%ADPCM解码:
function ys_y = jm(bmh)
syb = [-1, -1, -1, -1, 2, 4, 6, 8, -1, -1, -1, -1, 2, 4, 6, 8]; bct = [7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 25, 28, 31, 34, 37, 41, 45, 50, 55, 60, 66, 73, 80, 88, 97, 107, 118, 130, 143, 157, 173, 190, 209, 230, 253, 279, 307, 337, 371, 408, 449, 494, 544, 598, 658, 724, 796, 876, 963, 1060, 1166, 1282, 1411, 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024, 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484, 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899, 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794, 32767]; yz = 0; sz = 1;
Ns = length(bmh); n = 1;
while (n <= Ns) qyz = yz; sy= sz; bc = bct(sy); code = bmh(n);
34
czq = bitshift(bc, -3); if (bitand(code, 4)) czq = czq + bc; end
if (bitand(code, 2))
czq = czq + bitshift(bc, -1); end
if (bitand(code, 1))
czq = czq + bitshift(bc, -2); end
if (bitand(code, 8)) qyz = qyz - czq; else
qyz = qyz + czq; end
if (qyz > 32767) qyz = 32767;
elseif (qyz < -32768) qyz = -32768; end
sy = sy + syb(code+1); if (sy < 1) sy = 1; end
if (sy > 89) sy = 89; end yz =qyz; sz = sy;
ys_y(n) = qyz / 32767; n = n + 1; end
35
%输入一个语音信号的编码解码过程: [y,fs]=wavread('lf.wav'); sound(y,fs)
y=wavread('lf.wav'); y1=y(1:1000:1323000 ,1); bmh=bm(y1); x=awgn(bmh,20); bmh=round(x); Y=jm(bmh);
[snr,mse]=snrmse(y1,Y) Z=Y-y1'; figure(1) plot(y1)
title('输入语音信号y1'); figure(2) stem(bmh)
title('ADPCM编码'); figure(3) plot(Y)
title('ADPCM解码'); figure(4) plot(Z) title('误差');
[y1,fs]=wavread('lf.wav'); sound(y1,fs) %求均方误差及信噪比
function [snr,mse]=snrmse(y1,Y) Ps=sum(sum((y1-mean(mean(y1))).^2)); Pn=sum(sum((y1'-Y).^2)); snr=10*log10(Ps/Pn); mse=Pn/length(y1);
36
37
因篇幅问题不能全部显示,请点此查看更多更全内容