AMR声码器原理

AMR采用了多速率码激励线性预测(MR-ACELP)编码技术。这种方式基于码激励线性预测(CELP)编码模式,用全极点线性滤波器模拟语音特性。AMR声码器以20ms的语音作为一帧进行处理,每一帧又分为4个5ms的子帧。AMR声码器可以工作于8种不同的比特速率模式,并且在每帧的边界处可以在8种源速率之间进行切换。

AMR声码器由以下几个部分组成:多速率语音编码器,源速率控制方案(包括语音激励检测器和舒适噪声生成系统),对抗传输错误和丢包带来的影响的差错隐藏机制。

1.语音编码

(1) 预处理

语音信号在编码之前要经过高通滤波和信号缩减。信号缩减就是将输入信号除以2,以减小实现定点算法时发生溢出的可能。高通滤波是为了去除不需要的低频分量,滤波器的截止频率为80Hz。

(2) 线性预测分析和量化

12.2 kbit/s模式下,短时预测(线性预测)分析每帧执行两次,得到两组线性预测系数,采用30ms不对称窗计算自相关,没有前向预测。其余模式下,短时预测分析每帧执行一次,得到一组线性预测系数,也采用30ms不对称窗计算自相关,但要用到40个采样值(5ms)的前向预测。

加窗语音的自相关结果采用Levinson-Durbin算法转换成线性预测(LP)系数,LP系数再变换为线谱对(LSP)以用于量化和插值。插值后的量化和未量化系数转换回LP系数,以在每个子帧建立综合和加权滤波器。

(3)自适应码本

自适应码本搜索是以子帧为单位进行的,它包括:闭环基音搜索,计算自适应码向量。其中,计算自适应码向量是求得基音延时后对过去的激励进行插值得到的。自适应码本参数(基音参数)是基音滤波器的延时和增益。在实现基音滤波器的自适应码本方式中,激励以小于子帧长度的延时重复。在搜索阶段,激励由LP余量信号进行扩展而得,以简化闭环搜索。

如果检测到LPC滤波器可能发生谐振,并且未量化的自适应码本增益超过了增益阈限GPth=0.95,就要计算平均自适应码本增益。平均自适应增益由当前未量化的增益和前面7个子帧量化的增益计算而得,即
GPave=mean{gP(n),/stackrel{ }{g}P(n-1),/stackrel{ }{g}P((n-2),…,/stackrel{ }{g}P(n-7)}

其中,n是当前子帧。如果平均自适应码本增益大于GPth,未量化增益就限制为阈值。

(4) 代数码本

代数码本结构是基于交织后的单脉冲排列设计。代数码本是编码器中比特速率发生主要变化的部分,这个变化是通过改变每个子帧中的脉冲数目获得的,每个子帧中的脉冲数从2到10不等。每个脉冲位于预定义的位置,并且幅度为+1或-1。

代数码本的搜索使用加权的输入语音和加权的合成语音之间的最小均方误差。

(5) 增益量化

自适应码本增益采用直接量化,固定码本增益量化使用带固定系数的移动平均预测量化。在自适应码本和固定码本的增益量化中,12.2和7.95 kbit/s模式采用标量量化,其余模式采用联合矢量量化。
如果自适应码本增益在(3)中被限幅,量化码本搜索就限制在自适应码本增益值小于GPth的范围内。

2.ARM语音解码

解码器包括以下部分:发送参数译码(LP参数、自适应码本向量、自适应码本增益、固定码本向量、固定码本增益),合成重建语音。重建的语音还要经过后处理和信号放大。

(1) 解码和语音合成

接收到的LSP量化索引用来重建量化后的LSP向量,经过插值得到的4个LSP向量对应于4个子帧。每个子帧的LSP向量再转换成LP滤波器系数,以用于合成该子帧的重建语音。每个子帧重复执行下列步骤:自适应码本向量解码、固定码本向量解码、自适应和固定码本增益解码、平滑固定码本增益、抗稀疏处理、溢出保护。

(2) 后处理

合成的语音经过一个自适应后滤波器,自适应后滤波器是共振峰后滤波器和畸变补偿滤波器的级联,每个子帧都要进行更新。
最后信号还要经过高通滤波器和信号放大才输出。高通滤波器去除不需要的低频分量,滤波器的截止频率是60Hz。信号放大后即将滤波的语音乘以2,用以补偿输入信号的缩减。

3.源控制速率操作

源控制速率操作考虑了语音休止期,从而能够在一个较低的平均速率下对输入信号进行编码。源控制速率方案可以节省用户设备的功耗,降低网络的总干扰和负载。

源控制速率机制要求:发射端的语音激励检测器;发射端对背景听觉噪声的评价,从而发送特征参数给接收端;在发射关掉时,接收端要生成舒适噪声。

另外,如果发现到达接收端的参数由于差错而严重恶化,就必须由替代的数据生成语音或舒适噪声,从而避免产生令人讨厌的效果。

源控制速率(SCR)的一个基本问题是:当发射关掉时,和语音一起发送的背景听觉噪声也会消失,从而导致背景噪声不连续。由于SCR切换发生频繁,这种效果对于接听者会非常恼火,尤其是背景噪声很大的汽车环境。在恶劣的情况下,语音可能会几乎听不懂。

接收端通过生成与发射端背景噪声类似的合成噪声,可以克服这种问题。当语音不存在时,舒适噪声参数在发射端进行估计,以一定速率发送到接收端。这使得舒适噪声可以适应发射端噪声的变化。

4.差错隐藏

差错隐藏的目的是要隐藏AMR语音帧丢失带来的影响。在丢失几个帧的情况下,输出静音可以为用户指示信道故障,从而避免可能产生恼人的声音。差错隐藏算法集成在解码器当中,它使用传统的状态机结构,在连续帧丢失时,综合滤波器平滑作用逐渐增强,同时码本增益的作用逐渐减弱。


AMR声码器硬件实现


在我们开发的第三代移动通信系统中,移动台使用了Silicon Laboratories Inc.的Si3000和Texas Instruments的TMS320C54x系列定点DSP来实现AMR声码器。TMS320C54x和Si3000的硬件接口设计如图1所示。

这里设计FS=8kHz,作为帧同步时钟(DSP的BFSR、BFSX和Si3000的FSYNC),由Si3000的FSYNC提供;位时钟Fb(DSP的BCLKR、BCLKX和Si3000的SCLK)由Si3000的SCLK提供,满足Fb=256FS。DSP和Si3000之间的数据传输是以帧同步为标志同时双工工作的。FS和MCLK满足关系:

{M1}/over{M2}={5 1024 F_{S}}/over{MCLK}

其中1≤M1,N1≤256是锁相环控制寄存器。

SDI和SDO是Si3000的数字信号接收和发送接口引脚,Si3000与DSP通过多通道缓冲串口McBSP(BDR和BDX)实现全双工通信。

DSP模块在移动台系统中完成语音的压缩编解码。一边和Si3000通过McBSP接口,交换未编码的语音数据;一边和Host通过HPI接口,交换编码后的语音数据。

信号处理的流程如下:

Host初始化时,Host先使DSP处于复位状态,待Host完成必要的初始化之后,再使DSP复位完毕。然后,Host通过HPI将DSP的程序代码下载到DSP的片上存储器,下载完毕后DSP开始正常工作。

正常工作时,Host将编码后的数据通过HPI传输给DSP,传输完毕后,通过HPI给DSP一个HPI中断,DSP响应后开始进行解码,解码后的语音通过McBSP送给Si3000转换为模拟语音播放;模拟语音经Si3000转换为16bits数字信号,送给DSP压缩编码,完成后通过HPI向Host发中断,Host响应后通过HPI开始读取DSP编码后的语音数据.

你可能感兴趣的:(c,工作,算法,网络,存储,扩展)