基于ARM的嵌入式語音存儲系統(tǒng)設(shè)計
摘要:為了有效地節(jié)省語音數(shù)據(jù)的傳輸帶寬和存儲系統(tǒng)的磁盤空間,需要在保證語音質(zhì)量的前提下盡可能降低其編碼比特率。本設(shè)計采用經(jīng)過優(yōu)化的G.729語音壓縮編譯碼算法,以ARM處理器為載體,開發(fā)的嵌入式語音存儲系統(tǒng)可實現(xiàn)語音信號的海量存儲,而且處理速度快、可靠性好、擴展方便。通過嚴格的測試和評估,該系統(tǒng)能夠?qū)崿F(xiàn)對大量語音數(shù)據(jù)的壓縮和記錄,各項指標基本達到了預(yù)期的水平。
本文引用地址:http://www.ex-cimer.com/article/171418.htm關(guān)鍵詞:ARM;語音壓縮;G.729;語音存儲
1 系統(tǒng)控制核心
嵌入式操作系統(tǒng)軟硬件結(jié)構(gòu)框圖如圖1所示,由硬件層、驅(qū)動層、系統(tǒng)層和應(yīng)用層組成。硬件層包括嵌入式處理器最小系統(tǒng)、存儲器(SD RAM、Flash、ROM等)、通用設(shè)備接口和I/O接口(A/D、D/A、I/O等),其中Linux實時操作系統(tǒng)和應(yīng)用程序都可以固化在ROM中。硬件層的核心是嵌入式處理器,在一片嵌入式處理器基礎(chǔ)上添加電源電路、時鐘電路和存儲器電路,就構(gòu)成了一個嵌入式處理器最小系統(tǒng)。中間的驅(qū)動層將上層軟件和底層硬件分離開,為其連接提供接口。系統(tǒng)層主要負責(zé)軟件硬資源的分配、內(nèi)存管理、任務(wù)調(diào)度、文件處理等,是軟件層的核心。應(yīng)用層為用戶提供編程接口,實現(xiàn)各種應(yīng)用功能。
1.1 系統(tǒng)軟件核心
Linux操作系統(tǒng)的內(nèi)核主要由進程調(diào)度、內(nèi)存管理、虛擬文件系統(tǒng)、網(wǎng)絡(luò)接口、進程間通信五個子系統(tǒng)組成,各個子系統(tǒng)之間都存在著不可分割的依賴關(guān)系。內(nèi)核為設(shè)備驅(qū)動提供支持,實現(xiàn)設(shè)備控制與應(yīng)用;設(shè)備驅(qū)動為上層提供標準接口,完成硬件細節(jié)的封裝??梢愿鶕?jù)設(shè)計需要對內(nèi)核模塊進行適當?shù)牟脺p,制作出理想、實用的操作系統(tǒng)。
1.2 系統(tǒng)硬件核心
Samsung公司的S3C2440A處理器是一款以手持設(shè)備為主而設(shè)汁的芯片。這款處理器支持NOR Flash和NAND Flash啟動方式,內(nèi)部集成LCD、I2C總線、AC97、Camera等控制器。提供豐富的接口資源,方便與外設(shè)連接,易于擴展。
2 G.729算法概述
2.1 G.729編碼原理
G.729編碼標準采用CS-ACELP語音壓縮編碼技術(shù),其核心原理是線性預(yù)測和二級量化。每個10 ms的語音幀包含80個采樣點,在每個這樣的語音中都要進行線性預(yù)測(LP)分析,計算出LP濾波器系數(shù),再轉(zhuǎn)換為線性譜對參數(shù)(Line Spectrum Pari,LSP),并使用有兩個階段
的預(yù)測矢量量化器(Vector Quantization,VQ)進行18比特量化。然后編碼器以原始語音和合成語音的誤差感覺加權(quán)最小為準則采用A-B-S(Analysis-By-Synthesis,分析合成)方法搜索激勵信號,激勵參數(shù)(固定碼書參數(shù)和自適應(yīng)碼書參數(shù))每個子幀(5 ms幀長,40個采樣點)確定一次,感覺加權(quán)濾波器的系數(shù)由未量化的LP系數(shù)產(chǎn)生。
2.2 G.729解碼原理
解碼是編碼的逆過程,其原理為:首先從獲得的碼流中提取出參數(shù)的索引,這些參數(shù)包括LP濾波器系數(shù)、自適應(yīng)碼書矢量以及固定碼書矢量和增益,它們分別解碼后,可獲得一個LSP系數(shù)、兩個音節(jié)延遲、兩組自適應(yīng)碼書和固定碼書增益等對應(yīng)于10 ms語音幀的編碼器參數(shù)。
然后將LSP系數(shù)進行內(nèi)插操作,轉(zhuǎn)換為每個5 ms子幀的LP濾波器系數(shù),再對每個子幀進行如下操作:
①經(jīng)各自增益縮放的自適應(yīng)矢量和固定碼本矢量相加,得到重建的激勵信號;
②將激勵信號通過LPC合成濾波器,得到重建語音;
③重建的語音信號經(jīng)過各種濾波器的后續(xù)處理,實現(xiàn)信號的放大和改善。
2.3 G.729算法優(yōu)化
在G.729編碼算法中,采用量化碼本結(jié)構(gòu)。其基本原則如下:首先計算出K維碼本里的各個碼字矢量的平均值并存儲起來;然后求出輸入信號矢量平均值和各個碼字矢量平均值的均方誤差值;最后用遍歷法找到這些均方誤差中的最小值Dmin,與之相對應(yīng)的碼字即為最佳逼近碼字。采用這種搜索方法加快了編碼速度,減少了搜索時間,并沒有改變矢量量化的精度。
3 系統(tǒng)硬件結(jié)構(gòu)
系統(tǒng)硬件結(jié)構(gòu)框圖如圖2所示。S3C2440A作為整個系統(tǒng)的主控芯片,DC電源、復(fù)位電路、時鐘電路作用于系統(tǒng)的每個部分;存儲模塊包括SDRAM、Flash以及外接的CF或SD卡等;調(diào)試模塊包括JTAG接口、RS232接口以及網(wǎng)絡(luò)接口三個部分;音頻模塊的主要工作由編解碼器UDA1 341完成,擴展接口由USB接口、IDE接口構(gòu)成,交互模塊由TFT LCD和觸摸屏構(gòu)成。其中,音頻模塊和IDE擴展接口是研究的重點。
linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
評論