摘要:本文针对常见的语音压缩方法,具体叙述了线性预测编码的基本原理及具体格式,并对算法实现的软件及硬件进行了详细的分析。
关键词:线性预测编码 格形滤波器 PWM MATLAB
引言
现实生活中,有大量语音数字存储和传输、语音综合、说话人确认和辨认、语音识别的应用,这些应用需要处理的数据量很大,这必须采用一定的压缩方法进行处理。
对频率范围为300Hz——3000Hz的语音,诸如电脑语音图书、真人发声电子字典、语言学习机等,只需要一般的语音压缩方法,而对20Hz——20KHz的音乐,则需高级的压缩方法。当然,在选择语音表示方法时,数据压缩率不是唯的考虑,还要考虑价格、表示的灵活性、语音考虑价格、表示的灵活性、语音的质量等诸多因素。在选择信号表示以及随后作用的数字信号处理方法时最重要的考虑还是应用的实际需要。
针对我们目前开发的发音电子字典及语音学习机等产生,既需要音质清晰又要价格便宜,我们考虑采用参数表示语音信号的LPC,MELP,CELP压缩方法。
LPC(Linear Predictive Coding-线性预测编码),是一种低速率的语音参数表示方法,它根据最小的方误差的准则,用过去的若干语音数字信号来预测当前的语音信号,将估算出来的语音参数送到语音合成模型后输出语音。混合激励线性预测MELP和码本激励线性预测CELP也是基于线性预测上的语音压缩方法,数据压缩量销逊于LPC,但因其语音数据的制作不需要专门的硬件与有经验的调音人员,在语音产品的开发中也得到了广泛的应用,本文重点描述LPC算法的软件和硬件实现。
LPC原理简述
LPC语音编码的基础是语音产生模型,它模拟人的发生过程。在这个模型中,语音信号分为清音和浊间,在浊音时声道中产生对应音调周期的脉冲列,而在清音时,则产生白噪声序列,语音就是由这些激励信号激励一个自适应滤波器(即全极点滤波器)产生的。
LPC滤波器的参数ak是通过线性预测的方法,即用若干过去的样值预测当前样值提取的,预测值与真值之间的误差满足最小均方误差准则。参数随时间逐帧更新,更新速率30~100次/秒,即帧移为10~33ms。在每帧之间对参数进行内插以适应参数随时间缓慢变化。
因此,LPC模型只需传输增益系数,浊音和清音的判决信息、浊音音调和全极点滤波器的参数{ak},k=1,…p,用超低BIT率便可实现语音信号的传送。这种高压缩率可以大大降低语音识别中的存储量。
语音合成模型见图1。
LPC软件实现
LPC算法的实现有直接法、协方差法、自相关法、斜格法等诸多分析方法。其中斜格法能解决精度和稳定度的矛盾,它是以格形滤波器为基础。我们所用的LPC声码器就是作斜格法来实现线性预测。
线性预测编码算法的编码格式中,有10个线性预测系数K1-K10、增益、音调、重复位总红共编码成54bits。
LPC各帧参数编码格式见表1。
在解码时,要对接收的数值进行转换与插值。其算法接收的的数值进行转换与插值。其算法流程见图2.
线性预测系数、增益、基音周期等参数值每个基音周期更新一次,清音帧、浊音帧及静音帧间相互转换时不进行插值更新。浊音和清音的激励信号是按基音周期从内部ROM区取出输入到音调寄存器,与增益相乘后送到LPC滤波器。
LPC硬件实现
在线性预测分析中,语音信号直接决定一组预测系数,但由于语音信号有时变特性,为保证语音信号在短时间内预测参数及频率固定,实验以固定频率声响最后一响“嘀”为对象,对LPC声码器的硬件部分进行测试。首先,借助专用的LPC编码设备生成PCL十六进制格式数据见表2。
从以上数据可以知道此语音由静音帧、浊音帧和停止帧组成。第一帧是静音帧,最后一帧是停止帧,中间40帧是浊音帧,该40个浊音帧具有相同的能量、音调及K参数。经分析得出能量值、音调及其K参数(见表3)。
表3 各参数计算值
名称 | 位数 | 标号(二进制) | 标号(十六制进) | 查表值 | 实际参数值 |
增益 | 4 | 1001 | 9H | 1AH | 208 |
重复帧 | 1 | 0 | 0 | 0 | 0 |
音调 | 7 | 0000001 | 1H | 100H | 500HZ |
K1 | 6 | 101111 | 2FH | FECH | -0.009765625 |
K2 | 6 | 010111 | 17H | 0 | 0 |
K3 | 5 | 10111 | 17H | 14H | 0.15625 |
K4 | 5 | 01011 | BH | F9H | -0.0546825 |
K5 | 4 | 0101 | 5H | F3H | -0.1015625 |
K6 | 4 | 0100 | 4H | FCH | -0.03125 |
K7 | 4 | 1001 | 9H | 14H | 0.15625 |
K8 | 3 | 111 | 7H | 58H | 0.6875 |
K9 | 3 | 101 | 5H | 10H | 0.125 |
K10 | 3 | 101 | 5H | 11H | 0.1328125 |
K11 | 0 | ||||
K12 | 0 |
我们借助MATLAB工个搭成了12组格形滤波器及二阶低通滤波器来模拟LPC模型中的数字滤波器,见图3。将带有增益的浊音送入输入端,线性预测系数送入格形滤波器,滤波器采用10KHz采样。
填入其余相应的参数后开始仿真,得出的结果见图4。
从图中可以看出,不考虑频率因素,对增益、预测参数固定的这组语音数据而言,实验结构最后超趋近于1024。
把数据1024输入PWM寄存器,经过12位的脉宽调制(PWM)进行D/A转换处理,可得出输出模拟信号,占空比为:
1024/2048=0.5
同时,我们通过示波器直接测试语音芯片的DAC+端,可以观察到频率为500Hz、占空比为0.5的一系列的矩形脉冲见图5,波形结果与通过MATLAB工具搭成的电路结果一致。
结语
我们对PLC,MELP,CELP不可逆语音压缩法进行测试,得出了LPC语音合成格式、算法流程以及硬件12级格式、算法流程以及硬件12级形波器、低通滤波器的具体实现形式。从实验可以证明LPC算法是通过软件从语音数据包提取数据,经过软件查表计算后将相应的参数送往硬件各部分处理,最后合成语音。
上一篇:TMS320C6000嵌入式系统优化编程的研究
下一篇:卷积编译码盘的设计与实现
- 热门资源推荐
- 热门放大器推荐