(二)算法原理说明
1.语音编码 (1) 概念:
语音编码一般分为两类:一类是波形编码,一类是被称为“声码器技术”的编码。
PCM编码即脉冲编码调制。
波形编码的最简单形式就是脉冲编码调制(Pulse code modulation),这种方式将语音变换成与其幅度成正比的二进制序列,而二进制数值往往采用脉冲表示,并用脉冲对采样幅 度进行编码,所以叫做脉冲编码调制。
脉冲编码调制没有考虑语音的性质,所以信号没有得到压缩。 (2) 量化:
脉冲编码调制用同等的量化级数进行量化,即采用均匀量化,而均匀量化是基本的量化方式。但是均匀量化有缺点,在信号动态范围较大而方差较小的时候,其信噪比会下降 。
国际上有两种非均匀量化的方法:A律和u律,u律是最常用的一种。在美国,7位u律是长途电话质量的标准。 而我国采用的是A律压缩,而且有标准的A律PCM编码芯片。 (3) DPCM&ADPCM:
降低传输比特率的方法之一是减少编码的信息量,这要消除语音信号中的冗余度。相邻的语音样本之间存在明显的相关性,因此对相邻样本间的差信号进行编码,便可使信息量得到压缩。因为差分信号比原语音信号的动态范围和平均能量都小。这种编码叫Differential PCM,简称DPCM,即差分脉冲编码调制。
ADPCM即自适应差分脉冲编码调制,是包括短时预测的编码系统。CCITT(国际电报电话咨询委员会)在1984年提出的32 kbit/s的编码器建议就是采用ADPCM作为长途传输中的国际通用语音编码方案。这种ADPCM编码方案达到64 kbit/s PCM的语音传输质量,并具有很好的抗误码性能。 (4)当前压缩算法及压缩技术介绍
1)压缩算法的介绍
用途 抽样频率(kHz) 压缩标准或系统 G.711 G.726 G.728 GSM IS54/IS95 G.729 G.722 ISO/IEC10149 压缩技术 码率(kbit/s) 长途电话 8 PCM ADPCM LD-CELP RPE/LTP VSELP/QSELP CS-ACELP SB-ADPCM 64 40/32/24/16 16 13.2 16/8/4/2/1 8 64/56/48 移动电话 ISDN,会议电视 VCD 8 1 32/48 MPEG1 192/128/96
2).压缩技术的介绍压缩技术
a. 波形编码:直接对语音时域或频域波形样值进行编码。PCM,ADPCM,SBC,ATC
b. 参数编码:对人类语音的生成模型的参数进行编码。
c. 混合编码:结合波形编码和参数编码。MPLPC,RPE/LTP,CELP,VSELP d. 可变速率编码:G.727嵌入式编码 e. 无失真编码。霍夫曼编码 f. ADPCM工作原理 h. 自适应地改变量化幅值
i. 确定好量化幅度的最大值和最小值
2. A律编码和u律编码
两个标准的压缩扩展特性曲线称为u律和A律,使CCITT提出的G.711协议PCM编码方式的一部分。两个算法使用了非线性,把量化间隔变换成人耳能检测的线性空间。A律限制采样值为12比特,A律的压缩可以按照下列公式进行定义:
F(x)?sgn(x)A|x|11?lnA|x|1(0?|x|?)?sgn(x)(?|x|?1)
1?lnAA1?lnAA式中,A是压缩参数(在欧洲,A=87.6)x是需要压缩的归一化整数。
两种编码相比较,A律压缩的动态范围略较小,在小信号时质量较u律差些,A律最小量化间隔是2/4096,而u律是2/8159,事实上这二者的差别是不易察觉到的。无论是A律或u律,在x(信号频率)值较小时其特性都是线性的,在x值大时则呈现对数压缩特性。
A律压缩:将13位(符号位+12位数据)线性语音编码压缩为8位,具体的编码原理如下表:
A律扩展:将A律压缩为的8位编码还原为13位(符号位+12位数据)的线性语音编码,具体的编码原理如下表:
μ律压缩:将14位(符号位+13位数据) 线性语音编码压缩为8位,具体的编码原理如下表:
μ律扩展:将通过μ律压缩为的8位编码还原为14位(符号位+13位数据) 线性语音编码,具体的编码原理如下表:
u律压缩就是压缩器的压缩特性具有如下关系的压缩律:
ln(1??x)y?ln(1??)式中:
0?x?1
y- 归一化的压缩器输出电压,即Y=压缩器输出电压了压缩器可能的最大输出
电压
即x=压缩器输出电压/压缩器可能的最大输出电x - 归一化的压缩器输出电压,
压
? - 压扩参数,表示压缩的程度。
四、 程序设计、调试与结果分析
1.实验各个相关程序:
用TMS320VC5502实现语音的A率压缩解压有两种方法: a、使用多通道缓冲串口(McBSP)的缩展器
在多缓冲通道串口(McBSP)内部装置了硬件电路,支持A律格式缩展器,对数据进行压缩与扩展,A律缩展器允许14比特的动态范围。 首先描述一下McBSP硬件如何能够同时处理A律,如图显示的是McBSP缩展器硬件工作流程。在接受端,McBSP接收压缩的、非线性的数据然后扩展为线性数据写道CPU或DMA,在发送端,从CPU或DMA得到的线性数据在发送前必须按着A律压缩。
RSR RBR RJUST DRR
调整模式接收移接收缓冲数据接扩展器 寄存器 控制位 位 收 到CPU或DMA DLB模式 非DSB模式 发送移位寄存器 压缩器 从CPU/DMA输入 数据发送b、用软件实现
主程序的功能是从McBSP的接收通道读取A/D转换的值,然后经过压缩解压后将其发送到McBSP的发送通道,构成AIC23B CODEC模拟输入和输出通道的自环,是否能接收到A/D转换的数据是通过查询串口1的接收标志RRDY来进行的,程序为:
#include
#include
#include \
#include \#include \
#undef CODEC_ADDR #define CODEC_ADDR 0x1A
Int16 SourData1[65536]={0};将存储地址初始化 Int16 SourData2[65536]={0}; Int16 SourData3[65536]={0}; Int16 SourData4[65536]={0}; Int16 SourData5[65536]={0}; Int16 SourData6[65536]={0}; Int16 SourData7[65536]={0}; Int16 SourData8[65536]={0}; Int16 SourData9[65536]={0}; Int16 SourData10[65536]={0}; Int16 SourData11[65536]={0}; Int16 SourData12[65536]={0}; Int16 SourData13[65536]={0}; Int16 SourData14[65536]={0}; Int16 SourData15[65536]={0};
Int16 OutData1[65536]={0}; Int16 OutData2[65536]={0}; Int16 OutData3[65536]={0}; Int16 OutData4[65536]={0}; Int16 OutData5[65536]={0}; Int16 OutData6[65536]={0}; Int16 OutData7[65536]={0};