网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> FAQ >> 硬件开发 >> 文章正文
  基于DSP Builder的ADPCM算法实现         ★★★ 【字体:
基于DSP Builder的ADPCM算法实现
作者:61IC    文章来源:本站原创    点击数:    更新时间:2006-9-5    

作者:曹晓东 苗长云 李鸿强 石博雅 来源:微计算机信息

摘要:本文对ADPCM编解码原理进行了分析,并针对语音记录系统的特点,对标准ADPCM编解码系统进行了简化。提出了一种适合语音记录系统的16kbps的ADPCM语音编解码方案,并利用DSP Builder实现了该编解码方案。
关键词:ADPCM,DSP Builder,语音记录系统,VHDL
1引言

数字技术的出现与应用给人类带来了深远的影响,但数字信号也有其自身的缺点,如对存储器存储容量需求的增大及传输时对信道容量要求的增高。为了节省资源、降低成本,需对数字语音信号进行压缩编码。自1937年A.H.Reeves提出脉冲编码调制以来,语音压缩编码技术已有60余年的发展历史,在保证语音质量的前提下语音数据的速率也由最初的64kbps降低到了现在的4kbps甚至更低。CCITT于1984年通过了32kbps ADPCM语音编码G.721建议,它不仅可以达到PCM相同的语音质量而且具有更优良的抗误码性能,广泛的应用于卫星以及可变速率编码器中。G.726标准(ADPCM)包含CCITT的G.721和G.723建议。本系统所采用的设计软件有quartusII4.1、DSP Builder2.2和Modelsim6.0。

通过对CCITT G.726中的16kbps ADPCM 编解码原理的分析,提出了一种适合于语音记录系统的简化的ADPCM编解码方案,并利用DSP Builder实现了该编解码方案。

2 ADPCM编解码原理

G.726标准(ADPCM)包含CCITT的G.721和G.723建议,是一种适合于各种波形、图形以及调制数据的波形编码技术。ADPCM系统不是原始信号的编码系统,而是一个利用样本与样本之间的高度相关性来实现数据压缩的代码转换器,它的编码值代表了实际值和预测值的差。按照标准ADPCM算法,ADPCM系统由自适应量化器模块,逆自适应量化器模块,自适应预测器模块,信号重建模块,同步码调整模块,量化标度因子自适应模块,自适应速度控制模块等模块组成。其中自适应预测器是一种滤波器,它的系数由梯度算法来修改。量化标度因子根据差分信号的幅度进行调节,使量化阶的大小适应信噪比的要求。在对量化标度因子y(k)进行自适应更新的过程中,为了使自适应量化器能对语音信号(非平稳信号)和非语音信号(平稳信号)都可以获得最佳自适应特性,在标准ADPCM算法中设置有自适应速度控制模块。

量化标度因子的计算公式为:

   (1)

其中 yu(k)为上一帧的快速变化(语音)信号对应的量化标度因子分量,即快速量化标度因子。

yl(k)为上一帧的慢速变化(非语音)信号对应的量化标度因子分量,即慢速量化标度因子。

a(k)为速度控制系数。

出现在解码器模块末端的同步码调整模块对输出PCM字Spcm进行再编码,并把得到的新码子ID与原始的ADPCM字I 比较得到最终的解码结果。

如果ID>I,说明Spcm被估高了,则选择Spcm-1作为Spcm的新值。

如果ID<I,说明Spcm被估低了,则选择Spcm+1作为Spcm的新值。

否则,说明Spcm被正确估计,则保持Spcm的值不变。

ADPCM算法的一个重要特点是解码器中的解码算法已嵌入在编码器中,故在设计中可以只设计编码器,而解码器可以直接有编码器中的模块组合得到。

标准ADPCM编码框图如图1所示:



 

3 针对语音记录系统对标准ADPCM算法的简化

(1)对于速度控制因子a(k),当输入为平稳信号(如单音信号,DTMF信号)时,其值介于0到1之间,而当输入信号为非平稳信号(如语音信号)时,其值是趋于1的。因此在输入只有语音时,可以将a(k)的值近似为1,从而可以取消对自适应速度控制系数a(k)及慢速标度因子yl(k)的计算,而直接把计算得到的快速量化标度因子yu(k)作为新的量化器标度因子y(k),从而可以在保证合成语音质量的前提下极大的降低算法的复杂程度。

(2)标准ADPCM算法中的PCM扩张和压缩接口,是为了在对30(32)路的PCM方式数字通信的一次群信道中进行60路的ADPCM方式数字通信时实现与原设备的兼容而设计的。而在本设计中ADPCM编码模块的输入信号已经是线性的PCM信号,故无须再对其进行PCM压扩运算。因此在本方案中取消了PCM压缩和扩张接口,这不仅可以极大的降低算法的复杂程度,更重要的是避免了在压扩PCM码过程中由于量化而导致的信息量的丢失,从而降低了语音的失真,提高了语音的质量。

(3)ASCII字符经ADPCM编码后进行传输时,可能会产生严重误码,因此在标准的ADPCM编解码系统中设计了单音/过渡音检测单元来实施补偿。在单纯的语音记录系统中,不存在ASCII字符的传输问题,因此在本方案中取消了单音/过渡音检测模块。

(4)由于在语音记录系统中无需对语音信号进行异地传输,故本方案取消了解码器中为实现通信同步而设的同步码调整模块,从而在对输出合成语音的质量没有任何的影响的前提下,降低了算法的复杂程度。

经过对ADPCM中各个模块作用的分析,针对语音记录系统的特点,去掉了一些不必要的模块,从而得到了一种简化的ADPCM语音编解码方案,其编码系统和解码系统的框图分别如图2和图3所示:

  4 ADPCM编解码算法的DSP Builder实现

4.1自适应量化模块和自适应逆量化模块

根据CCITT G.726的16kbps ADPCM建议,自适应量化可以用下表来实现在记录系统的输入端对差值信号的量化和在记录系统的输出端对量化信号的逆量化。

表1 CCITT G.726建议16kbps下的ADPCM算法的量化器标准化输入/输出特性

4.3自适应预测模块和信号重建模块
自适应预测模块是一种滤波器,它的系数由梯度算法来修改。由于N>2的多阶极点预测器的稳定条件难以确定,当有误码存在时,预测器将出现不稳定的现象,故此处采用由6阶零点和2阶极点预测器组成的双预测器结构,从而能够有效的适应各种可能遇到的输入信号,得到较好的预测结果。
信号重建模块的计算公式为:

该两阶极点预测器的两个系数可以通过一个简单的梯度算法来计算得到,计算方法如式7,式8所示:

------
                    sclr           =>    '0',
                result        =>    A12W);
end architecture aDspBuilder;


6 编解码系统的仿真
Matlab的Simulink环境具有强大的图形化仿真功能,可以直接在Simulink中对利用DSP Builder模块设计好的模型进行系统级仿真。
由于语音的频率范围为300~3400HZ,故此处采用频率为2kHZ、幅度为100的正弦信源作为仿真激励。在抽样频率为8000,输出端带有4000HZ低通滤波器的情况下得到的输入信号和输出信号仿真结果对比如下图所示:

7结束语
通过对G.726编解码原理的分析,设计了一种适合于语音记录系统的16kbps ADPCM 编解码方案。采用DSP Builder 设计软件建立了该编解码方案的模型,然后利用该软件中的signal compiler功能模块将mdl文件转化成了VHDL代码。用Modelsim验证该VHDL代码正确无误后,采用Altera公司的quartus II 软件 对该代码进行编译综合,最后将配置文件下载到Altera公司的EP1C6Q240C8 FPGA芯片中进行了硬件测试,测试结果为主观音质良好。该编解码系统已经在语音记录系统中得到了很好的应用。
欢迎访问无忧电子开发网技术文章 在线阅读 在线商城
参考文献
[1]林福宗 , 陆达.  多媒体与CD-ROM[M].  北京:清华大学出版社,1995.
[2] 江霞.在MATLAB中实现FPGA硬件设计[J].国外电子元器件,2005;(4):4~6.
[3] 潘松,黄继业,王国栋.现代DSP技术[M].西安:西安电子科技大学出版社,2003.
[4] 房德新 ,陆达.ITU G.726 语音编解码器在DSP上的实现[J].微计算机信息,2001;17(10).
[5] Peter Dent. G.726 Adaptive Differential Pulse Code Modulation(ADPCM) on the TMS320C54xDSP[R]. Texas Instruments Incorporated, May 2002.

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    基于DSP Builder的DDS设计及…
    ADPCM压缩算法源码
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号