svpwm过调制算法研究与实现 [MELP声码器的算法研究及实现]
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[摘要]为了满足数字通信及其它商业应用的需求,语音压缩编码技术得到了迅速发展。特别是低码率语音编码的研究具有十分重要的现实意义。在现有的语音编码研究中,混合激励线性预测编码(MELP)是一种比较好的方法。对MELP编解码算法的原理进行简要分析,讨论如何在MATLAB上实现该算法,并研究其关键技术,最后对测试结果进行分析和比较。
[关键词]MELP语音编码混合激励线谱频率
中图分类号:TJ8文献标识码:A文章编号:1671-7597(2009)1210021-02
一、引言
随着通信技术以及互联网语音实时传输技术的迅速发展,对语音的传输速率和存储容量都提出了很高的要求,解决这些问题的主要途径之一就是语音编码。因此,语音编码的研究,特别是低码率语音编码的研究具有十分重要的现实意义。
在现有的语音编码研究中,混合激励线性预测编码(MELP)是一种比较好的方法,它结合了二元激励、码激励和多带激励的优点,将短时语音段划分为若干子带,在每个子带中分别进行清浊音判断;在合成端,采用周期性脉冲序列和随机噪声的混合序列去激励语音合成滤波器,能在较低的码率下得到较好的再生语音。4kb/s混合激励线性预测语音编码(MELP)的编码方法已经被确立为美国新的联邦语音编码标准。
二、MELP编解码算法
MELP算法声码器作为美军声码器技术的重要类型,在各国及各领域有广泛的应用。整个算法分为三个部分:语音参数提取、参数量化、解码。
(一)语音特征参数提取
模拟输入语音首先经过低通滤波器,然后转化成数字语音。采样率为8KHz,按180个样点(25ms)为一帧提取语音参数。MELP编码技术将语音分为清音、浊音和抖动浊音三种状态。一帧语音信号经过一个4阶切比雪夫高通滤波器,滤除50Hz的工频干扰,经过滤波之后的语音信号称为输入语音信号。这一帧语音信号再做以下处理:
基音分析:首先经过1KHz的巴特沃思低通滤波器,用归一化互相关法进行基音粗估,得到整数基音值T,然后进行分数基音分析,采用内插方法,求得分数基音估计的小数部分,此时分数基音值P为整数基音T与分数基音小数部分之和。采用6阶巴特沃思带通滤波器将一帧语音信号分为五个带,分别是[0,500Hz],[500,1000Hz],[1000,2000Hz],[2000,3000Hz],[3000,4000Hz]五个频带,利用[0,500Hz]子带信号与残差信号在分数基音值P前后5个样点进行精细基音搜索,从而得到精确基音值。
带通分析:在五个频带中分别计算语音强度Vi。最低频带确定非周期标志位,如果最低频带语音强度低于门限值,则非周期标志设为1,否则即为0。其余频带的语音强度由该频带与其时域包络围绕分数基音值P进行精细搜索时的归一化互相关值来决定。
10阶线性预测(LPC)分析:LPC线性预测分析系数的计算采用Levinson-Durbin递归算法,计算时对输入语音信号加窗,窗长200个样点(25ms),窗的中心点位于当前帧的最后一个样点。此外,对求得的10个预测系数Ai(i=1,2…10)均乘以带宽扩大系数K。LPC系数化为适合量化的线谱对(LSF)系数。
增益计算:使用自适应窗长,每一帧计算两次基音值。增益值是加窗信号的均方根值,以dB形式输出。
清浊音判决:利用由LPC系数决定的预测滤波器对输入语音信号进行滤波,得到残差信号,取残差信号的160个样点计算峰值,如果峰值大于门限值,则置最低频带的语音声强为1,如果峰值大于另一个门限值,则最低的三个频带语音声强置1。
(二)参数量化
参数提取结束,需要量化的参数有基音周期、子带清浊音判断、增益、线性预测系数、傅立叶系数、非周期标志。一共量化为54bit。具体量化包括如下:
基音量化:基音值和全局清浊音判断共同量化为7比特。如果低频段语音声强小于或者等于门限值,则当前帧是清音帧,传送全零码。否则为浊音帧,先将基音值取对数,再进行99级均匀量化,量化后的标号映射到7比特码本。
子带清浊音判决:当最低频带语音声强大于门限值时,如果其余四个子带声强值也大于门限值,则量化为0。如果其余四个子带量化后的值为0001,那么高子带置0。如果最低频带语音声强小于或者等于门限值,则该项参数量化为0。
增益:每一帧均传送两个增益参数。第一个增益参数采用自适应算法量化为3比特。第二个增益参数,在10.0到70范围内使用级均匀量化器量化为5比特。
线性预测系数量化:首先将LPC系数转化为易于量化的LSF系数。采用多级矢量量化方法,码本设置四级,每级量化的比特数分别为7、6、6、6。
傅立叶系数:若当前帧为浊音帧,则10阶傅立叶系数采用矢量量化方法。量化比特为8。若当前帧是清音帧,则不进行量化。
(三)解码部分
整个解码过程包括对接收到的数据进行解包,生成混合激励信号,再对混合激励信号经过自适应谱增强,LPC合成滤波,增益调整,脉冲离散滤波等,最后合成语音输出。总体编解码框图见图1。
图1MELP编解码原理框图
三、程序实现研究和测试结果
测试方法是这样的:采集了一段语音,采用8000bit/s采样速率,单声道,16位。先用麦克风生成一个WAV文件;接着用该程序中的WAV数据提取函数取出数据,生成一个纯数据的语音文件;然后用MELP算法处理程序对语音文件进行处理并生成一个发送的数据包文件并通过一个模拟的信道进行传送;接收端对接收到的数据包进行解码,并合成语音生成一个纯数据的语音合成文件;接着WAV数据合成函数生成一个WAV文件格式的文件;在MATLAB中使用WAVREAD 命令,将原始语音读入,并用PLOT将其时域显示出来,显示波形如图2所示。
最后通过扬声器放出来,六个人比较它们的效果,比较原始语音和合成语音的有四个人认为合成语音质量不错,有二个人觉得一般。结论:合成语音的质量还可以,达到了预期的效果。
图2原始语音信号时域波形
经过MELP编码后的合成语音,数据打包放在一个数组中。然后在MATLAB环境下,用WAVWRITE命令,将其数据写出到一个WAV格式的音频文件中。用PLOT命令观察其波形,如图3所示。
图3合成语音时域波形
四、MELP编码性能分析及仿真结果
图2和图3是经过MATLAB软件仿真后所得的原始语音信号和合成语音信号的波形比较图,仿真所用的采样频率为8KHz,每个采样点用8比特进行量化。为便于观察选取其中的第100000个采样点进行观察比较,从显示结果中可以看出MELP编码算法在较低的编码比特率基础上较好的重构了原始语音信号,从听音测试的结果来看,采用MELP编码的合成语音也同样能够很好的满足现今通信系统对语音质量的要求。
参考文献:
[1]王洪、唐凯,低速率语音编码[M].北京:国防工业出版社,200
[2]鲍长春,低比特率数字语音编码基础,北京:北京工业大学出版社,2001,149-17
[3]Alan V.McCree,Kwan Truong,E.Bryan George and Thomas P.Barnwell.A 4K BITPS MELP coder candidate for the new U.S.Federal.Proceeding of ICASSP.1996,107-11
[4]陈显治,现代通信技术[M],北京:电子工业出版社,200
[5]钟明,一种4Kbps改进型MBELP编码,电子科学学报,2000,9(5).
[6]McCree A V.Barnwell T P.A NewMixed Excitation LPC Vocoder.IC2ASSP.199l,593-59
[7]王炳锡,语音编码[M],西安,西安电子科技大学出版社,200