999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于DM642的高速語音編碼器設計與實現

2016-10-11 07:23:14羅功銀馮偉東國網湖北省電力公司信息通信公司
電子制作 2016年16期
關鍵詞:優化

羅功銀 周 正 馮偉東 國網湖北省電力公司信息通信公司

基于DM642的高速語音編碼器設計與實現

羅功銀 周 正 馮偉東 國網湖北省電力公司信息通信公司

變速率語音編碼;AMR-NB;算法優化

引言

語音通信是人類通信最基本、最重要的方式之一。由于移動信息網絡技術的不斷進步,語音通信工程也逐漸發展壯大起來,同時,二者之間的聯系也更加緊密。在語音通信的數字化發展過程中,語音編碼這個關鍵技術也有了長足的進步。特別是當移動通信經歷了三次革新后,相應的語音編碼運算方式也要變得更為先進,表現為碼率保持在較低的水準,從而提高系統存儲水平,以及要顯著提升合成音的質量,從而確保通話活動的順利進行。與此同時,在移動通信市場領域內表現出極其激烈的競爭,研究熱點也很快轉移到了對變速率語音編碼的研究方面。伴隨著日臻成熟的科學技術,其應用范圍也變得越來越大[1]。以3GPP與以碼激勵線性預測(Code Excited Linear Prediction,CELP)算 法 為 基 礎, 在AMRNB(Adaptive Multi Rate-Narrow Band)語音編碼規范被制定出來,它被廣泛應用于第三代移動通信系統中。 300Hz~3400Hz是AMR-NB算法使用的信號頻段, 8kHz是其抽樣頻率,并擁有4.75~12.2 kb/s的八種速率及一種1.8kb/s的背景噪聲編解碼方式。依據無線信道和傳輸狀況,它能夠自適應地挑選一種編碼方式實行傳輸[2]。

對于AMR編碼的研究,現在普遍都是在確定基準版本之上,來改善3GPP發布的以AMR-NB準則為前提的ANSI-C代碼。實際上,定點C代碼是能夠自主運行的,然而它會產生大量的不必要損耗,因為算法本身具有極強的復雜性,因此所研發的產品不是需要耗費大量的計算資源,就是難以及時運用到實際領域中,所以難以作用于計算資源受限的移動終端。因此,根據平臺的差異,代碼也應進行相應地靈活調整。

1.AMR-NB語音編碼器原理分析

1.1 語音編碼發展現狀和發展趨勢

在對語音數字進行處理的過程中,通常會用到語音壓縮編碼,其存在的意義是實現以最小比特達到最高合成音質的效果。該技術在速率方面由變化代替了固定形態,而比特率也在逐漸縮小。根據編碼的手段來劃分,語音編碼有波形、參數以及混合三種編碼形式。

圖1 AMR-NB語音編碼結構圖

波形編碼會把頻率以及時間區域里所發出的信號即時轉化成數字信號,它作用于語音波形之上,盡量確保輸入波形不發生改變,也就是說反饋的語音信號和輸入波形保持高度的一致性,從而達到高音質目標。這種編碼的優勢在于音質高、抗噪能力強、符合預測編碼的要求等。而它的不足之處在于其要求較高的碼率環境,一旦速率無法保證,音質也難以達到較高的水準,一般會下降到16kbit/s~64kbit/s的范圍里[3]。

參數編碼(即聲碼器編碼)是通過頻域等轉化區域來獲得能夠反映信源信號特點的參數,并對其加以編譯處理,再傳遞出去;接著把所獲數字化的信號內容由譯碼端編譯為相應的特征參數,以此來再構造語音信號。如果實踐環境中沒有太高的嗓聲,那么合成音效也會和音源保持較高的一致性。其特點是碼率低,但語音質量不高。以線性預測 (速率為2.4kbit/ s的LPC-10E)為基礎的聲碼器是參數編碼器中最有影響力的,不過,因為它較差的語音質量,現在已完全被新的編碼器取代。參數編碼能夠達到語音方面的低速率編碼要求,碼率下限能夠小于2.4kbit/s。而它的不足之處在于音質不好,失真度高[4]。

混合編碼整合了以上兩種編碼方式,它先以語音來創造模型,并將相關參數加以編譯,降低波形編碼環境里的目標量及其運動區間;還能通過編碼使與原始型號語音波形相接近的合成語音得以實現,進而使發言人的所有自然特性得以保留,使合成語音效果得以增強。高品質的合成語音在4kbit/s~6kbit/s速率上可以較容易的獲得[5]。

語音編碼器早先是以標準PCM波形為基礎的,而今已開始運用聲碼器進行參數編碼工作了,其速率也由64kbit/s下降到了4kbit/s,并用自適應的多重碼率取代了以往單調而唯一的碼率,而這些年中,寬帶語音編碼技術也產生了巨大的飛躍。根據語音編碼的時代變遷情況,其由下列三階段構成。

第一個階段,波形編碼被語音處理所取代并開始涉及到參數編碼探索領域,從此打下語音模型的基礎。由于科學、有效的共振峰聲碼器面世,線性預測編碼(LPC:Linear Predictive Coding)也開始在語音分析合成領域發揮出巨大作用,在此基礎上產生了協方差、格型以及自相關這類效率高、實效性強的算法。此后又誕生了運用瞬時頻率原理而研制出的相位聲碼器,根據倒譜特性而構造成的同態聲碼器,并將聲碼器標準定在了2.4kbit/s。

第二個階段,語音編碼發展的快速時期,閉環分析算法的研究最為突出。 1985年,M.R.Schroeder以及B.S.Atal首次以閉環分析思路創造碼本激勵線性預測的運算方式。以此算法為前提,產生了聯邦標準4.8kbit與FS-1016、G.728、G.729以及G.729A這些標準,同時還將低時延碼以及共軛結構代數碼這類具有激勵性質的線性預測手段用于實踐。而且還產生了能夠滿足Internet雙速率(5.3/6.3kbit/ s)的標準G.723,并被廣泛運用于多媒體領域[6]。 VoIP技術所遵循的標準一般是G.729、G.729A以及G.723。

第三階段以移動通信在三次革新后所采取的編碼手段為對象,研究并設計相應的寬帶標準。在此過程中,變速率技術有了較大的進步,各式各樣的國標與區域標準層出不窮。相應的編碼包括:QCELP、EVRC、AMR、AMR-WB、SMV以及VMR-WB等等。以3G準則為前提,我國挑選了AMR編碼來設計了時分同步碼分多址(TD-SCDMA);而美國所創造的CDMA2000標準一度選擇QCELP、VMR-WB以及EVRC來進行編碼活動;而歐洲所創立的寬帶碼分多址(WCDMA)也選擇了AMR以及AMR-WB技術,此外還有SMV這個預備技術[7]。

語音編碼算法一般都是以電話頻帶所產生的語音信號為對象,通常帶寬在300~3400Hz區間中。這樣就不會降低語音的主觀質量[1],因為很多冗余度來自于語音信號本身,如數據冗余、頻譜冗余、時域冗余等。為了實現語音質量的改善,在通信系統總容量不變這一前提下,變速率語音編碼為我們的第一選擇。 ETSI/3GPP于1999年制定了基于碼激勵線性預測(CELP)算法的語音壓縮編碼標準AMR-NB,應用于第三代移動通信W-CDMA系統中。

1.2 AMR-NB語音編碼原理

語音信號被AMR編碼器進行八種不同速率的編解碼, 8kHz采樣是編碼器的輸入頻率,線性PCM編碼采用16bit進行量化,20ms是一個語音幀的編碼操作間隔,這樣采樣點就是160個。 ACELP模型的參數被發送端編碼器進行提取并傳輸,而解碼器在進行接收時,為了建立對應的激勵信號,就會按照有關參數重建語音。

AMR編碼器的架構圖如上圖1所示,其主要模塊的原理分析如下:

(1)在將要對語音信號進行編碼時,需開展預處理工作,也就是壓縮信號并進行高通濾波器篩選。這類濾波器會阻截80Hz的頻率,從而化解低頻干擾,而通過壓縮之后,信號就能夠有效避免運算溢出的問題。

(2)使基音分析得以簡化是開環基音分析的目標,并把開環基音估計值的較近區域作為閉環基音分析的范圍。以加權語音數據為基礎的是開環基音估計,也就是說這個信號是通過預處理和加權濾波后形成的真正輸入信號。

(3)采用AMR語音編碼對脈沖響應進行計算,實際上指的是感知加權結合在一起的合成濾波器所產生的脈沖響應,這不僅參考了合成濾波器,還考慮了感知加權濾波器,能夠用來進行自適應,也可以用來搜索固定碼本。

(4)對于自適應碼本的查詢活動需要以子幀為平臺,基音延時和濾波器增益就是其參數,并包含了閉環檢索和矢量計算等工作。相關的搜索流程可適用于所有的語音模式,僅在對適用區間、分數基音分辨率和內插所要用到的FIR濾波器的選擇上有所差異。

(5)以交織的單脈沖序列設計為基礎的是固定碼本結構。包含在碼本中的非零脈沖幅度可以為正也可以為負,它在-1和1之間存在。對應子幀和脈沖有40個位置可以被分為n組(n由語音方式種類決定)。將加權輸入語音以及解碼語音兩者之間所存在的均方誤差降到最低是搜索固定碼本執行的原則。對閉環基音進行搜索主要是通過將自適應碼本進行縮減來更新目標信號的。

圖2 語音處理的硬件系統框圖

2.AMR-NB編碼的軟硬件平臺設計

DSP芯片是一種專用的處理器,其主要功能在于當模擬信號轉換為數字信號的時候對其加以及時的高速處理,在結構設計上具有一定的特殊性,不同于微處理器,比較適合處理實時信號。DSP芯片能夠用來實現語音編解碼,按照語音編碼所具有的復雜程度,還有具體的應用場合,對DSP進行選擇,并按照DSP所呈現出的結構特點,對編碼加以優化處理,這樣可以促使語音編碼的有效運行,擴大應用場合的范圍。

表1 對10幀語音數據進行編碼時調用的基本算子次數

2.1 硬件系統平臺

本文所采用的硬件系統平臺是直接采用TMS320DM642v1.2開發板。 TI(美國德州儀器)公司推行的新一代以C64內核的32位高性能的定點數字媒體應用處理器為基礎的TMS320DM642(Digital Media Processor),600MHz是它的CPU內核頻率,能夠達到5760MIPS(百萬條指令/秒)的數字處理峰值。在對兩極緩存加以應用的時候, DM642的外圍設置不僅強大,而且富于變化性。一級程序當中的緩存L1P屬于一種直接的映射緩存,為128Kbit;此外,另一級程序中的數據緩存L1D屬于一個設置緩存,具有雙路結合性,也為128Kbit。如果L2存儲器的容量為256KB,那么就可以將其設置為一個映射存儲器,可以是高速緩存的,也可以把兩者結合起來。除此之外,基于外圍設置我們可以看出,它一般包括以下配件:用于配置的視頻端口3個、10/100Mb/s的以太網控制器(EMAC)1個、數據管理輸入輸出(MDIO) 1個、內插VCXO控制接口1個、 McASPO 1個、12C總線1個、McBSPs 2個、32位通用定時器3個、用戶配置的十六位或三十二位主機接口(HPll6/HPl32) 1個、 PCI 1個、 16引腳的通用輸入輸出口(GPO) 1個(擁有可編程中斷/事件產生模式)和64位EMIFA 1個(可使同步、異步存儲器互聯,還能溝通外圍)。

2.2 構建硬件系統的整體設計

AMR-NB算法實際上是對純語音數據的一種處理,所以這一算法的實現,僅僅會涉及DM642開發板當中的一些資源,其硬件圖如圖2。

針對AMR-NB算法,其測評可以分兩階段實行,以測試序列語音的優化處理為基礎的是第一階段,通過仿真器可以對其序列的信號傳輸進行測評。改進后AMR-NB算法在硬件上的實時實現一般可以在第二階段進行。

2.3 軟件研發平臺

CCS2.2 (code composer studio)平臺用于AMR-NB算法的代碼優化和調試,而VC++軟件平臺用于最標準參考代碼的驗證。

TI公司研發了一款新的工具,主要用于DSPs軟件開發,即CCS2.2 。其重要組成部分包括以下幾種,首先是產生C6000代碼的工具,還有軟件模擬器,并且還包括實時的基礎軟件,以及對主機數據進行實時交換的一款軟件,此外還包括實時分析軟件,以及數據可視化的相關軟件。 CCS具備調試功能,并且具有較高的精度,這就使得DSP軟件在進行代碼開發的時候不再那么困難。

從編程方式來看, CCS2.2 較為靈活,可以應用C語言,也可以使用匯編語言,還能進行線性匯編,此外也能夠應用混合語言進行編程。并且它在優化編譯器的時候,其組合形式也不盡相同,如果源代碼沒有發生改變,那么可以對代碼性能加以相應的改善。具備代碼剖析功能,有助于方便地進行程序測試,并對其加以優化。 CCS2.2 主要有模擬軟件以及硬件仿真兩種開發環境,在調試代碼階段,主要用模擬軟件這種開發環境,實時實現則需要在硬件仿真環境中進行。

http://www.3gpp.org網站下載AMRNB算法的C源代碼,由Visual C++6.0平臺實現其對這種代碼的精確性測評。對它各種各樣的模式以及測評系列進行測評是其主要功能。

3.AMR-NB代碼在DM642上的移植

針對一般的PC機代碼就是使用的AMRNB算法里的C源碼,就細節性的應用而言,相應的優化處理應依據平臺的特性來實現,這樣可以使應用的現實目標得以達成。本文對AMR-NB算法的C代碼進行闡釋、優化,并詳細解析了其實時實現的細節化手段和相關手法。

3.1 AMR-NB編碼算法移植

在Visual C++6.0下運行ARM_NB標準源碼時,需要將編解碼的文件整理出來,在對應VC工程下總共有112個C文件。之后,將以上提到的文件以及相應的頭文件拷到在CCS2.2 下最新構建的一個工程的目錄之下。編譯器在BuiltOption中添加-i"D: i myprojectsARM_NB",文件的包含路徑就是這個,之后在工程項目下拉菜單里掃描所有文件,就能在DSP編解碼庫工程中加載標準源碼中的頭文件了。此外,對內存空間要進行合理的分配,因為DM642只有32M的有限容量,寫一個CMD文件分配段的存儲小程序就很有必要了。

因為DSP編解碼工程具有較多的全局變量以及靜態變量,編譯時有較大的出錯可能,主要是由于全局以及靜態變量具有的默認聲明都為near,所以尋址范圍僅能達到32Kbytes,如果要把這個改成far,那么advanced就會在Built 選項的編譯器中將Memory模式自動改成far calls &data。 __MSDOS__;VAD1在VC程序的ARM_NB工程中得到了預編譯,所以這些也需要在Built選項中的compiler.->preprocessor里進行同時添加。到這個時候,我們才算是完完整整地建立起了DSP編解碼工程。

除此之外,因為一些細微差別存在于PC以及DSP平臺的某些數據結構中,比如在VC下long是32位,在DSP平臺下是40位就是其最為重要的差別。因此就需要我們對typedef.h中的typedef long Word32進行修改,將其手動改為int型。

3.2 使用內斂函數優化

通過對CCS中所包含的profile進行c代碼功能剖,我們能夠很容易地發現大多數的運算時間均在basicop2.c以及code.c與decode.c等代碼中花費。其中, basicop2.c的算子是標準源碼中的所有基礎運算,如簡單的加減運算和位移運算等。這些基本運算中的大多數在編解碼過程的調用次數很多,表1給出了編碼10幀語音時的調用次數統計。

C64xDsP提供了大量內聯函數,直接與匯編指令相對應,可以使C函數在不同的周期執行,從而有效地提高工作效率,并且代碼尺寸也會得以降低。倘若一個函數屬于內聯函數,那么在對其進行調用的時候,編譯器就會將其自動地展開至其調用代碼中,就降低了調用成本。若將這些基本運算用內聯函數進行優化,則可大大提高編解碼庫的效率。

對長,短基本算子依據C64xDsP提供的內聯函數,可以給出直接定義來進行運用的我們就可以對其進行直接定義,對無法進行重定義的,就實行再一次的編寫。 C語言的短型飽和加法就是一個很好的例子,表2給出了替換AMR-NB基本算子所需的內聯函數形式。

表2 AMR-NB基本算子所對于的內聯函數

用profile測試code.c中的252到310行,此代碼段對音頻數據進行讀取、編碼、存儲,未優化前的周期數是240461626。對basicop2.c進行內聯優化之后的周期數是49035445。

3.3 以編譯器為基礎的C優化

對滿足ANSI標準的C代碼采用TMS320C6000的C編碼器可以實行編譯,其內部包含著具備多個優化級別的C優化器,其級別可以根據不同需要加以設置,十分方便;為了縮短代碼長度、提高執行效率,這樣的優化也顯得尤為必要。

包含在編譯器中的C優化器竄向能夠實現對C代碼進行優化的功能,總共包括四個優化級別,其中默認的級別有-o0、 -o1、 -o2選項,以及-o3。 -o2選項。不僅C優化器可以實現優化,而且C編譯器所包含的代碼產生器同樣能夠進行優化,并且獨立于優化選項。 C優化器主要是對軟件流水進行優化。針對軟件循環,自-o2起的優化器將處理相應的軟件流水。軟件流水是一種的技術,可以用來專門優化循環代碼,通過流水產生的代碼極為緊湊,因此其編譯效率較高。

各種C文件在默認狀態都會被C優化器分別進行優化處理。假如可以在整個程序范圍內對特定情況實行優化,則還可以進一步的提升優化器的效率。在編譯項內能夠添加-pm,把一個程序所涵蓋的各種C文件加以合并成,然后變成一個模塊再實行優化處理,這是它所起到的主要作用。

本文經編譯器-o3、-pm、-op2優化,編碼10幀音頻的周期數是88978822,程序效率提高了63%。若聯合使用編譯器優化和內斂函數優化,編碼10幀音頻的周期數是2998123,效率提高了98.7%。

4.總結

數字通信系統中已廣泛使用了語音編碼技術,尤其是移動通信領域,其慢慢開始占據主導位置。同時,語音編碼技術還在不斷的進行著革新,主要表現在定速率向變速率的轉變和高速率向低速率的轉變。移動通信3G已將AMR-NB語音編碼作為一種備用標準。所以怎樣提高其實際的運行效率,縮小占用空間,在擴展語音技術應用領域上至關重要。 AMRNB原算法中產生的C標準代碼只能應用在PC機上,其針對應用平臺的運行效率并不算高。本文充分利用了DM642平臺硬件資源的優點,設計了AMR-NB語音編碼算法的硬件平臺方案并實現了算法移植,移植后算法效率提高了98.7%。

[1] 王炳錫,王洪編著.變速率語音編碼[M].西安電子科技大學出版社,2004.6

[2] ETSI.EN 301 704 V7.2.1 Digital cellular telecommunications system (Phase 2+) (GSM);adaptive multi-rate(AMR) speech transcoding[S];ETSI,2000.

[3] 胡航.語音信號處理[M].哈爾濱:哈爾濱工業大學出版社,2002,135-171.

[4] 李昌立,吳善培.數字語音-語音編碼實用教程[M].北京:人民郵電出版社,2004,20-24

[5] 韓紀慶,張磊,鄭鐵然.語音信號處理[M].北京:清華大學出版社,2004.

[6] 王炳錫.語音編碼[M].西安:西安電子科技大學,2002,1-8

[7] 王崇斌.G..722.2 的研究及其定點DSP的實現:[M].武漢:華中科技大學,2005,2-5.

羅功銀(1963),男,湖北監利人,高級工程師,從事電力信息通信技術研究及運行管理工作。

周正(1980),男,湖北武漢人,高級工程師,從事電力信息通信調控與視頻會議運維管理工作。

馮偉東(1982),男,湖北武漢人,高級工程師,從事電力信息通信項目與技術管理工作。

AMR-NB算法的原理是本文研究的重點,同時本文詳細地闡釋了該算法的每個模塊;經過探究DM642芯片的硬件資源,對實現AMR-NB算法的硬件平臺的組建條件和計劃進行闡明;本文還對AMR-NB算法的優化和實現方法進行了探究。基本算子的內聯函數宏定義也在本文提出的優化工作范圍之內,重點研究了基于編譯器的C優化。在使用AMR-NB算法優化之前和優化以后進行了對比試驗,并進行測評與解析,結果顯示,其算法通過優化后在計算效率方面有了較大的改善。

猜你喜歡
優化
超限高層建筑結構設計與優化思考
房地產導刊(2022年5期)2022-06-01 06:20:14
PEMFC流道的多目標優化
能源工程(2022年1期)2022-03-29 01:06:28
民用建筑防煙排煙設計優化探討
關于優化消防安全告知承諾的一些思考
一道優化題的幾何解法
由“形”啟“數”優化運算——以2021年解析幾何高考題為例
圍繞“地、業、人”優化產業扶貧
今日農業(2020年16期)2020-12-14 15:04:59
事業單位中固定資產會計處理的優化
消費導刊(2018年8期)2018-05-25 13:20:08
4K HDR性能大幅度優化 JVC DLA-X8 18 BC
幾種常見的負載均衡算法的優化
電子制作(2017年20期)2017-04-26 06:57:45
主站蜘蛛池模板: 精品福利网| 久久这里只有精品国产99| 国产女人在线视频| 全部毛片免费看| 免费在线看黄网址| 国产欧美在线视频免费| 色噜噜综合网| 久久综合亚洲鲁鲁九月天| jizz在线免费播放| 伊人久久大香线蕉影院| 丰满人妻一区二区三区视频| 伊人久久综在合线亚洲2019| 视频二区中文无码| 国产第一页亚洲| 婷婷六月激情综合一区| 国产在线观看第二页| 美女无遮挡免费视频网站| 亚洲精品爱草草视频在线| 欧美日本在线| 欧美午夜理伦三级在线观看| 在线观看的黄网| 国产一级毛片在线| 欧美一区二区精品久久久| 色婷婷狠狠干| 国产高清不卡| 欧美日韩资源| 成人国产一区二区三区| 91福利国产成人精品导航| 亚洲人成高清| 日韩欧美国产三级| 亚洲九九视频| 国产网友愉拍精品视频| 99视频在线免费| 亚洲成在线观看 | 国产呦精品一区二区三区网站| 免费毛片视频| 国产九九精品视频| 国产偷倩视频| 中日韩一区二区三区中文免费视频 | 色香蕉网站| 中文字幕天无码久久精品视频免费 | 欧美日本激情| 国产福利小视频高清在线观看| 国产精品成人一区二区| 久久综合亚洲色一区二区三区| 国产呦视频免费视频在线观看| 国产午夜一级淫片| 日韩精品高清自在线| a毛片基地免费大全| 在线观看视频99| 亚洲成av人无码综合在线观看| 她的性爱视频| 亚洲男人在线天堂| 亚洲中文字幕久久无码精品A| 亚洲精品片911| 日韩欧美中文字幕一本| 老司机午夜精品网站在线观看| 91精品国产自产在线观看| 国产大片喷水在线在线视频| 精品久久蜜桃| 国产日韩欧美在线视频免费观看| 国产产在线精品亚洲aavv| 毛片视频网址| 国产精品网址你懂的| 欧美日本不卡| 激情综合婷婷丁香五月尤物| 青青青视频蜜桃一区二区| 免费国产好深啊好涨好硬视频| 99re在线观看视频| 无码中文字幕加勒比高清| 国产在线日本| 亚洲欧美国产高清va在线播放| 国产一在线| 国产激情在线视频| 欧美精品一二三区| 欧美精品二区| 不卡无码h在线观看| 综合亚洲网| 在线高清亚洲精品二区| 国产精品免费p区| 日韩国产另类| 一级毛片在线播放免费观看|