梧桐园小区:基于DSP的实时语音压缩

来源:百度文库 编辑:偶看新闻 时间:2024/05/02 02:31:07
2007-07-12      嵌入式在线     收藏 |打印
DSP(数字信号处理器)具有强大的数字信号处理能力,在其应用系统中,大多由ADC和DAC通道来完成对模拟信号的数字化处理。本文介绍了一种集成ADC和DAC于一体的TLC320AD50C模拟接口电路与TMS320VC5416定点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位二进制编码,编码表如下:
Biased Input Values
Compressed Code Word
Chord
Step
Bit:  12  11  10  9  8  7  6  5  4  3  2  1  0
Bit: 6  5  4   3  2  1  0
0   0   0  0  0  0  0  1  a  b  c  d  x
0  0  0
a  b  c  d
0   0   0  0  0  0  1  a  b  c  d  x  x
0  0  1
a  b  c  d
0   0   0  0  0  1  a  b  c  d  x  x  x
0  1  0
a  b  c  d
0   0   0  0  1  a  b  c  d  x  x  x  x
0  1  1
a  b  c  d
0   0   0  1  a  b  c  d  x  x  x  x  x
1  0  0
a  b  c  d
0   0   1  a  b  c  d  x  x  x  x  x  x
1  0  1
a  b  c  d
0   1   a  b  c  d  x  x  x  x  x  x  x
1  1  0
a  b  c  d
1   a   b  c  d  x  x  x  x  x  x  x  x
1  1  1
a  b  c  d
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、实时语音压缩的软件电路框图
五、程序运行的结果
下面图3为压缩前的原始信号“喂,喂”,而图4为TLC320AD50C与TMS320VC5416组成的数据采集系统对压缩前的原始信号“喂,喂”的采集结果。

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

图5、压缩后的语音信号“喂,喂”
经过对压缩前后的语音信号对比分析,TLC320AD50C可以对语音信号进行无失真压缩。
七、结束语
本文以TMS320VC5416与TLC320AD50C为例,详细介绍了AD50与DSP串口通信的硬件接口及软件实现。从实验结果我们可以发现TLC320AD50C可以对语音信号进行无失真采样,完全能满足后续语音信号处理的要求,并且与DSP接口简单,高性能,低功耗,已成为当前语音处理的主流产品。广泛适用于音频处理,语音增强,语音安全,回声抵消,VoIP等电话或语音应用中。
本文作者创新点::基于DSP的实时语音压缩解压的算法很多,其中u/A律压缩解压编码是最常用的形式。介绍A律的资料较多,但是u律的几乎没有。本文就是介绍u律压缩解压算法。通过实验,压缩的语音信号解压能够很好的自然度和可懂性。实验结果能够达到预期的目标。
参考文献
[1]TMs32oc54xDsP Applications Guide.Texas Instuments,    1999
[2]TMS320C54xDSPEnhancedPeripherals.TexasInstuments,   1999
[3]戴明祯,周建江.TMS320C54X DSP结构、原理及应用. 北京;北京航空航天大学出版社,2001
[4]高浩,须文波 基于DSP改进的MBE语音算法的研究 北京;微计算机信息(嵌入式与SOC片上系统)2005年12期85页