国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Speex算法的語(yǔ)音壓縮解壓程序設(shè)計(jì)

2012-04-29 18:05付璐劉哲韓琨
電腦知識(shí)與技術(shù) 2012年26期

付璐 劉哲 韓琨

(1.華東師范大學(xué)信息學(xué)院通信工程系電子信息科學(xué)與技術(shù),上海200241;2.天津大學(xué)材料科學(xué)與工程學(xué)院材料成型及控制工程專業(yè),天津300072)

摘要:近年來(lái)語(yǔ)音引擎發(fā)展迅速,其編碼質(zhì)量與速率也不斷變化。Speex就是一套能實(shí)現(xiàn)高質(zhì)量和低比特率編碼的強(qiáng)大的

語(yǔ)音引擎編碼算法。文章首先介紹了Speex編/解碼算法的特性與優(yōu)勢(shì),并分析了Speex算法原理,包括Speex算法相關(guān)概

念,預(yù)處理模塊,Speex的窄帶及寬帶子模式的編碼原理等。并利用speex算法libspeex庫(kù)和libspeexdsp庫(kù)中的函數(shù)設(shè)計(jì)了

對(duì)PCM語(yǔ)音數(shù)據(jù)進(jìn)行壓縮與解壓功能的程序,最后對(duì)程序功能進(jìn)行了測(cè)試。

關(guān)鍵詞:VoIP;語(yǔ)音壓縮;Speex算法;噪聲消除;回聲抵消

中圖分類號(hào):TP391文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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

近年來(lái)語(yǔ)音引擎[1-2]發(fā)展迅速,其編碼質(zhì)量與速率也不斷變化。Speex就是一套能實(shí)現(xiàn)高質(zhì)量和低比特率編碼[3]的強(qiáng)大的語(yǔ)音引擎編碼算法。為了保障IP網(wǎng)絡(luò)中的語(yǔ)音通信質(zhì)量[4-5],Speex算法除了提供了基于碼激勵(lì)線性預(yù)測(cè)(CELP)算法的編/解碼模塊,還在其最新發(fā)布的版本中提供了聲音預(yù)處理和聲學(xué)回聲消除模塊。同時(shí),Speex算法壓縮后的低比特率(2~44 kbps)特點(diǎn),以及支持多種

比特率的優(yōu)勢(shì),使之更加適合于VoIP的系統(tǒng)[6-7]。

1 Speex編解碼算法簡(jiǎn)介

Speex算法是基于CELP算法的多模式多速率的語(yǔ)音編碼算法。對(duì)應(yīng)8kHz、16kHz、32kHz三種不同的語(yǔ)音采樣率,Speex算法提供了窄帶、寬帶以及超寬帶三種不同帶寬的語(yǔ)音編碼模式

1.1 Speex算法——窄帶模式

1)整幀分析:在Speex窄帶模式中,每個(gè)語(yǔ)音幀長(zhǎng)20ms,對(duì)應(yīng)于160個(gè)取樣;每個(gè)幀被分成4個(gè)子幀,每個(gè)子幀長(zhǎng)5ms,對(duì)應(yīng)40個(gè)取樣。對(duì)于大多數(shù)的窄帶比特率(8kbps及以上),只有線性光譜(LSP)和全局激勵(lì)增益gframe,而這兩個(gè)參數(shù)是在整幀的層面上編碼的。其他所有的參數(shù)都在子幀層面上編碼。

2)子幀分析與合成:Speex算法在三大方面不同于多數(shù)的CELP編/解碼器。首先,相對(duì)于很多CELP編/解碼器用單個(gè)增益進(jìn)行分?jǐn)?shù)基音估計(jì),Speex算法要用到3個(gè)增益,但它僅使用一個(gè)整數(shù)對(duì)基音進(jìn)行周期編碼。其次,在對(duì)固定碼本增益編碼時(shí),很多CELP編碼器采用了移動(dòng)平均預(yù)測(cè)來(lái)進(jìn)行編碼;而Speex算法是對(duì)全真激勵(lì)增益和子幀增益相關(guān)系數(shù)的乘積來(lái)編碼。最后,Speex算法在子向量量化值的使用方面,采用了隨機(jī)碼本信號(hào)取代代數(shù)碼本信號(hào)。

3)比特分布:在Speex算法中,定義了范圍在256bps~24.6kbps之間的7種不同的窄帶比特率。首先分別用1bit和4bits對(duì)帶寬(Band wide)和窄帶子模式號(hào)(Mode ID)進(jìn)行編碼;其中mode ID的范圍為0到15,只有前7個(gè)值是可用的。在比特流的打包處理上,整幀層的所有參數(shù)首先進(jìn)行打包,隨后是子幀層參數(shù)的打包。在某一子幀曾參數(shù)完全打包后,下一子幀層的參數(shù)才開始進(jìn)行打包處理[8]。

1.2 Speex算法——寬帶模式

在Speex算法的寬帶模式下,Speex采用正交鏡像濾波器把16kHz的信號(hào)分成兩個(gè)8kHz的信號(hào)。其中0~4kHz表示低帶部分,4~ 8kHz表示高帶部分。

1)線性預(yù)測(cè):在寬帶模式下,分出的告貸部分的線性預(yù)測(cè)與窄帶模式相似。不同的是,寬帶模式下使用了多階量化器(MSVQ)對(duì)高帶的LSP系數(shù)編碼,并且僅用了12個(gè)比特。在這12個(gè)比特中,前6bits用來(lái)量化10個(gè)系數(shù),后6bits用來(lái)量化殘差。

2)基音預(yù)測(cè):在寬帶模式下,由于帶寬部分有4kHz以上輕微的諧波結(jié)構(gòu),同時(shí)由于QMF將4~8kHz的部分折疊成了4~0kHz,使諧波的位置不再是基音的倍數(shù),因此基音預(yù)測(cè)難以實(shí)施。故在Speex算法編解碼的高帶部分沒有引入基音預(yù)測(cè)。

3)比特分配:在寬帶模式中,在高帶編碼前,窄帶幀已經(jīng)打包完成。因此寬帶幀可能會(huì)被窄帶解碼器正確解碼,同時(shí)如果多個(gè)幀被打包在同一包中時(shí),可能會(huì)導(dǎo)致警告信息的彈出。而解碼器為了與比特流保持同步,不得已拋棄了高帶部分。

2基于Speex算法的語(yǔ)音壓縮與解壓的程序設(shè)計(jì)

2.1壓縮程序

壓縮程序的主程序編寫在speexenc文件中,程序設(shè)計(jì)的思路為,首先編寫speexenc(編碼)的用法;然后編寫如何實(shí)現(xiàn)對(duì)輸入文件的壓縮:先用fopen函數(shù)打開輸入的文件,并判斷參數(shù),再進(jìn)行初始化配置參數(shù),預(yù)處理,然后給待生成的spx文件寫頭,調(diào)用libspeex庫(kù)中的函數(shù)對(duì)語(yǔ)音數(shù)據(jù)進(jìn)行壓縮處理并寫入spx文件中,即可輸出壓縮后的spx文件。其程序流程如圖1所示。

2.2解壓縮程序

解壓縮程序同壓縮程序設(shè)計(jì)類似,其實(shí)現(xiàn)部分也是主要調(diào)用libspeex庫(kù)中函數(shù)。解壓縮的主程序編寫在speexdec文件中,程序設(shè)計(jì)的思路為,首先編寫speexdec的用法;然后編寫如何實(shí)現(xiàn)對(duì)spx文件的的解壓:先用fopen函數(shù)打開待解壓的文件,再進(jìn)行初始化,然后編寫解碼循環(huán),循環(huán)中要讀取spx文件所有的數(shù)據(jù)包,并把第一個(gè)數(shù)據(jù)包作文speex頭處理,調(diào)用libspeex庫(kù)中的函數(shù)對(duì)spx文件進(jìn)行解壓處理,處理完之后即可輸出解壓后的文件。其程序流程如圖2所示。

為了驗(yàn)證語(yǔ)音壓縮和解壓程序的功能,首先對(duì)一個(gè)PCM語(yǔ)音文件進(jìn)行了壓縮。

在壓縮程序Speexenc下的bin文件夾內(nèi)放入一個(gè)語(yǔ)音文件1.wav,然后輸入如下命令speexenc -n --vbr 1.wav 2.spx,其中PCM文件1.wav語(yǔ)音為8kHz采樣率、16bits量化的單聲道數(shù)據(jù),程序運(yùn)行結(jié)果圖3所示:

圖3 Speex語(yǔ)音壓縮程序運(yùn)行結(jié)果

在壓縮完成后,再對(duì)生成的壓縮文件進(jìn)行相同參數(shù)的解壓,輸入如下命令speexdec -n --force-nb --rate 8000 --mono 2.spx 2. wav,程序的運(yùn)行結(jié)果如圖4所示:

圖4Speex語(yǔ)音解壓縮程序運(yùn)行結(jié)果

那么文件2.wav就是原始語(yǔ)音文件1.wav經(jīng)過(guò)壓縮和解壓過(guò)程后生成的語(yǔ)音文件,圖5和圖6分別為這兩個(gè)語(yǔ)音文件的波形圖。

比較這兩個(gè)波形可以看出,解壓之后略有失真,而且實(shí)際聽起來(lái)也是有一點(diǎn)噪聲,但是從波形上看基本相同,因此該程序設(shè)計(jì)基本上達(dá)到了預(yù)期的目標(biāo),實(shí)現(xiàn)了對(duì)語(yǔ)音文件的壓縮與解壓。

4結(jié)束語(yǔ)

Speex作為一套功能強(qiáng)大的語(yǔ)音引擎,具有諸多優(yōu)點(diǎn),這些特點(diǎn)使得Speex特別適合VoIP的系統(tǒng)和無(wú)線語(yǔ)音傳輸系統(tǒng),能實(shí)現(xiàn)高質(zhì)量和低比特率的編碼。本文在介紹了Speex編/解碼算法的特性基礎(chǔ)上,分析了Speex算法原理,介紹了如何利用speex算法libspe ex庫(kù)和libspeexdsp庫(kù)中的函數(shù)設(shè)計(jì)基于Speex算法的PCM語(yǔ)音壓縮與解壓程序,并通過(guò)測(cè)試驗(yàn)證了程序的功能。

參考文獻(xiàn):

[1]蔡鐵,龍志軍,伍星.基于語(yǔ)音質(zhì)量預(yù)測(cè)的Speex自適應(yīng)碼率控制算法[J].計(jì)算機(jī)應(yīng)用,2010,3(2):12-17.

[2]楊明.數(shù)字音頻壓縮技術(shù)發(fā)展現(xiàn)狀[J].中國(guó)新聞科技,1999(4).

[3] Andre Neubauer, Jurgen Freudenberger, Volker Kuhn.編碼理論:算法、結(jié)構(gòu)和應(yīng)用[M].張宗橙,譯.北京:人民郵電出版社,2009.

[4]謝曉鋼,蔡駿,陳奇川.基于Speex語(yǔ)音引擎的VoIP系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,2007,12(5):33-41.

[5]胡愛榮.Speex語(yǔ)音編解碼算法及其在DSP上的實(shí)現(xiàn)[D].北京:北京郵電大學(xué),2008.

[6]李洪艷.基于VoIP和異構(gòu)計(jì)算的SPEEX研究與實(shí)現(xiàn)[D].成都:電子科技大學(xué),2011.

[7]楊淑文.基于Speex技術(shù)的無(wú)線語(yǔ)音編/解碼和傳輸系統(tǒng)設(shè)計(jì)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2009.

[8] Zhong Jieshi,Zhang Ke. Research and Implementation of Speech Codec Based on Speex [J]. Computer Measurement & Con trol, 2010,2(6):102-111.