基于A(yíng)DPCM算法的汽車(chē)智能語(yǔ)音報警系統
為了防止汽車(chē)發(fā)生交通事故,當汽車(chē)智能檢測裝置探測到前方有危險時(shí),必須向駕駛員發(fā)出警告信息。語(yǔ)音報警向駕駛員明確提示危險,以便駕駛員能及時(shí)準確地采取措施。因此,本文提出數字語(yǔ)音處理技術(shù),先將各種狀況的報警信息進(jìn)行數字化采集、存儲,遇到危險時(shí),將判斷危險類(lèi)型并自動(dòng)選擇播放存儲的報警信息。由于語(yǔ)音信息量大,直接存儲需占用龐大的存儲空間,為此,本文采用FPGA實(shí)現ADPCM(Adaptive Differential Pulse CodeModulation,自適應差分脈沖編碼調制)編解碼器設計,對語(yǔ)音信息進(jìn)行壓縮存儲.從而使存儲信息量增大了一倍。
2 系統結構及原理
本系統設計是以單片機和FPGA為核心。單片機控制系統的工作狀態(tài)、啟動(dòng)錄放音并對錄放音時(shí)間進(jìn)行計時(shí)、顯示。FPGA對采集到的數據進(jìn)行壓縮、存儲、解壓。單片機與FPGA協(xié)調工作,提高了系統的工作效率和穩定性。系統結構如圖1所示。
首先,將所希望采集的各種報警聲音經(jīng)前向通道(話(huà)筒、差分放大器、濾波器、加法器)再由A/D轉換器轉換為數字信號并送人FPGA進(jìn)行ADPCM壓縮編碼處理,然后存儲到靜態(tài)存儲器SRAM中。遇到危險時(shí),單片機對危險進(jìn)行判斷,控制FPGA將相應的語(yǔ)音數據從SRAM中取出并進(jìn)行解碼,然后送至8 位的D/A轉換器,轉換為模擬信號,再經(jīng)后向通道(濾波器、校正電路、功率放大器、揚聲器)復現報警聲音。
3 系統主要硬件設計
3.1 前置放大器
采用駐極體話(huà)筒采集語(yǔ)音信號,轉換其信號幅值為毫伏級的電信號,系統前級對其處理時(shí),要盡可能提高放大器輸入端的信噪比,保證放大電路具有精確、穩定的增益。為此,本文設計了如圖2所示的檢測放大電路。該電路前級采用電壓跟隨器,利用輸入電阻為無(wú)窮大而輸出趨于零的特性,提供高輸入電阻,實(shí)現阻抗變換與隔離;后級采用差動(dòng)放大器,獲得較高的共模抑制比,增強電路抗干擾性。
電壓跟隨器由性能優(yōu)良的低噪聲音頻放大器NE5532構成,工作電壓為12 V,工作帶寬為10 MHz,特別適用于語(yǔ)音信息處理。差動(dòng)放大器采用AD620實(shí)現。AD620內部實(shí)際上是一個(gè)差分放大器,其失調電壓電流小,共模抑制比高,因此處理微弱信號時(shí),也就是放大和消除噪聲方面具有優(yōu)異性能,其增益G=1+(49.4 kΩ/Rg)(Rg為接在1、8引腳之間的電阻)。調節電位器R1,使放大的信號幅值介于-2.5 V和2.5 V之間,便于A(yíng)/D轉換器采樣量化。
3.2 帶通濾波器
語(yǔ)音信號經(jīng)放大傳輸后容易拾取噪聲,因此在數據采集之前,需要通過(guò)帶通濾波器濾除掉帶外雜波。人的語(yǔ)音頻率范圍為300 Hz~3.4 kHz,故濾波器的通帶范圍應為300 Hz~3.4kHz。如此寬的頻帶,必須采用低通部分與高通部分相級聯(lián)的方式實(shí)現。
高通濾波器設計指標:通帶截止頻率fp=300Hz,通帶允許最大衰減αp≤3 dB;為消除工頻干擾,確定阻帶截止頻率fs=50 Hz,阻帶允許最小衰減as>40 dB。選用兩級二階Butterworth高通濾波器相級聯(lián)構成.仿真結果如圖3所示。
低通濾波器的設計指標為:通帶截止頻率fp=3 400 Hz,通帶允許最大衰減αp≤3 dB;為抑制采樣混疊失真,確定阻帶截止頻率fs=4 000 Hz,阻帶允許最小衰減as≥40 dB。由于橢圓濾波器可以獲得較其他濾波器窄的過(guò)渡帶寬,故適用該系統設計。利用濾波器輔助設計軟件Filter Wiz Pro獲得五階橢圓低通濾波器電路如圖4、仿真結果如圖5所示。
級聯(lián)高通和低通濾波器,即可得到300 Hz~3.4 kHz帶通濾波器,實(shí)驗表明,該濾波器效果良好,達到設計指標。后向通道的帶通濾波器的設計與此相同。
4 系統軟件的設計
4.1 FPGA部分
選用Altera公司的Cyclone系列的EPlC6Q-240C8實(shí)現ADPCM編碼器和解碼器。該器件含有120 000典型門(mén)資源、5 980個(gè)邏輯單元、6個(gè)RAM模塊、92 160 Bit RAM或ROM、2個(gè)數字PLL、185個(gè)可編程I/O口,最高工作時(shí)鐘可達300 MHz以上,并通過(guò)JTAG接口實(shí)現在系統配置。
ADPCM是一種利用樣本間的高度相關(guān)性和量化階自適應壓縮數據的波形編碼技術(shù)。ADPCM綜合了APCM的自適應特性和DPCM的差分特性。它的核心思想是利用自適應改變量化階的大小,即就是使用小的量化階編碼小的差值,使用大的量化階來(lái)編碼大的差值;使用過(guò)去的樣本值估算下一個(gè)輸入樣本的預測值,實(shí)際樣本值和預測值之間的差值總是最小。ADPCM編解碼器的輸入信號是G.711 PCM代碼,若采樣頻率為8 kHz,每個(gè)代碼為8位,則它的數據率為64 Kb/s,而ADPC M的輸出代碼是“自適應量化器”的輸出,該輸出是4位的差分信號,它的采樣頻率仍是8 kHz,數據率為32 Kb/s,這樣就獲得了2:1的數據壓縮。
編碼過(guò)程:計算8位的二進(jìn)制補碼的當前采樣值Sc和上一預測采樣值Sp之間的差值d,該差值經(jīng)量化編碼輸出4位ADPCM代碼I。在算法中,定義一個(gè)結構變量存儲預測采樣值Sp和量化步長(cháng)q,并制定了兩個(gè)表:一個(gè)表為索引調整表,其輸入為差值量化編碼I,用于更新步長(cháng)索引;另一個(gè)表為步長(cháng)調整表,其輸入為步長(cháng)索引,輸出為步長(cháng)q。編碼時(shí),首先用上一個(gè)采樣點(diǎn)的步長(cháng)索引查步長(cháng)調整表求出步長(cháng)q,然后根據下式來(lái)確定4位ADPCM編碼值I:
再將編碼值I作為索引調整表的輸入,查表輸出索引調整,并和結構變量中原步長(cháng)索引相加,產(chǎn)生新的步長(cháng)索引,在下一個(gè)采樣值的編碼中使用。編碼器輸出I后,還需要重復進(jìn)行與解碼完全一樣的計算過(guò)程,求出新的預測采樣值Sp。
解碼過(guò)程:首先通過(guò)步長(cháng)索引查步長(cháng)調整表得到量化步長(cháng),差值量化編碼I經(jīng)逆量化得到語(yǔ)音差值d,這是求I的逆過(guò)程;然后與前次預測值Sp。一起重建當前語(yǔ)音信號Sc;最后利用Sp=Sc,更新預測值Sp,用I更新量化步長(cháng)索引。
設計完成后,對ADPCM編解碼器進(jìn)行仿真,仿真結果如圖6所示。AD_DataBus為編碼前輸入信號,采用Testbench產(chǎn)生。在編碼使能信號P1_7為“0”時(shí),開(kāi)始編碼,P1_7跳變到“1”時(shí),編碼被屏蔽。此時(shí)解碼使能信號P1_4為“0”,開(kāi)始解碼,P1_4跳變到“1”時(shí),解碼被屏蔽??梢钥闯鼍幋a前輸入信號AD_DataBus和解碼器輸出DA_DataBus基本符合要求。由于A(yíng)DPCM算法本身是有損壓縮,可以確定本部分的設計是正確可靠的。
4.2 單片機部分
單片機是整個(gè)系統的控制中心.負責檢測危險并判斷其類(lèi)型以選擇播放相應的報警信息。其工作流程如圖7所示。本文給出了采用3個(gè)按鍵代表3種危險的發(fā)生,供單片機檢測。
選擇常用的51系列單片機AT89C52,用C51語(yǔ)言編程可完成程序設計,實(shí)驗效果理想。
5 結束語(yǔ)
本系統設計是單片機與FPGA配合使用,充分發(fā)揮各自的優(yōu)點(diǎn)。獲得理想效果,具有很強的實(shí)用性,同時(shí)還證明了采用可編程邏輯器件實(shí)現語(yǔ)音數字壓縮處理的高效性。實(shí)驗證明,本系統可以很好地再現錄入的報警語(yǔ)音,具有較高的保真度。駕駛員可以根據自己的喜好隨意改變報警聲音。危急情況下,本系統會(huì )自動(dòng)發(fā)出明確的報警提示,大大提高了駕駛的安全性。
評論