林麗君, 吳巧玲
(成都大學(xué) 機(jī)械工程學(xué)院, 四川 成都 610106)
MATLAB具有強(qiáng)大的數(shù)學(xué)計(jì)算和圖形繪制功能,在界面開發(fā)、數(shù)據(jù)輸入、網(wǎng)絡(luò)通信及硬件控制方面比較繁瑣,但在圖像信號(hào)處理領(lǐng)域具有卓越的優(yōu)勢(shì).LabVIEW作為標(biāo)準(zhǔn)的數(shù)據(jù)采集和儀器控制軟件,以其強(qiáng)大的數(shù)據(jù)采集、數(shù)據(jù)分析和儀器控制功能在現(xiàn)代測(cè)控領(lǐng)域中得到了廣泛的應(yīng)用,但在數(shù)值分析計(jì)算等方面效率低,由于功能簡單,不能滿足工程應(yīng)用的要求[1].本研究利用LabVIEW靈活的圖形編程和MATLAB數(shù)據(jù)處理功能[2],在LabVIEW環(huán)境中用聲卡采集語音信號(hào),采用MATLAB對(duì)語音信號(hào)進(jìn)行處理,實(shí)現(xiàn)二者優(yōu)勢(shì)互補(bǔ),提高了編程效率和數(shù)據(jù)處理能力.
本設(shè)計(jì)采用在LabVIEW虛擬儀器環(huán)境中利用Windows自帶聲卡采集語音信號(hào),使用LabVIEW這種圖形化編輯語言(G語言)搭建語音信號(hào)采集系統(tǒng).整體結(jié)構(gòu)方案[3]如圖1所示.
圖1語音采集系統(tǒng)設(shè)計(jì)方案
本設(shè)計(jì)通過LabVIEW軟件搭建出采用計(jì)算機(jī)自帶的聲卡作為采集設(shè)備進(jìn)行語音信號(hào)采集的系統(tǒng),錄制一段文字或其他語音信號(hào),并顯示語音信號(hào)采集和播放的波形,使用MATLAB軟件對(duì)采集到的語音信號(hào)進(jìn)行頻譜分析、添加噪聲和消噪處理.
PC聲卡是一種音頻范圍內(nèi)的數(shù)據(jù)采集卡,同時(shí)具有A/D和D/A轉(zhuǎn)換功能,成本低,兼容性好,性能穩(wěn)定.語音音頻范圍一般在3 400 Hz以內(nèi),聲卡可測(cè)音頻范圍為20 Hz~20 kHz,滿足需求.在采集語音信號(hào)前,本研究確保已配置的錄音功能不處于靜音狀態(tài).
本設(shè)計(jì)使用帶麥克風(fēng)的耳機(jī),通過耳機(jī)的麥克風(fēng),錄入一段話,如“語音信號(hào)的分析與處理",并使這段信號(hào)經(jīng)過聲卡放大轉(zhuǎn)換為數(shù)字信號(hào),然后通過LabVIEW軟件搭建采集系統(tǒng),利用聲音相關(guān)VI實(shí)現(xiàn)語音信號(hào)的采集、存儲(chǔ)及播放.
LabVIEW中的各類聲音VI如圖2~圖5所示.
圖2聲音相關(guān)VI庫
圖3聲音輸入VI庫
圖4聲音輸出VI庫
圖5聲音文件VI庫
LabVIEW編程過程如下:
1)程序框圖編輯.新建聲音收集系統(tǒng)文件(*.vi),在事件結(jié)構(gòu)中搭建錄音和播放程序.本研究使用采集系統(tǒng)對(duì)語音信號(hào)進(jìn)行錄音時(shí),將采樣頻率設(shè)置為8 kHz,將采樣位數(shù)設(shè)置為16 bit,將采樣方式設(shè)置為為雙聲道,使波形穩(wěn)定且干擾較小.
2)采集程序編寫.首先添加一個(gè)while循環(huán)結(jié)構(gòu),并在while結(jié)構(gòu)中創(chuàng)建事件結(jié)構(gòu)程序,編輯事件結(jié)構(gòu)的一個(gè)分支處理事件為“錄音按鈕,值改變".在事件結(jié)構(gòu)程序中創(chuàng)建文件對(duì)話框VI,將文件類型設(shè)置為“wav".在while循環(huán)結(jié)構(gòu)外創(chuàng)建聲音輸入清零VI,并與讀取聲音輸入VI相連,最后創(chuàng)建關(guān)閉聲音文件VI,將聲音文件關(guān)閉.
3)播放程序編寫.添加一個(gè)事件分支,處理的事件為“播放按鈕,值改變",然后在事件結(jié)構(gòu)中創(chuàng)建聲音文件信息VI,創(chuàng)建路徑為輸入控件并在前面板選擇播放聲音的路徑,接著創(chuàng)建聲音輸出清零VI,并與聲音輸出等待VI連接,最后創(chuàng)建關(guān)閉聲音文件VI關(guān)閉聲音文件.
根據(jù)設(shè)計(jì)需要選擇聲音相關(guān)VI搭建的可視化程序如圖6和圖7所示,前面板經(jīng)過整理后如圖8所示.
圖6錄音程序
圖7播放程序
圖8前面板狀態(tài)
語音信號(hào)為一種包含各種有效信息的非平穩(wěn)時(shí)變信號(hào),因?yàn)橹苯硬杉@得的語音信號(hào)包含較多噪聲,若不進(jìn)行消噪預(yù)處理,則會(huì)直接影響后續(xù)語音處理的準(zhǔn)確性[4-5].本研究利用最小均方自適應(yīng)濾波器[6-7]對(duì)LabVIEW采集的語音信號(hào)進(jìn)行消噪處理.
最小均方濾波器是一種梯度搜索算法的簡單實(shí)現(xiàn),用瞬時(shí)平方誤差的梯度代替均方誤差的梯度[8-9],其自適應(yīng)算法可定義為,
(1)
式中,e(m)是自適應(yīng)濾波器輸出與期望信號(hào)之間的誤差信號(hào),如式(2)所示.
e(m)=x(m)-wT(m)y(m)
(2)
平方誤差的順勢(shì)梯度還可表示為,
=-2y(m)[x(m)-wT(m)y(m)]
=-2y(m)e(m)
(3)
將式(3)代入式(1)中得到最小均方自適應(yīng)濾波器的自適應(yīng)方程為,
w(m+1)=w(m)+μ[y(m)e(m)]
(4)
從式(4)可以看出,該方程簡單,易于實(shí)現(xiàn).
本研究的仿真條件為:自適應(yīng)濾波器階數(shù)為8,輸入信號(hào)是LabVIEW采集的一段語音“語音信號(hào)的分析與處理".選用的3種噪聲分別是周期噪聲、脈沖噪聲和寬帶噪聲[10-11],具體為:周期噪聲采用的是正弦信號(hào)含周期性噪聲的語音信號(hào),其經(jīng)最小均方濾波器消噪后的時(shí)域圖和頻域圖如圖9和圖10所示;脈沖噪聲選用的是行列數(shù)相同的零向量中特定的位置取為1而形成的一個(gè)脈沖信號(hào),含脈沖噪聲的語音信號(hào)經(jīng)最小均方濾波器消噪后的時(shí)域圖和頻域圖如圖11和圖12所示;寬帶噪聲選用的是信號(hào)為(n*1)的高斯寬帶矩陣(0.1*wgn(n,1,1)),含寬帶噪聲的語音信號(hào)經(jīng)最小均方濾波器消噪后的時(shí)域圖和頻域圖如圖13和圖14所示.
圖9 最小均方濾波器去周期噪聲時(shí)域圖
圖10最小均方濾波器去周期噪聲頻域圖
圖11最小均方濾波器去脈沖噪聲時(shí)域圖
圖12最小均方濾波器去脈沖噪聲頻域圖
從圖9~圖14可以看出,周期噪聲對(duì)原始信號(hào)的干擾最大,基本淹沒了原始信號(hào),而寬帶噪聲干擾最小,最小均方濾波器去除周期噪聲效果最好.
本研究利用LabVIEW平臺(tái)結(jié)合MATLAB數(shù)據(jù)處理功能,基于電腦自帶集成聲卡,應(yīng)用LabVIEW操作聲卡錄制一段語音, 采用最小均方自適應(yīng)濾波器對(duì)語音信號(hào)進(jìn)行了時(shí)域分析和頻域分析,且語音樣本采集操作簡單易學(xué),能方便后續(xù)的功能擴(kuò)展.
圖13最小均方濾波器去寬帶噪聲時(shí)域圖
圖14最小均方濾波器去寬帶噪聲頻域圖