首页 > 范文大全 > 正文

基于Speex算法的语音压缩解压程序设计

开篇:润墨网以专业的文秘视角,为您筛选了一篇基于Speex算法的语音压缩解压程序设计范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

(1.华东师范大学信息学院通信工程系电子信息科学与技术,上海200241;2.天津大学材料科学与工程学院材料成型及控制工程专业,天津300072)

摘要:近年来语音引擎发展迅速,其编码质量与速率也不断变化。Speex就是一套能实现高质量和低比特率编码的强大的

语音引擎编码算法。文章首先介绍了Speex编/解码算法的特性与优势,并分析了Speex算法原理,包括Speex算法相关概

念,预处理模块,Speex的窄带及宽带子模式的编码原理等。并利用speex算法libspeex库和libspeexdsp库中的函数设计了

对PCM语音数据进行压缩与解压功能的程序,最后对程序功能进行了测试。

关键词:VoIP;语音压缩;Speex算法;噪声消除;回声抵消

中图分类号:TP391文献标识码:A文章编号:1009-3044(2012)26-6357-03

Design of Voice Encoder/Decoder Based on Speex Algorithm

FU Lu1, LIU Zhe2, HAN Kun1

(1.Dept. of Electronic Engineering, East China Normal University Department, Shanghai 200241, China; 2.School of Materials Science and Engineering,Tianjin University,Tianjin 300072, China)

Abstract: The voice encoding has developed rapidly, and there are a lot of changes in the quality and the rate. Speex which is a powerful speech engine developed in recent years can achieve high quality and low bit rate voice encoding. The features and ben? efits of Speex encoding / decoding algorithms is introduced in this article, and then the Speex algorithm theory, including the pre-processing module, Speex narrowband and broadband sub-mode coding principles are analyzed. Also the voice encoder and decoder based on the libspeex and libspeexdsp libraries are developed to achieve the compression and decompression of the voice data, and finally the program function is tested.

Key words: VoIP; voice compression; Speex algorithm; noise cancelation; echo cancelation

近年来语音引擎[1-2]发展迅速,其编码质量与速率也不断变化。Speex就是一套能实现高质量和低比特率编码[3]的强大的语音引擎编码算法。为了保障IP网络中的语音通信质量[4-5],Speex算法除了提供了基于码激励线性预测(CELP)算法的编/解码模块,还在其最新的版本中提供了声音预处理和声学回声消除模块。同时,speex算法压缩后的低比特率(2~44 kbps)特点,以及支持多种

比特率的优势,使之更加适合于VoIP的系统[6-7]。

1 Speex编解码算法简介

Speex算法是基于CELP算法的多模式多速率的语音编码算法。对应8kHz、16kHz、32kHz三种不同的语音采样率,Speex算法提供了窄带、宽带以及超宽带三种不同带宽的语音编码模式

1.1 Speex算法——窄带模式

1)整帧分析:在Speex窄带模式中,每个语音帧长20ms,对应于160个取样;每个帧被分成4个子帧,每个子帧长5ms,对应40个取样。对于大多数的窄带比特率(8kbps及以上),只有线性光谱(LSP)和全局激励增益gframe,而这两个参数是在整帧的层面上编码的。其他所有的参数都在子帧层面上编码。

2)子帧分析与合成:Speex算法在三大方面不同于多数的CELP编/解码器。首先,相对于很多CELP编/解码器用单个增益进行分数基音估计,Speex算法要用到3个增益,但它仅使用一个整数对基音进行周期编码。其次,在对固定码本增益编码时,很多CELP编码器采用了移动平均预测来进行编码;而Speex算法是对全真激励增益和子帧增益相关系数的乘积来编码。最后,Speex算法在子向量量化值的使用方面,采用了随机码本信号取代代数码本信号。

3)比特分布:在Speex算法中,定义了范围在256bps~24.6kbps之间的7种不同的窄带比特率。首先分别用1bit和4bits对带宽(Band wide)和窄带子模式号(Mode ID)进行编码;其中mode ID的范围为0到15,只有前7个值是可用的。在比特流的打包处理上,整帧层的所有参数首先进行打包,随后是子帧层参数的打包。在某一子帧曾参数完全打包后,下一子帧层的参数才开始进行打包处理[8]。

1.2 Speex算法——宽带模式

在Speex算法的宽带模式下,Speex采用正交镜像滤波器把16kHz的信号分成两个8kHz的信号。其中0~4kHz表示低带部分,4~ 8kHz表示高带部分。