打印

基于DSP的实时语音压缩解压的算法

[复制链接]
668|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Plantt|  楼主 | 2019-3-1 11:01 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于DSP的实时语音压缩解压的算法


     摘  要:DSP(数字信号处理器)具有强大的数字信号处理能力,在其应用系统中,大多由ADC和DAC通道来完成对模拟信号的数字化处理。本文介绍了一种集成ADC和DAC于一体的TLC320AD50C模拟接口电路与TMS320VC5416定点DSP接口电路的硬件设计方法,并结合一个具体的软件实例说明主从模式下软件的实现方法。
     关键词: 实时   DSP   语音压缩


一、引言
       目前,语音信号压缩技术发展十分迅速,出现了很多高效率的语音压缩编码方法。以语音信号压缩的国际标准G.729为例,它可将经过采样的64kb/s语音信号高保真地压缩到8kb/s,但其模型编码算法的运算量很大。同时又要求对语音信号进行实时采样实时压缩处理,这样对数据采集和处理系统提出了更高的要求。

针对上述的问题通常的解决方法有三种:
第一种方法是使用嵌入式处理器(比如凌阳SPCE061A芯片)构成嵌入式语音系统实现语音处理压缩功能。该方法设计简单,价格便宜,使用方便灵活。但语音处理能力有限。只有在数据量不大、处理系统不繁忙的情况下,这种方法才有效。
第二种方法是使用FPGA/CPLD构成片上系统实现实时语音压缩处理。该方法开发周期短,利用重配置可以减少硬件的开销。但在比较低的取样速率时和有很高复杂度的软件问题的情况下,FPGA实现很困难。
第三种方法是使用通用数字信号处理器(DSP)强大的数据处理能力,由于DSP采用内部多总线结构,使数据的存储和指令的执行更加快捷。最重要的一点是,DSP具有快速的指令周期,如TMS320系列己经从第一代的200ns降低到现在的5ns(1600MIPS)以下,如此高的运算速度使其可以满足许多实时处理的需要。

二、实时语音压缩的原理
     在电话通信中,语音信号的编码方式一般为PCM(Pulse Code Modulation)编码。由于需要采集、存储、传输和处理的音频数据量极大,只有进行压缩后才能正常进行传输和存储。目前,用于语音压缩编码的算法有ADPCM,CELP,RPE—LTP,LPC,MBE,PW1,MELP等。其中最常用的是u/A律压缩解压。
u/A律压缩解压编码是国际电报电话协会(CCITT)最早推出的G711语音压缩解压编码的一种格式的主要内容。其中欧洲和中国等国家采用A律压缩解压编码,美国和日本采用u律压缩解压编码。现在介绍A律的资料较多,所以本实例着重介绍u律压缩解压算法。
所谓u律压缩就是压缩器的压缩特性具有如下关系的压缩律:
 у=ln(1+ux)/ ln(1+u)   0≤x≤1
式中 у——归一化的压缩器输出电压,
即 у=压缩器输出电压/压缩器可能的最大输出电压
  x——归一化的压缩器输出电压,
即 x=压缩器输出电压/压缩器可能的最大输出电压
  u——压扩参数,表示压缩的程度。
在使用u律的处理过程为:压缩和解压,压缩是指在发送端对输入信号进行压缩处理,再均匀量化,相当于非均匀量化;解压是在接收端进行相应的解压处理,以恢复原始信号。
图1是DSP硬件实现数据压缩解压的简单流程。


图 1 数据压缩解压流程

经过压缩的采样信号,按8位二进制编码,编码表如下:


8位码有三部分组成:极性码(0:负极性信号;1:正极性信号)、段落码、电平码。
U率解压编码表与编码表左右相反。U律编码= 极性码(musign)+段落码(muchord)+电平码(mustep),算法如下:
  muchord = (19- T|EXP)<<4 = 190 - (T|EXP)*16 + 10H;
    musign = (AH * (-1)) << 7 = (AH * FFFFH)*128 = AH * (FFFFH * 128) = AH * (FFFFH << 7) = AH * FF80H
mustep = (((|int| + 33) << (T|EXP)) << -26 ) -10H

三、实时语音压缩的硬件部分设计
      实时语音压缩的硬件电路框图如图1所示。本系统实现的是ITU-T的G711国际标准建议mu律PCM的语音处理过程。通过TCL320AD50对话筒输入或声卡输出的语音进行压缩,录入的数据存储在数据空间0x2000~0xa000。
图2、实时语音压缩的硬件电路框图

    四、实时语音压缩的软件部分设计
   一旦完成了正确的硬件连接,接下来就可以进行软件编程调试了。要完成的工作包括:     
    (1)TMS320VC5416串口的初始化。首先将DSP串口1复位,再对串口1的16个寄存器进行编程,使DSP串口工作在以下状态:以SPI模式运行,每帧一段,每段一个字,每字16位,采样率发生器由DSP内部产生,帧同步脉冲低电平有效,并且帧同步信号和移位时钟信号由外部产生。
    (2)AD50初始化。该初始化操作过程包括通过TMS320VC5416的同步串口发送两串16位数字信息到AD50。第一串为0000 0000 0000 0001B,最低有效位(bits0)说明下一个要传输的数据字属于二次通信。第二个数据值用来对AD50的4个数据寄存器的某一个进行配置。Bits15~11位为0,Bits10~8位为所选寄存器地址值,Bits7~0位为所选中寄存器的编程值。4个用户可编程寄存器的描述如下:R1中包含模拟输入通道选择,硬件 / 软件编程方式选择;R2进行单机 / 从机工作和电话模式选择;R3控制带从机个数选择;R4用来设置模拟信号可编程放大增益和A/D、D/A转换频率。其它两个寄存器R5、R6是厂家留着测试用的,用户不可以对其编程。我们在以下例程中对4个可编程寄存器编程,使AD50C工作在以下状态:选择INP/INM为工作模拟输入,15+1位ADC和15+1位DAC模式,不带从机,采样频率为8KHz,模拟信号输入和输出放大增益均为0dB。

图3、实时语音压缩的软件电路框图

五、程序运行的结果
下面图3为压缩前的原始信号“喂,喂”,而图4为TLC320AD50C与TMS320VC5416组成的数据采集系统对压缩前的原始信号“喂,喂”的采集结果。

图4、压缩前的原始信号“喂,喂”

图5、压缩后的语音信号“喂,喂”
   经过对压缩前后的语音信号对比分析,TLC320AD50C可以对语音信号进行无失真压缩。

七、结束语
      本文以TMS320VC5416与TLC320AD50C为例,详细介绍了AD50与DSP串口通信的硬件接口及软件实现。从实验结果我们可以发现TLC320AD50C可以对语音信号进行无失真采样,完全能满足后续语音信号处理的要求,并且与DSP接口简单,高性能,低功耗,已成为当前语音处理的主流产品。广泛适用于音频处理,语音增强,语音安全,回声抵消,VoIP等电话或语音应用中。


相关帖子

沙发
Plantt|  楼主 | 2019-3-1 11:02 | 只看该作者
基于DSP的实时语音压缩解压的算法

文档1.pdf

189.65 KB

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

637

主题

901

帖子

4

粉丝