Speex Codec VS recent CELP Codecs

 

      经过多年的验证,码激励线性预测模型(CELP,Code Excited Linear Prediction)是当下重建语音质量最好应用最流行的语音编解码模型之一。Speex编解码同其他CELP编解码器都是基于CELP模型的,那么CELP模型的主要思想是什么呢?

1、利用线性预测(LP,Linear Prediction)模型去对声道系统建模;

2、利用语音产生原理,通过一个自适应码书和一个固定码书作为LP 模型的输入;

3、在感知加权域,进行码书的闭环搜索,以找到最佳量化矢量使总体误差最小;

 

下图是一般的CELP解码框图:(由于图片上传功能暂时关闭,所以无法上传)

 

 

 

      Speex与当下的CELP Codecs 主要有三点不同:

 

1、自适应码书搜索:

     大多数CELP Codecs在自适应码书搜索过程中采用整数延时+分数延时搜索的算法,但Speex采用了一个三阶长时基音预测器,进行整数延时搜索算法。通常的整数延时自适应码书相当于是一个一阶长时基音预测器,但是它的基音周期精度是有限的,从而会影响最后合成语音的质量。为了提高精度主要有两种方法:一个是增加长时基音预测器的阶数;另一个是采用分数延时自适应码书。这样就比较清楚了,一般的CELP Codec采用第二种方法,尤其是低比特率语音编码,而Speex 采用了第一种方法,并对3个增益系数进行矢量量化。

 

2、固定码书增益的量化

     大多数CELP Codecs通过运动平均(MA,Moving Average)预测器来量化固定码书增益的量化,这样使得增益值保持平滑连续但是却引入了对过去帧的依赖。而Speex将固定码书增益编码成一个全局的激励增益值,同时也是对各个子帧增益的修正值。

 

3、固定码书的量化

     对固定码书的量化有很多种方法,如目前比较流行的代数码书搜索算法,在ITU G.729和G.723.1,以及AMR 都有用到,还有矢量和码书搜索算法,在美国TIA 的8kbps VSELP 语音编码器得以应用。为了避开这些专利的限制,Speex只能采用类似分裂式矢量量化的量化方法,即将每个子帧的激励信号再分成若干子矢量分别进行量化,显然这种方法的性能并不是最优的矢量量化方法,这样虽然可以搜索到局部最优矢量,但是组合起来就未必是全局最优了。这完全是为了应付专利的无奈。

 

 

(Speex学习...继续)

 

参考资料

1、Jean-Marc Valin  “Speex: A Free Codec For Free Speech”

2、鲍长春 《低比特率数字语音编码基础》

 

一家之言,欢迎讨论!

你可能感兴趣的:(算法,Codec)