ADPCM原理与应用简介摘要:本文介绍了PCM、DPCM、DM、ADM以及ADPCM的基本原理,并以ADPCM为文章的重点,对它的编解码原理及算法实现的流程框图进行了的讨论。最后以ADPCM在通信中的应用为例讨简单介绍了在实际通信中的应用。关键字:ADPCMPCMADM编码原理Abstract:ThisarticleintroducethebasicprincipleofPCM、DPCM、DM、ADMandADPCM.WetakeemphasisonADPCM,anddiscussthetheoremofcodinganddecodingofADPCM,thenintroducetheflowcharofthetheorem.AtlastwetakeADPCMasexampletoseetheuseincommunicationsystem.Keyword:ADPCMPCMADMtheoryofcoding一、引言近几十年来对语音数字化和数字化压缩进行了许多研究工作,并取得了丰硕的成果。1982年CCITT制定了64kb/s压扩PCM语音编码标准G.711。1986年CCITT又制定了32kb/sADPCM语音压缩编码标准G.721。ADPCM是波形编码中非常有效的一种数字编码方式。在ADPCM系统中量化器和预测器均采用自适应方式,即量化器和预测器的参数能随输入信号的统计特性自适应于或接近于最佳的参数状态。与PCM系统相比,ADPCM的量化器和预测器都是根据前面出现的PCM抽样值并对下一个抽样值进行预测,将当前的抽样值和预测值进行求差,然后对差值进行编码。对差值编码需要的位数要比直接对原始语音信号编码所需的位数少,从而达到对信号压缩的目的,在这里编码所包含的信息从原来的原始语音信号变为语音信号之间的变化。本文对PCM、DPCM、DM、ADM以及ADPCM的基本原理进行讨论,并对它们性能进行比较,最后简单介绍了ADPCM在现代通信中的应用。二、基本原理介绍1.脉冲编码调制PCM脉冲编码调制PCM(PulseCodeModulation)是使用最为广泛的调制方法。在PCM的调制过程中,将输入的模拟信号进行取样,量化和编码。这种方法通过用脉冲编码量化后的值来代表模拟信号的幅度,即用二进制的大小来代表模拟信号的幅度。在接收端再将这些编码的二进制数还原为原来的模拟信号。2.差分脉冲编码调制DPCM差分PCM(DifferentialPCM)记录的不是信号的绝对大小而是相对大小。因为信号的相对大小的变化通常要比信号本身要小,编码是所用的码位也就少。如果取样频率足够高,大多数连续的样值之间会有很大的相关性。差分系统就是利用这种信息的冗余,不记录信号的大小,而是记录相邻值之间的差值的大小。抽样值+量化器预测器+xnene~nx~nx~n图2.1DPCM编码器示意图差分编码采用预测编码技术,从输入中减去预测值,然后对预测误差进行量化,最终的编码就是预测值与实际值之间的差值。解码器用以前的数据对当前样值进行预测,然后用误差编码重构原始样值。这种方法使用的比特数较少,但它的性能决定于预测编码方法以及它对信号变化的适应能力。3.增量调制DMDPCM对输入信号与预测值之差进行编码。当取样的频率提高时,样值之间的变化减小,样值之间的相对性变强。增量调制DM(Deltamodulation)是一种特殊简化的DPCM,只用了1bit的量化器,它采用较高的取样频率和1比特的编码。因为只能用一个量化级来代表样值的变化,为了跟踪信号的变化,必须使用高的取样频率,一般要求在200kHz以上。因此编码反映的只是差分本身,而不是原始的信号。而且在DM中,当语音波形幅度发生急剧变化时,译码波形不能充分跟踪这种急剧的变化而必然产生失真,这称为斜率过载。而在没有语音的无声状态时,或者信号幅度为固定值时,量化输出都将呈现0、1交替的序列。这种噪声称为颗粒噪声。4.自适应增量调制ADM一般情况下,人耳对过载量化噪声不是很敏感,而对颗粒噪声较为敏感,所以要将△的幅值取得足够小。但是△取得小,过载噪声就会增大,因而这时必须增加采样频率,以减少信号量化过程中的过载噪声,然而如果提高采样频率,那么信息压缩的效果就会降低。兼顾这两方面的要求,应采用随输入波形自适应的改变△大小的自适应编码方式,使△值随信号平均斜率而变化:斜率大时,△自动增大;反之则减小。这就是自适应增量调制ADM(AdaptiveDM)。这个方法的原理是:在语音信号的幅值变化不太大的区间内,取小的△值来抑制颗粒噪音;在幅值变化大的地方,取大的△值来减小过载噪音。其增量幅度的确定方法为,首先在颗粒噪音不产生大的影响的前提下,确定最小的△幅值。在同样的符号持续产生的情况下,将△幅值增加到原来的2倍。即当+△、+△这样持续增加时,如果下一个残差信号还是相同的符号,那么再将△幅值增加一倍,如此下去,并且确定好某一个最大的△幅值上限,只要在这个最大的△幅值以内同样的符号持续产生,就将△幅值继续增加下去。如果相反,残差信号值为异号时,就将前面的幅值△设为原来的21,重新以2为幅值。也就是说,如果同样的符号持续产生两次以上,在第三次时就将△幅值增加一倍,如果产生异号,将△幅值减小21。而且,当异号持续产生而减小△幅值时,一直减小到以最初确定的最小的△幅值为下限为止。这种ADM算法中,它的采样率至少是16kHz。5.自适应差分脉冲编码调制ADPCM1.编码原理自适应差分脉冲编码调制ADPCM(AdaptiveDifferentialPulseCodeModulation)用预测编码来压缩数据量。它结合了ADM的差分信号与PCM的二进制码的方法,是一种性能比较好的波形编码。它的核心想法是:①利用自适应的思想改变量化阶的大小,即使用小的量化阶(step-size)去编码小的差值,使用大的量化阶去编码大的差值,②使用过去的样本值估算下一个输入样本的预测值,使实际样本值和预测值之间的差值总是最小。+量化步长调节预测器SiXp(n-1)-+逆量化器d+编码输出dqSrSpq图2.2ADPCM原理框图编码的核心思想是对差值进行编码和预测,采用非均匀量化,并使不同幅值的信号信噪比接近一致,避免大幅值语音信号信噪比大而小幅值语音信号信噪比小。ADPCM编码过程如图2.2所示输示。输入Si是一个16bit二进制补码语音数据,其范围在32767到-32767之间。预测采样值Sp,与线性输入Si的差值为d。量化器对差值进行量化产生一个有符号的4位编码数据I,这个数据的表示范围在7到-7之间,最高位为符号位。编码时,首先计算16位的二进制补码的当前采样值Si和上一预测采样值Sp之间的差值d,这个差值的量化编码即输出4位ADPCM值I。在算法实现中,定义一个结构变量存储预测采样Sp和量化步长索引,并制定了两个表。一个表为索引调整表,其输人为差值量化编码I,用来更新步长索引。另一个表为步长调整表,其输人为步长索引,输出为步长q。编码时,首先用上一个采样点的步长索引查步长调整表求出步长q。如果当前采样值Si和采样预测值Sp之间的差值d为负,则I的D3位置1。如果该差值绝对值大于步长q,则I的D2位置1。如果qd大于2q,则I的D1位置1,如果2qqd大于4q,则I的D0位置1。如果以上条件不满足,则相应位置0。这样就确定了编码值I。然后编码值I作为索引调整表的输入,查表输出索引调整,并和结构变量中原步长索引相加,产生新的步长索引,在下一个采样值的编码中使用。编码输出I后,编码还需要重复进行和解码完全一样的计算过程,求出新的预测采样值Sp。逆量化器步长调节预测器+IdqSrSpq图2.3解码原理框图2.解码原理解码是编码的逆过程,ADPCM的解码过程如图2.3所示。解码输入即编码输出I,逆量化器将I逆量化成差值dq。差值dq与预测采样Sp相加得到解码输出Sr。解码过程同编码过程中求预测采样的原理是一样的,当编码端的Sr能很好的跟踪上Si时,解码端的Sr也能同样再现Si。这里涉及算法本身的时延和实现平台、实现方法的实时性等因素。解码时首先通过步长索引查步长调整表得到量化步长,差值量化编码I经逆量化器得到语音差值dq,这是求I的逆过程;然后与前次预测值一起重建当前语音信号Sr,最后用固定预测SSrp,更新预测采样Sp,用I更新量化步长索引值。三、ADPCM在通信系统中的应用根据CCITT的G.721建议,以码率为32kb/s的ADPCM作为语音压缩的国际标准。在ADPCM算法中,它的采样率可以是8KHz,采样精度16bit,量化阶的保存为4位,因此压缩比为4:1,即每秒保存或者传送大小为32Kbit。且从波形恢复出来的声音效果与原始声音几乎没有区别,人耳无法辨别。ADPCM在语音编码的技术要求如下:语音信号经ADPCM编码后,客观测量SNR完全符合PCM编码系统的指标要求(CCITTG.721G.711的建议),主观听觉测试性能,应非常接近于PCM质量。经过4次音频转接后,主观语音测试质量良好。在信道误码率低于103的情况下能稳定工作。sbit4800的Modem信号经过4次编解码后,其误码率应小于101065~。输人输出接口采用标准的A律或律PCMskbit64信号。目前ADPCMskbit32主要应用于扩充现有PCM信道传输容量,即把两个30路PCM信号合并成一个skbit2048的60路ADPCM信号,这是CCITTG.761建议的国际标准。由于标准PCMskbit64是经过对数压缩后的数字信号,它不能直接进行一般算术运算。所以,在进人ADPCM编码前,必须把A律PCM码变换成自然二进码,又称为PCM线性码。这可以通过两者之间内在的对应关系来实现。在接收端,则需要进行一次反变换,即将收到的60路的skbit2048的信号,分解成两个含30条话路的信号,且这两个PCM信号中各话路所占时隙位置与编码转换前完全相同,从而实现了在不提高传输速率的情况下将数字信道的容量扩大一倍。即用ADPCM码解码得到的线性PCM码来表示重建的信号,然后变换成A成律或律后对数信号输出。图3.1是一个ADPCM在实际应用中的示意图。终端机信道机信道机终端机ADPCM信道机信道机ADPCM信道机信道机图3.1ADPCM实际应用示意图。四、总结ADPCM算法思路清晰,软件编程实现方便,具有良好的语音跟踪性能,能够很好地压缩语音信号,从而大大缩减数据存储空间,并且提高数据的传输速度。与其它编码方式相比,ADPCM能提供跟高的压缩比,提高了频率利用率,因此在频带紧缺的现代通信中具有广泛的应用前景。参考文献[1]李白萍.现代通信理论.西安电子科技大学出版社.2006[2]廖广锐,刘萍.基于ADPCM的语音压缩算法研究.计算机与数字工程.第35卷2007第7期[3]戴振华.ADPCM设备在湖北微波通信中的应用.电力系统通信.1997年第2期[4]陈明义.基于FPGA的ADPCM语音编解码器设计实现.电子科技.2007年第1期[5]杨自.ADPCM语音解码合成输出系统的设计.光通信研究.2009年第1期[6]钱亚生,冯重熙.ADPCM自适应差分脉码调制[7]管叙涛.ADPCM系统中的自适应技术.南京邮电学院学报.1988年,第8卷,第2期[8]陈溯.ADPCM语音压缩编码的分析与仿真.中国西部科技.2008年11月(中旬)第07卷第32期总第157期