MPEG聲音編碼的單片DSP實(shí)現

發(fā)布時(shí)間:2010-11-25 22:44    發(fā)布者:designer
關(guān)鍵詞: dsp , MPEG , 編碼 , 聲音
1MPEG聲音編碼原理

MPEG聲音編碼是一種基于人耳聽(tīng)覺(jué)特性的子帶聲音編碼算法,它屬于一種感覺(jué)聲音編碼方法.感覺(jué)聲音編碼算法的基本結構如圖1所示.根據編碼器著(zhù)重于頻率分辨率還是時(shí)間分辨率,可分為子帶編碼器和變換編碼器.MPEG聲音第2層編碼算法在頻域上把聲音信號劃分為32個(gè)子帶,屬于一種子帶編碼器.在圖1 中,時(shí)頻映射也稱(chēng)濾波器組,用于把輸入的聲音信號映射成亞抽樣的頻率分量.根據使用的濾波器組的性質(zhì),即濾波器組在頻域的分辨率的大小,這些頻率分量又可叫做子帶樣值或頻率線(xiàn).





(a)




(b)
圖1 感覺(jué)聲音解碼器結構框圖

濾波器的輸出或者與濾波器組并行的時(shí)頻變換的輸出,提供給心理聲學(xué)模型以估計時(shí)間相關(guān)的聲音掩蔽門(mén)限.心理聲學(xué)模型使用了人們所知的同時(shí)掩蔽效應,包括有調音的掩蔽特性和無(wú)調音的掩蔽特性.如果使用聲音的前后掩蔽效應,還可進(jìn)一步提高掩蔽門(mén)限估計的準確性.子帶樣值或頻率線(xiàn)按照盡量保證量化噪聲的頻譜處于掩蔽門(mén)限以下的準則進(jìn)行量化和編碼,這樣能保證被人耳感知的量化引入的噪聲最小.根據對復雜度的要求,可以使用塊壓擴或熵編碼的分析合成方法.

幀打包把量化編碼的輸出和相關(guān)邊信息按照規定的格式組合起來(lái),以便供解碼器使用.

2 編碼質(zhì)量和DSP速度

單片ADSP-2181實(shí)現MPEG聲音編碼關(guān)鍵需要解決兩個(gè)問(wèn)題:一是如何保證聲音編碼質(zhì)量;其次是如何充分利用DSP的運算速度.而這兩個(gè)問(wèn)題往往又是一對矛盾,需要找到其最佳結合點(diǎn).

一般而言,決定MPEG聲音編碼器的優(yōu)劣主要是聲學(xué)模型的好壞.但是,對于使用單片16bit定點(diǎn)DSP的應用而言,這個(gè)結論就不再適用了.分析表明,此時(shí)有限字長(cháng)效應對編碼質(zhì)量的影響成了主要矛盾.特別是分析濾波器組,截尾效應竟帶來(lái)了33倍于16bitAD轉換量化誤差的噪聲,而窗系數的有限長(cháng)度表示則使本來(lái)高達96dB旁瓣衰減的濾波器響應降低到不到70dB.因此,要保證聲音編碼質(zhì)量,分析濾波器組算法必須進(jìn)行精度擴展.

關(guān)于速度問(wèn)題,首先想到的是使用快速算法,我們也嘗試了在子帶濾波中使用快速算法. 但是,實(shí)踐證明,這些快速算法使用在DSP上效果并不理想,其原因有以下3條:(1)只考慮了加法和乘法的次數,而對附值、尋址等操作毫不關(guān)心,但對所有指令都是單周期的DSP而言,乘法和加法的次數相對其他操作并不顯得特別重要;(2)沒(méi)有考慮DSP的硬件特點(diǎn),其算法不能充分發(fā)揮DSP的乘累加器(MAC)并行處理的能力;(3)ADSP-2181是為16位算法操作優(yōu)化的,在需要精度擴展的情況下,運算量將以數量級的速度急劇增加.

基于以上質(zhì)量和速度要求的分析,我們選用了適合DSP乘累加指令的多相結構濾波器組實(shí)現方式,且采用基于MAC結構的精度擴展方法,較好地解決了編碼質(zhì)量和DSP速度之間的矛盾.另外,對抽樣數據的輸入方式、心理聲學(xué)模型、比例因子編碼都進(jìn)行了適于A(yíng)DSP-2181的改進(jìn),減少了運算量,保證了實(shí)時(shí)性.

3 算法的軟件設計

軟件設計是MPEG聲音編碼的單片DSP實(shí)現的核心,編碼質(zhì)量和速度的要求都需要通過(guò)精心設計DSP軟件才能實(shí)現.

(1)基于MAC結構的精度擴展 MPEG聲音編碼的分析濾波器組可以有許多種實(shí)現方式,多相結構是MPEG標準推薦的一種,其數學(xué)表示為
(1)




(2)




分析表明,對Yk進(jìn)行雙字擴展可將截尾效應帶來(lái)的噪聲降低33倍.但是,考慮到ADSP-2181只支持16bit的乘累加運算,需要對式(1)進(jìn)行轉化,即

(3)  Yk=HYk+2-16LYk 
(4) 




這樣,就可利用DSP的乘累加器結構,運算量只增加約1倍,存儲量只增加64個(gè)字.

(2)輸入數據的組織 輸入數據的組織不但要考慮方便地從數模轉換器取得聲音原始數據,還要考慮輸入數據在片內數據RAM的存儲適合作為多相濾波器組和聲學(xué)模型的FFT運算的輸入.多相濾波器組每次移入32個(gè)新的聲音數據,移出32個(gè)舊的樣值,操作如下:

Xi=Xi-32,i=511,510,…,32
Xi=next-input-audio-sample,i=31,30,…,0

然而ADSP-2181并不適于實(shí)現數據的移動(dòng),每個(gè)賦值運算需要兩個(gè)指令才能完成,每次分析濾波操作需要1024個(gè)指令周期.如果利用ADSP- 2181的多通道自動(dòng)緩沖串口及間接尋址能力,適當地組織輸入聲音數據,就可利用滑動(dòng)窗的方法實(shí)現數據的移入和移出,如圖2所示.




圖2 多相濾波的滑動(dòng)窗技術(shù)

為了保證幀邊界處理的連續性,輸入數據緩存應該設計成圓緩沖的形式,其長(cháng)度應能存儲兩幀聲音輸入數據.當DSP在處理一幀數據時(shí),輸入數據可以緩沖到另一幀.這樣,數據移動(dòng)的開(kāi)銷(xiāo)就節約了.同時(shí),輸入數據的組織還要利于聲學(xué)模型的FFT運算,FFT需要利用ADSP-2181的地址反轉尋址模式.由于 FFT計算和輸入數據的緩存是同時(shí)進(jìn)行的,所以FFT計算的指針需要地址反轉,而輸入緩沖的指針卻不能地址反轉,否則會(huì )導致輸入聲音數據排列混亂. ADSP-2181提供這種能力,它的第一地址指針組I0,I1,I2,I3有地址反轉能力,而第二地址指針組I4,I5,I6,I7卻不受地址反轉模式的影響.所以從第二地址指針組中選擇指針進(jìn)行輸入緩沖,從第一地址指針組中選擇指針進(jìn)行FFT計算.
(3)聲學(xué)模型的改進(jìn) 用DSP實(shí)現心理聲學(xué)模型的一個(gè)難題是其中有大量的對數運算,雖然可以用多項式逼近求得其近似值,但是其巨大的運算量說(shuō)明這不是一個(gè)明智的選擇.在改進(jìn)的心理聲學(xué)模型中,FFT運算后并不立即換算到對數域,而是用分段折線(xiàn)逼近線(xiàn)性域的掩蔽效應曲線(xiàn).為簡(jiǎn)單起見(jiàn),使用與標準一致的分段方法.逼近采用取指數的多項式展開(kāi)的一次項的方法,這種方法雖然比較粗糙,但正如前面分析的那樣,聲學(xué)模型在16bit定點(diǎn)實(shí)現時(shí)不是主要矛盾,因而還是可以接受的.

得到掩蔽門(mén)限以后,為計算信掩比供比特分配使用,還是需要從線(xiàn)性域轉換到對數域.這時(shí),我們采用一種利用ADSP-2181移位器的近似計算方法.通過(guò)EXP指令,可以提取2進(jìn)制補碼小數的指數,對能量而言又有1bit約3dB.因而指數值乘3就近似得到該補碼小數的dB值,尾數部分的影響忽略不計.

(4)比例因子的編碼 MPEG聲音編碼標準中一共給出了63個(gè)比例因子,但是并不是所有這些比例因子都可以用16bit的2進(jìn)制數表示.如果用雙字進(jìn)行精度擴展,在量化時(shí)又將面臨雙字除法的巨大開(kāi)銷(xiāo),因此,只使用其中可以用16bit的2進(jìn)制補碼小數精確表示的子集,即序號為3的倍數且小于等于45 的比例因子.

采用比例因子子集后,比例因子編碼就可以不再通過(guò)比較的方法得到,而可以直接通過(guò)計算子帶最大幅度的指數獲得,簡(jiǎn)化了比例因子的編碼.

(5)軟件仿真結果 結合上述各項算法改進(jìn),根據ADSP-2181的特點(diǎn)和MPEG標準,用AD公司的開(kāi)發(fā)軟件進(jìn)行了軟件仿真.表1列出了仿真得到的各個(gè)模塊對運算量和存儲量要求進(jìn)行的估算結果.仿真在抽樣率為48kHz,編碼模式為立體聲,輸入信號為頻率為1kHz的正弦波,輸出碼率為 192kbit/s的情況下進(jìn)行.

由表1可知,ADSP-2181的性能得到了較充分的利用.仿真結果表明,在以上的條件下,解碼輸出的信噪比可達80dB左右.可見(jiàn),所作的算法改進(jìn)是比較有效的.

1 各模塊的運算量和存儲量要求

[td]


[td]
子帶濾波

[td]
聲學(xué)模型

[td]
比特分配和量化

[td]
格式化比特流

運算量/(106指令/s)

程序存儲量/103字

數據存儲量/103字

18

3.0

6.5

10

3.5

1.5

2

2.0


1

0.5

1.0

4 硬件設計

硬件結構框圖如圖3所示.各模塊的基本功能如下:




DSP核:除完成所有編碼算法以外,還要完成對模數轉換電路的初始化配置;通過(guò)輔助控制電路選擇抽樣時(shí)鐘,通過(guò)接口電路接受主機的編碼參數.

輔助控制電路:由FPGA及附屬電路實(shí)現,完成時(shí)鐘的產(chǎn)生、FIFO狀態(tài)的監測、地址譯碼等功能.

輸出緩沖:編碼碼流的暫時(shí)存儲區,同時(shí)提供完全異步的輸出接口方式.在需要實(shí)現圖象聲音唇形同步的應用中特別有用.

外部存儲器:包括BDMA空間、I/O空間.

模數轉換電路:完成聲音的數字化,直接與DSP的串口0連接.抽樣頻率由外部提供的256倍抽樣時(shí)鐘的頻率決定,正常工作前需要進(jìn)行初始化.
接口電路:接口電路分為兩部分,一部分是編碼輸出接口,另一部分是與主機連接的接口.主機接口使用RS232接口芯片完成DSP串口1與主機串口的連接,DSP使用中斷和內部計時(shí)器實(shí)現異步串型通信.

上述方案已經(jīng)在“九五”科技攻關(guān)項目中實(shí)現,實(shí)時(shí)編解碼的聲音通過(guò)了主觀(guān)測試.
本文地址:http://selenalain.com/thread-41819-1-1.html     【打印本頁(yè)】

本站部分文章為轉載或網(wǎng)友發(fā)布,目的在于傳遞和分享信息,并不代表本網(wǎng)贊同其觀(guān)點(diǎn)和對其真實(shí)性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問(wèn)題,我們將根據著(zhù)作權人的要求,第一時(shí)間更正或刪除。
您需要登錄后才可以發(fā)表評論 登錄 | 立即注冊

相關(guān)視頻

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页