基于ADPCM算法的汽車智能語音報警系統(tǒng)設(shè)計
低通濾波器的設(shè)計指標(biāo)為:通帶截止頻率fp=3 400 Hz,通帶允許最大衰減αp≤3 dB;為抑制采樣混疊失真,確定阻帶截止頻率fs=4 000 Hz,阻帶允許最小衰減as≥40 dB。由于橢圓濾波器可以獲得較其他濾波器窄的過渡帶寬,故適用該系統(tǒng)設(shè)計。利用濾波器輔助設(shè)計軟件Filter Wiz Pro獲得五階橢圓低通濾波器電路如圖4、仿真結(jié)果如圖5所示。
級聯(lián)高通和低通濾波器,即可得到300 Hz~3.4 kHz帶通濾波器,實驗表明,該濾波器效果良好,達到設(shè)計指標(biāo)。后向通道的帶通濾波器的設(shè)計與此相同。
4 系統(tǒng)軟件的設(shè)計
4.1 FPGA部分
選用Altera公司的Cyclone系列的EPlC6Q-240C8實現(xiàn)ADPCM編碼器和解碼器。該器件含有120 000典型門資源、5 980個邏輯單元、6個RAM模塊、92 160 Bit RAM或ROM、2個數(shù)字PLL、185個可編程I/O口,最高工作時鐘可達300 MHz以上,并通過JTAG接口實現(xiàn)在系統(tǒng)配置。
ADPCM是一種利用樣本間的高度相關(guān)性和量化階自適應(yīng)壓縮數(shù)據(jù)的波形編碼技術(shù)。ADPCM綜合了APCM的自適應(yīng)特性和DPCM的差分特性。它的核心思想是利用自適應(yīng)改變量化階的大小,即就是使用小的量化階編碼小的差值,使用大的量化階來編碼大的差值;使用過去的樣本值估算下一個輸入樣本的預(yù)測值,實際樣本值和預(yù)測值之間的差值總是最小。ADPCM編解碼器的輸入信號是G.711 PCM代碼,若采樣頻率為8 kHz,每個代碼為8位,則它的數(shù)據(jù)率為64 Kb/s,而ADPC M的輸出代碼是“自適應(yīng)量化器”的輸出,該輸出是4位的差分信號,它的采樣頻率仍是8 kHz,數(shù)據(jù)率為32 Kb/s,這樣就獲得了2:1的數(shù)據(jù)壓縮。
編碼過程:計算8位的二進制補碼的當(dāng)前采樣值Sc和上一預(yù)測采樣值Sp之間的差值d,該差值經(jīng)量化編碼輸出4位ADPCM代碼I。在算法中,定義一個結(jié)構(gòu)變量存儲預(yù)測采樣值Sp和量化步長q,并制定了兩個表:一個表為索引調(diào)整表,其輸入為差值量化編碼I,用于更新步長索引;另一個表為步長調(diào)整表,其輸入為步長索引,輸出為步長q。編碼時,首先用上一個采樣點的步長索引查步長調(diào)整表求出步長q,然后根據(jù)下式來確定4位ADPCM編碼值I:
再將編碼值I作為索引調(diào)整表的輸入,查表輸出索引調(diào)整,并和結(jié)構(gòu)變量中原步長索引相加,產(chǎn)生新的步長索引,在下一個采樣值的編碼中使用。編碼器輸出I后,還需要重復(fù)進行與解碼完全一樣的計算過程,求出新的預(yù)測采樣值Sp。
解碼過程:首先通過步長索引查步長調(diào)整表得到量化步長,差值量化編碼I經(jīng)逆量化得到語音差值d,這是求I的逆過程;然后與前次預(yù)測值Sp。一起重建當(dāng)前語音信號Sc;最后利用Sp=Sc,更新預(yù)測值Sp,用I更新量化步長索引。
評論