- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
语音信号的A律编解码的DSP实现
录入:edatop.com 点击:
解压一般是压缩的逆过程,但有时为了使得量化误差不超过△i/2,可在解压后的数据位增加一个最低有效位,该最低有效位为1时经过D/A转换后对应△min/2电压,即将8位的压缩数据解压成13位的数据。本文中解压仍然按照解压成12位的数据,其解压流程如图3所示。图3中压缩数据暂存单元com的位*的段码值若大于l时,需将这4位段内码的前后相邻位都置1,然后将这6位送至解压数据暂存单元dcom的位(段码值+3)~位(段码值-2)即可,代码(见附录2)中采用的方法是对这6位逻辑左移(段码值-2)位。
4 实验分析及结论
由于语音信号可以分解成许多正弦频率的和,实验中采用200Hz的正弦信号代替实际的语音信号。将汇编语言编写的源程序和命令连接文件都添加到新建立的工程文件夹中,并编译、链接及装载程序运行,然后执行集成开发环境ccs的菜单命令View|Graph|Time Frenquency,打开Graph Property Dialog对话框,在此分两次输入标题名sine和decompress sine、起始地址0x0082和0x065E(命令连接文件.cmd中将.bss段定位到DARAM的org=0080h上),并选择数据的长度为200及数据类型为16-bit signed integer,然后点击ok按钮即可生成图4和图5的曲线。
与图4相比,图5只有在幅值比较大时两者的误差才略为明显,这是A律解压算法特性造成的,对语音信号的影响并不大,因为语音信号出现大幅度值的概率小。
本文完成的语音信号的A律编解码的DSP实现,经过实验表明,可以达到实时的语音压缩及解压效果
附录1压缩代码
来源:维库开发网