Speex语音编码算法实现与优化

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

186 2009年第10期,第42卷 通 信 技 术 Vol.42,No.10,2009 总第214期 Communications Technology No.214,Totally
·信源处理·
Speex 语音编码算法实现与优化
穆 捷, 李 敬, 唐 昆
(清华大学 电子工程系,北京 100084)
【摘 要】介绍了Speex 编码原理,对其特有的编码方式进行了深入的分析,针对其编码特点提出了3种降低运算复杂度的优化方法,并在DSP 芯片上进行了实现。

通过使用ITU P.862规范中的评分方法进行分析,所述方法能在保证语音质量基本不下降的前提下,显著的降低运算复杂度。

【关键词】Speex ;感觉加重;逆滤波;简单相关
【中图分类号】TN91 【文献标识码】A 【文章编号】1002-0802(2009)10-0186-03
Realization and Optimization of Speex
MU Jie , LI Jing , TANG Kun
(Department of Electronic Engineering, Tsinghua University, Beijing 10084, China )
【Abstract 】This paper first tells of the principle of Speex. Then, based on the analysis, three ways for simplifying computation are described. Through analysis by using PESQ in ITU P.862, the three proposed ways could help reduce the complexity of computation while the speech quality is guaranteed.
【Key words 】Speex; perceptual weighting; reverse filter; simple correlation
0 引言
互联网的发展推动着VOIP(V oice Over IP)技术应用的不断扩大,而现有的语音编码算法如G .729,虽然在语音质量上已经取得了很好的效果,但是由于应用环境不同,这些算法并不能很好的适应因特网网络环境多变的特点。

Speex 是在VOIP 的应用背景下提出的一种基于CELP(Code Excited Linear Prediction)算法的免费、开源的语音编码器,其编码方式非常灵活,可以依据不同的应用环境采用统一的码流格式和编码算法,实现多码率,多采样率的灵活的语音编码,以适应网络语音通信的需求。

然而,传统的CELP 算法虽然在低码率的条件下依然能够保证良好的语音效果,但是其较高的运算量使得一些基于该算法的编码器难以在一些低功耗的芯片上实现。

本文首先简要介绍了Speex 编解码算法,然后针对CELP 算法运算量大的缺点提出了调整感觉加权滤波器、利用简单互相关简化自适应码本搜索和固定码本逆滤波3种降低运算复杂度的优化方法,最后给出了试验结果,经试验验证,本文提出的优
化方法在较好保证语音质量的同时能够有效地降低运算量。

1 Speex 语音编解码算法简介
Speex 基于CELP(Code Excited Linear Prediction)算法,可同时进行窄带和宽带编码,并且具有多种速率。

自适应码本搜索利用互相关算法进行三阶基因预测,得到相应子帧的残差信号。

然后将经过自适应码本搜索后的子帧残差信号分为长度不等的从5到20个样点的子矢量,依速率的不同采用各自对应的独立码本进行固定码本搜索。

解码就是编码的逆过程,由于解码过程中并没有涉及码本搜索,因此,整个编解码的运算量主要集中在编码上,其中自适应码本和固定码本搜索占据了绝大部分,而宽带模式由于编码方式基本与窄带相同,因此我们的优化测试都基于窄带模式。

2 算法优化
CELP 结构的编码器虽然可以在低码率下仍然保持较高的语音质量,但其主要缺点就是运算量较大。

对于Speex 编解码算法,当其工作在高模式下时,由于码本的增加和搜索精度的提高,使得算法复杂度加大,同时也就造成了在一些低功耗的DSP 芯片上较难实现实时的语音通信。

为了解决这一问题,我们在CELP 模型运算量集中的码本搜索和基音周
收稿日期:2008-10-23。

作者简介:穆 捷(1979-),男,硕士研究生,从事语音压缩编码方
向研究;李 敬,男,讲师,从事多媒体通信方向研究;唐 昆,男,教授,从事多媒体通信方向研究。

万方数据
187
期的搜索上做了以下降低运算量的算法优化: 2.1 感觉加权滤波的调整
图1给出了Speex 感觉加权滤波调整前后的编码图,其中A(z)表示线性预测逆滤波器,在图1(a)所示的传统CELP 编码算法中,不论是在自适应码本搜索还是固定码本搜索过程中,每一个待选激励信号都需要通过感觉加权滤波,而在(b)中所示新的合成分析模型中,自适应码本在搜索最佳结果的过程中,并不需要对每一个候选激励进行加权滤波,与此同时,固定码本的搜索过程与传统CELP 模型相比并没有改变,因此
(a) 调整前
(b) 调整后
图1 调整前后的编码
在这种模型下,自适应码本搜索并没有在感觉加权域进行,而只是将感觉加权应用在了固定码本的搜索过程中。

固定码本的生成与传统CELP 模型完全相同,而自适应码本的构建是由缓存激励得来的,其延时最大值不超过20ms 。

通常,在这样的时间间隔内线性预测系数的变化是非常缓慢的,另一方面,自适应码本在重构语音信号时所需要的
基音延迟和码本增益在此间隔下的变化同样比较缓慢。

此外,自适应码本搜索过程中,目标信号的能量较大,经过感觉加权后,与原始信号相比,信号改变所占比重较小,因此,图示模型所生成的语音信号质量与传统模型相比,是不会有太大的衰减的。

2.2 利用简单自相关简化自适应码本搜索[3]
在基音搜索过程中,基音周期是利用计算互相关的最大值来确定的。

以子帧为例,传统的搜索算法需要计算子帧中全部40个样点在17~144范围内以每一个基音可能值为延迟的互相关值,然后取其中最大值的对应值作为基音周期。

这种传统互相关运算可用下式表示:
)()()(39
L n x n x L R n -=
å=,L =17,18,…,144, (1)
由此可见,在传统的基音周期搜索方法中,基音周期的确定需要做127次40个样点的互相关运算,运算量很大。

因此我们采用一种简单的互相关算法来降低运算量。

这种简单的互相关运算可以用下式表示:
1
1
11
()()()()()a a b
b
n n R L x n x n L x n x n L =-=-=
-
+
-åå,
L =17,18,…,144, (2) (0)a x 和(0)b x 分别对应该子帧内信号的最大值和最小值,为了让结果更加精确,我们分别在两个最值两边各取两个相邻点,如图2所示,这样,()R L 最大值所对应的L 值
即可作为基因周期的预测值。

b
图2 简单互相关的取点
由于基音的变化范围为17~144,并且每个范围内的基音的权重也是不同的,因此,为了降低减少样点所带来的误差,使搜索更加准确,将范围内每20个样点分为一段,并
记录每段互相关最大值所对应L 值,这样一共可以得到7个基因延迟的预测值。

最后,将这个7个预测值采用传统的逐点基音搜索算法求得最佳基因周期。

通过这种简单的互相关算法,互相关的运算的样点数由40个减少到6个,基音周期的变化范围也缩小到了7个,相比传统算法,运算量大大降低。

2.3 固定码本的逆滤波搜索方法
Speex 在固定码本搜索过程中,首先将全部码本通过感觉加权后的生成滤波器,然后将生成信号逐一与目标信号比
万方数据
188 较找出最小值,其对应索引值即作为固定码本的最佳索引。

这样,当固定码本较大时,逐一通过滤波器的运算量会很大,因此,尝试做以下改变:首先,将目标信号通过生成滤波器的逆滤波器,得到激励信号,然后将此激励信号与原始码本进行比较找出误差最小值,将对应索引作为最佳索引。

为了让搜索更加准确,还可以进一步记录3个误差最小值,将3个最小值对应的码本通过感觉加权后的生成滤波器,再从中找出最佳码本。

这样,避免了码本中每一个矢量逐一通过合成滤波器,减少了运算量。

3 试验及结论
测试中,我们采用ITU 的P.862规范进行语音质量的评估。

首先,用ITU 提供的or109等6个测试序列对Speex 原
始算法在24.6 kb/s 速率下进行MOS 评分,然后用同样的方法对本文提出的3种优化算法也进行测试,最后给出平均MOS 分。

对于运算复杂度的评估我们将原始算法和优化后的算法分别在ADSP -2100芯片上予以实现,通过计算DSP 芯片执行算法的指令数(MIPS )来评估优化效果,各部分调整后综合效果对比如表1所示。

通过试验验证我们可以看到,本文提出的去加重和自适应码本简单相关两种优化方法使运算复杂度的下降6.14MIPS ,同时,其RAW-MOS 分分别只下降了0.071和0.001,基本对语音质量没有影响,其中简单相关的优化方法甚至对3个测试序列的MOS 分还略有提高。

而固定码本的逆滤波由于DSP 硬件指令并行的原因,其复杂度只下降了0.1,但仍具有一定借鉴意义。

表1 Speex 优化前后语音质量和运算复杂度对比
测试序列
原始算法
去加重
固定码本逆滤波
3个最小值
固定码本逆滤波
1个最小值 自适应码本简单相关
Or109.wav 3.849 3.755 3.8 3.564 3.84 Or114.wav 3.71 3.612 3.645 3.212 3.699 Or129.wav 4.166 4.119 4.01 3.82 4.144 Or134.wav 4.145 4.076 4.108 3.892 4.15 Or145.wav 3.746 3.638 3.66 3.238 3.794 Or152.wav 3.78 3.716 3.646 3.337 3.776 平均分 3.899 -0.07(3.819) -0.099(3.875) -0.356(3.618) -0.001(3.898)
DSP 复杂度
43.7MIPS
-2.5MIPS
-0.1MIPS
-0.8MIPS
3.64MIPS
4 结语
本文介绍了Speex 语音编解码算法的特点,并针对其运算量较大的码本搜索和基音搜索部分提出了优化方法,试验结果证明该方法在较好保证语音质量的同时能够有效地降低运算量。

文中给出的优化方法在相似CELP 结构的语音编解码算法中同样适用。

参考文献
[1] Valin M J. Speex: A Free Codec For Free Speech[EB/OL], (2007)
/docs/manual/speex-manual.pdf
[2] de Silva L M ,Alcaim A. A Modified CELP Model with
Computationally Efficient Adaptive Codebook Search[J]. IEEE Signal Processing Letters ,1995,2(3):44-45.
[3] Myung Jin Bae ,Hwe Yoong Whang ,Hah Young Yoo. On a Fast Pitch
Searching by Using A Simple Correlation Technique in the CELP Vocoder[C]// Proceedings of the 38th Midwest Symposium on Circuits and Systems, Rio De Janeiro, Brazil, 1995:1256-1259..
作者须知(1)
为了提高本刊的编辑出版质量,请作者用word 、photoshop 、VISIO 等软件作图,以便我部好对你所提供的图进行编辑修改。

作者绘图时注意: 1)采用两种尺寸的图,即长不大于8厘米和长不大于15厘米(因为《通信技术》采用的是双栏排版,故请作者尽量采用长为8厘米的图); 2)图的大小比例要合适,图要画得紧凑些,线条粗细要得当,连线请画短些,这样画出的图会紧凑些; 3)图内字请用6号宋字居中排; 4)请不要用截来的图和扫描的图, 那样印刷出的图会很不清楚,需要时请作者画出仿真图; 5)图中的字母是变量的请用斜体,是矩阵和矢量的字母还要用黑斜体,非变量或英文单词请用正体,数字和标点符号在任何情况下均为正体; 6)图的线条着色请用黑色,用其他颜色画线条印刷效果不好(印出的线条不清晰); 7)
图中箭头如无特殊要求请按我部所给的箭头形式
画箭头 ;8)图中的纵、横坐标表示的量和单位要标识出,图片的量和单位一般以“量的斜体/单位符号的正体”表示。

如:/s t ;sn /A; /dB; I R LL
应先有图在正文中的说明,再附上图。

图1 矢量滤波器预处理的多小波的分解和重构
万方数据。

相关文档
最新文档