基于ADPCM算法的汽車智能語音報警系統(tǒng)的設計
ADPCM是一種利用樣本間的高度相關性和量化階自適應壓縮數據的波形編碼技術。ADPCM綜合了APCM的自適應特性和DPCM的差分特性。它的核心思想是利用自適應改變量化階的大小,即就是使用小的量化階編碼小的差值,使用大的量化階來編碼大的差值;使用過去的樣本值估算下一個輸入樣本的預測值,實際樣本值和預測值之間的差值總是最小。ADPCM編解碼器的輸入信號是G.711 PCM代碼,若采樣頻率為8 kHz,每個代碼為8位,則它的數據率為64 Kb/s,而ADPC M的輸出代碼是“自適應量化器”的輸出,該輸出是4位的差分信號,它的采樣頻率仍是8 kHz,數據率為32 Kb/s,這樣就獲得了2:1的數據壓縮。
本文引用地址:http://butianyuan.cn/article/85061.htm編碼過程:計算8位的二進制補碼的當前采樣值Sc和上一預測采樣值Sp之間的差值d,該差值經量化編碼輸出4位ADPCM代碼I。在算法中,定義一個結構變量存儲預測采樣值Sp和量化步長q,并制定了兩個表:一個表為索引調整表,其輸入為差值量化編碼I,用于更新步長索引;另一個表為步長調整表,其輸入為步長索引,輸出為步長q。編碼時,首先用上一個采樣點的步長索引查步長調整表求出步長q,然后根據下式來確定4位ADPCM編碼值I:
再將編碼值I作為索引調整表的輸入,查表輸出索引調整,并和結構變量中原步長索引相加,產生新的步長索引,在下一個采樣值的編碼中使用。編碼器輸出I后,還需要重復進行與解碼完全一樣的計算過程,求出新的預測采樣值Sp。
解碼過程:首先通過步長索引查步長調整表得到量化步長,差值量化編碼I經逆量化得到語音差值d,這是求I的逆過程;然后與前次預測值Sp。一起重建當前語音信號Sc;最后利用Sp=Sc,更新預測值Sp,用I更新量化步長索引。
設計完成后,對ADPCM編解碼器進行仿真,仿真結果如圖6所示。AD_DataBus為編碼前輸入信號,采用Testbench產生。在編碼使能信號P1_7為“0”時,開始編碼,P1_7跳變到“1”時,編碼被屏蔽。此時解碼使能信號P1_4為“0”,開始解碼,P1_4跳變到“1”時,解碼被屏蔽??梢钥闯鼍幋a前輸入信號AD_DataBus和解碼器輸出DA_DataBus基本符合要求。由于ADPCM算法本身是有損壓縮,可以確定本部分的設計是正確可靠的。
4.2 單片機部分
單片機是整個系統(tǒng)的控制中心.負責檢測危險并判斷其類型以選擇播放相應的報警信息。其工作流程如圖7所示。本文給出了采用3個按鍵代表3種危險的發(fā)生,供單片機檢測。
選擇常用的51系列單片機AT89C52,用C51語言編程可完成程序設計,實驗效果理想。
5 結束語
本系統(tǒng)設計是單片機與FPGA配合使用,充分發(fā)揮各自的優(yōu)點。獲得理想效果,具有很強的實用性,同時還證明了采用可編程邏輯器件實現語音數字壓縮處理的高效性。實驗證明,本系統(tǒng)可以很好地再現錄入的報警語音,具有較高的保真度。駕駛員可以根據自己的喜好隨意改變報警聲音。危急情況下,本系統(tǒng)會自動發(fā)出明確的報警提示,大大提高了駕駛的安全性。
評論