0 引言
由單片機(jī)與FPGA共同完成語(yǔ)音的錄制與回放,可以擁有豐富的接口資源和運(yùn)算能力,鑒于PCM 的存儲(chǔ)冗余值過(guò)大和DPCM 的量化噪聲問(wèn)題,ADPCM 成為了不錯(cuò)的壓縮算法。同時(shí)為了擁有較高的共模抑制比、低失真、高功率和高輸入阻抗,本文采用儀表放大器、立體聲功率放大和控制芯片,結(jié)合ADPCM編碼,設(shè)計(jì)并實(shí)現(xiàn)了具有采集速度快、存儲(chǔ)時(shí)間長(zhǎng)、語(yǔ)音回放質(zhì)量良好的數(shù)字語(yǔ)音存儲(chǔ)與回放系統(tǒng)。
1 系統(tǒng)設(shè)計(jì)框圖
系統(tǒng)主要包括采集、處理與語(yǔ)音回放模塊叁個(gè)部分。對(duì)于采集模塊,一般由麥克風(fēng)或者耳機(jī)輸入的語(yǔ)音通過(guò)前置放大和低通濾波等預(yù)處理之后,完成A/D 轉(zhuǎn)化。對(duì)于語(yǔ)音處理模塊來(lái)說(shuō),進(jìn)行ADPCM 的編碼以及FFT運(yùn)算,可將數(shù)字化的語(yǔ)音存儲(chǔ)于外部介質(zhì)。對(duì)于回放模塊來(lái)說(shuō),可提取存儲(chǔ)的語(yǔ)音內(nèi)容,并且通過(guò)解碼、D/A轉(zhuǎn)換,最后驅(qū)動(dòng)揚(yáng)聲器來(lái)完成回放功能。系統(tǒng)整體框圖如圖1所示。
其中的立體聲ADC和立體聲DAC組成部分都集成在芯片PCM3010 內(nèi)部。通過(guò)立體聲音量控制芯片PGA3010實(shí)現(xiàn)立體聲音量的調(diào)節(jié),最后由功率放大器驅(qū)動(dòng)揚(yáng)聲器完成語(yǔ)音播放功能。同時(shí),通過(guò)在FPGA內(nèi)部對(duì)采樣數(shù)據(jù)進(jìn)行短時(shí)傅里葉變換,可在示波器上實(shí)時(shí)顯示語(yǔ)音信號(hào)的頻譜。
2 理論分析計(jì)算
2.1 ADPCM編碼的理論分析
ADPCM 的塬理是對(duì)相鄰兩采樣值的差值進(jìn)行編碼,利用自適應(yīng)的思想改變量化階的大小。ADPCM 編碼法結(jié)合了DCM 與ADM,其實(shí)是差分算法塬理的自適應(yīng)方向改進(jìn)。對(duì)于輸入的信號(hào)Si 與自適應(yīng)輸出值Sp 存在差值,根據(jù)自適應(yīng)量化步長(zhǎng)d 對(duì)此差值進(jìn)行量化,輸出ADPCM 四位量化碼I.對(duì)于量化碼I 又重新計(jì)算量化步長(zhǎng)d 。其塬理圖如圖2所示。
另外一方面對(duì)于量化碼I,又要送入反量化器,根據(jù)計(jì)算的步長(zhǎng)d 進(jìn)行差別斷定,生成新的解碼值,進(jìn)行下一輪的語(yǔ)音編碼。其塬理圖如圖3所示。
通過(guò)ADPCM的編碼,可以達(dá)到1/6的壓縮比率。也就是說(shuō),對(duì)于24 b的采樣數(shù)據(jù),4 b的存儲(chǔ)率即可達(dá)成要求,可以大大延長(zhǎng)存儲(chǔ)的時(shí)間。當(dāng)采樣速率為46 kHz時(shí),數(shù)據(jù)傳輸速率為184 Kb/s,由于外部存儲(chǔ)器BQ4015大小為512×8 Kb,故能夠存儲(chǔ)的最長(zhǎng)時(shí)間為22 s.當(dāng)采樣速率為8 kHz時(shí),能夠存儲(chǔ)的最長(zhǎng)時(shí)間為128 s.
2.2 信噪比計(jì)算
一般認(rèn)為,通話的語(yǔ)音頻率一般不超過(guò)3.4 kHz,所以低通濾波器選取3.4 kHz作為其截至頻率,同時(shí)保證A/D采樣頻率高于8 kHz,根據(jù)奈奎斯特定律,即可滿足語(yǔ)音量化不損失。對(duì)于耳機(jī)聲道聲音,其頻率范圍為20 Hz~20 kHz,所以對(duì)于上述的濾波器以及A/D 采樣頻率也能滿足其要求。根據(jù)如下信噪比(單位:dB)公式:
若假定語(yǔ)音信號(hào)服從拉普拉斯分布,則xmax = 4σx 。
所以可以計(jì)算出:
表明量化器中每個(gè)比特字長(zhǎng)對(duì)信噪比的貢獻(xiàn)大約為6 dB.選用24 b A/D 轉(zhuǎn)換器PCM3010,理論上可以達(dá)到137 dB的信噪比。
2.3 預(yù)加重處理
為了提升語(yǔ)音質(zhì)量,一般都會(huì)對(duì)采集的語(yǔ)音進(jìn)行預(yù)加重處理。使得信號(hào)的高頻部分進(jìn)行提升,同時(shí)信號(hào)更平坦。處理的時(shí)候一般在高頻段按照-6 dB/倍頻程跌落,在FPGA內(nèi)部實(shí)現(xiàn)具有6 dB/倍頻程提升高頻特性的預(yù)加重?cái)?shù)字濾波器。選取一階高通濾波器,其特性函數(shù)為:
式中u 值取為0.94~0.97.當(dāng)然,在信號(hào)處理之后,還需要通過(guò)去加重來(lái)還塬塬本的語(yǔ)音信號(hào)。
2.4 分幀加窗處理
為了能用傳統(tǒng)的方法對(duì)語(yǔ)音信號(hào)進(jìn)行分析處理,需要對(duì)本來(lái)是時(shí)變語(yǔ)音信號(hào)進(jìn)行加窗處理。假定語(yǔ)音信號(hào)在30 ms內(nèi)是平穩(wěn)的,則在30 ms范圍內(nèi)對(duì)于語(yǔ)音信號(hào)分割加窗。若采樣速率為46 kHz,每幀信號(hào)由512個(gè)點(diǎn)組成,則一幀的時(shí)間長(zhǎng)度為11.1 ms,滿足語(yǔ)音信號(hào)的短時(shí)平穩(wěn)特性。
不同的窗函數(shù)對(duì)于信號(hào)會(huì)有不同的處理結(jié)果,為了選取更優(yōu)的處理結(jié)果,于是對(duì)于矩形窗和漢明窗兩個(gè)最為典型的窗的特性進(jìn)行比較,結(jié)果如圖4,圖5所示。
由圖4,圖5可知,矩形窗有不錯(cuò)的平滑特性,但是在頻譜帶外會(huì)有一定的信號(hào)損失,會(huì)有泄漏現(xiàn)象。而漢明窗雖然平滑特性不好,但是其帶寬卻大于矩形窗,更適合語(yǔ)音信號(hào)處理。故在時(shí)域中對(duì)每幀信號(hào)添加漢明窗,再進(jìn)行傅里葉變換,能更真實(shí)地分析其頻譜信息。
顯示頻譜時(shí),由于示波器的分辨率有限,對(duì)512 點(diǎn)的頻譜信息,采取每間隔8個(gè)點(diǎn)抽取1個(gè)點(diǎn)的方式,即得到64 點(diǎn)的頻譜信息。由于顯示時(shí)只需顯示0~ fs 2(fs為采樣速率)頻率段的信息,故最后在示波器上清晰地顯示32個(gè)點(diǎn)的頻譜。
3 單元模塊電路設(shè)計(jì)
3.1 前級(jí)放大電路
一般來(lái)說(shuō),語(yǔ)音的輸入能量不大,為了完成A/D 操作,就需要對(duì)輸入的信號(hào)進(jìn)行放大。對(duì)于簡(jiǎn)單的電路放大設(shè)計(jì),選用最基本的AD620、INA129.對(duì)于調(diào)制電阻RG ,通過(guò)增益計(jì)算公式G = 49.4 kΩ/RG + 1 可以計(jì)算得到, RG 使用50 kΩ可調(diào)電位器來(lái)達(dá)到2.5 倍的增益放大,電路設(shè)計(jì)圖如圖6,圖7所示。
3.2 A/D及D/A設(shè)計(jì)電路
PCM3010 為24 b 立體聲音頻編碼器,其內(nèi)部包含Σ-Δ 型ADC和DAC.其中立體聲ADC輸入信號(hào)峰峰值為3 V,內(nèi)置抗混疊濾波器和高通濾波器,采樣速率為16~96 kHz可調(diào),立體聲DAC輸出信號(hào)峰峰值為3 V,內(nèi)置去加重濾波器,轉(zhuǎn)換速率為16~192 kHz可調(diào)。DAC輸出信號(hào)接后置低通濾波器,可實(shí)現(xiàn)較好的波形輸出。
該芯片將ADC、DAC集成一體,極大地簡(jiǎn)化了硬件電路規(guī)模,并且價(jià)格便宜,具有極高的性價(jià)比。這里在某些數(shù)據(jù)線與控制線上串接了一個(gè)小電阻,以降低信號(hào)上下邊沿的跳變速率。其電路圖如圖8所示。
3.3 音量控制及功放電路
音量調(diào)節(jié)選用高性能立體聲音頻音量控制芯片PGA2310實(shí)現(xiàn)。通過(guò)數(shù)字方法控制模擬音量,每聲道音量單獨(dú)可調(diào),并具有靜噪功能。它具有極寬的增益衰減范圍,-95.5~31.5 dB 以0.5 dB 步進(jìn)可調(diào),失真度僅為0.000 4%.其輸出兩路信號(hào)送入高效D 類(lèi)音頻功率放大器TPA2000D4,+5 V 供電驅(qū)動(dòng)4 Ω負(fù)載時(shí)功率可達(dá)2 W.其靜態(tài)功耗低,外接電路簡(jiǎn)單,無(wú)需外接LC輸出濾波器,即可直接驅(qū)動(dòng)揚(yáng)聲器。電路圖如圖9所示。
4 程序設(shè)計(jì)
系統(tǒng)軟件部分由單片機(jī)的 C51語(yǔ)言和FPGA的Ver-ilogHDL語(yǔ)言組成。其中,單片機(jī)主要完成用戶輸入輸出處理和系統(tǒng)的控制,F(xiàn)PGA主要完成需要嚴(yán)格時(shí)序控制(如數(shù)據(jù)采集、頻譜顯示)以及大規(guī)模數(shù)據(jù)計(jì)算(如FFT、ADPCM 編碼)等。整個(gè)系統(tǒng)的設(shè)計(jì)中模塊化思想貫穿始終,采用菜單鍵選擇所用功能,系統(tǒng)流程圖如圖10 所示。
5 方案測(cè)試與結(jié)果
5.1 測(cè)試儀器
測(cè)試儀器包括直流穩(wěn)壓穩(wěn)流電源,型號(hào)為SG1733SB3A;60M 數(shù)字存儲(chǔ)示波器,型號(hào)為TektronixTDS1002;秒表。
5.2 方案測(cè)試與結(jié)果
5.2.1 語(yǔ)音存儲(chǔ)與回放效果測(cè)試
?。?)一名組員面對(duì)麥克風(fēng)以不同大小的聲音說(shuō)話,錄下一段語(yǔ)音,記錄回放語(yǔ)音的效果,結(jié)果見(jiàn)表1.
(2)由耳機(jī)輸入不同音量的立體聲音樂(lè),錄下一段語(yǔ)音,記錄回放語(yǔ)音的效果,結(jié)果見(jiàn)表2.
5.2.2 語(yǔ)音存儲(chǔ)時(shí)間測(cè)試
?。?)由耳機(jī)不間斷地輸入立體聲音樂(lè),啟用錄音模式,待系統(tǒng)顯示存儲(chǔ)器存滿后,回放語(yǔ)音,用秒表記錄語(yǔ)音回放最長(zhǎng)時(shí)間,結(jié)果見(jiàn)表3.
?。?)一名組員面對(duì)麥克風(fēng)不間斷地說(shuō)話,啟用錄音模式,待系統(tǒng)顯示存儲(chǔ)器存滿后,回放語(yǔ)音,用秒表記錄語(yǔ)音回放最長(zhǎng)時(shí)間,結(jié)果見(jiàn)表4.
5.2.3 語(yǔ)音頻譜分析及顯示測(cè)試
由耳機(jī)或麥克風(fēng)輸入一段語(yǔ)音信號(hào),由揚(yáng)聲器直接播放出來(lái),同時(shí)在示波器上實(shí)時(shí)顯示頻譜。測(cè)試結(jié)果為當(dāng)播放的聲音變化時(shí),可觀察到頻譜有相應(yīng)的明顯變化。
由于不能明確知道語(yǔ)音信號(hào)的實(shí)時(shí)頻率和幅度信息,故只對(duì)頻譜進(jìn)行了定性測(cè)試。
6總結(jié)
該系統(tǒng)設(shè)計(jì)方案實(shí)現(xiàn)了語(yǔ)音存儲(chǔ)及回放,最長(zhǎng)存儲(chǔ)時(shí)間達(dá)2 min,回放語(yǔ)音效果清晰良好,并能在示波器上實(shí)時(shí)顯示語(yǔ)音頻譜。采用ADPCM 編碼在保證回放音質(zhì)的情況下,極大地提高了存儲(chǔ)器的利用率,并通過(guò)對(duì)語(yǔ)音信號(hào)采用分幀加窗的方法實(shí)現(xiàn)了短時(shí)頻譜分析。
另外,系統(tǒng)采取了一系列抗干擾措施以減小噪聲,如數(shù)字地與模擬地分開(kāi)走線,在一點(diǎn)匯合;電源處采用一個(gè)10 μF和0.1 μF的電容并聯(lián)去耦;時(shí)鐘走線盡量短等。但系統(tǒng)在語(yǔ)音回放時(shí)仍存在一定的噪聲,尤其當(dāng)輸入語(yǔ)音音量較小時(shí),噪聲更為明顯,這是本方案需要完善的地方。
評(píng)論