劉鑫+金暄宏
摘 要:針對(duì)LabVIEW的語(yǔ)音信號(hào)分析,為了體現(xiàn)LabVIEW的簡(jiǎn)潔性與可靠性,分別通過(guò)聲卡和LabVIEW自帶的程序包對(duì)聲音進(jìn)行信號(hào)采集與聲音信息保存,并利用LabVIEW自身強(qiáng)大的信號(hào)處理能力進(jìn)行信號(hào)分析處理,對(duì)語(yǔ)音信號(hào)進(jìn)行端點(diǎn)檢測(cè)、濾波、加窗等預(yù)處理。研究結(jié)果表明,通過(guò)與理論數(shù)值的對(duì)比,可以得到與預(yù)期一致的實(shí)驗(yàn)結(jié)果,并能夠通過(guò)更加簡(jiǎn)單易懂的程序完成該功能,從而充分體現(xiàn)了G語(yǔ)言的簡(jiǎn)潔性、可靠性。
關(guān)鍵詞:LabVIEW;聲卡;信號(hào)采集;聲音保存;信號(hào)分析;G語(yǔ)言
DOIDOI:10.11907/rjdk.171328
中圖分類號(hào):TP319
文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào)文章編號(hào):1672-7800(2017)008-0135-03
0 引言
語(yǔ)音信號(hào)的處理與人工智能、計(jì)算機(jī)科學(xué)、信號(hào)處理學(xué)等領(lǐng)域關(guān)系越來(lái)越密切。語(yǔ)音信號(hào)采集與分析更是智能機(jī)器人發(fā)展的重要推動(dòng)力量。但是現(xiàn)在市場(chǎng)上的語(yǔ)音分析系統(tǒng)價(jià)格昂貴、操作復(fù)雜,且僅能用于特定的方面,因此有關(guān)實(shí)驗(yàn)教學(xué)都是利用Matlab進(jìn)行語(yǔ)音及其相關(guān)信號(hào)的處理[1]。但是Matlab卻有學(xué)習(xí)慢、程序直觀性不夠等缺點(diǎn),在進(jìn)行語(yǔ)音信號(hào)處理時(shí)往往比較慢、比較難。
LabVIEW作為一種強(qiáng)大的信號(hào)處理軟件,其基礎(chǔ)語(yǔ)言G語(yǔ)言作為圖形化語(yǔ)言,不僅可以代替?zhèn)鹘y(tǒng)的測(cè)量?jī)x器,還擁有應(yīng)用方案靈活、性能提高快、綜合成本更低等優(yōu)點(diǎn)[2]。不論是工程實(shí)踐還是學(xué)校教學(xué),它都是一個(gè)很不錯(cuò)的工具軟件,也越來(lái)越多地在工業(yè)領(lǐng)域、教育領(lǐng)域得到推廣。
1 系統(tǒng)設(shè)計(jì)
1.1 LabVIEW簡(jiǎn)介
LabVIEW是一種程序開發(fā)環(huán)境,由美國(guó)國(guó)家儀器(National Instruments,NI)公司研制開發(fā),是目前國(guó)際上唯一的編譯型圖形化編程語(yǔ)言[3]。LabVIEW類似于C和BASIC開發(fā)環(huán)境,但是與其它計(jì)算機(jī)語(yǔ)言有著明顯的差別。其它計(jì)算機(jī)語(yǔ)言都是采用基于文本的語(yǔ)言產(chǎn)生代碼,而LabVIEW使用的是圖形化編輯語(yǔ)言G編寫程序,產(chǎn)生的程序是框圖的形式。 不僅使編程變得簡(jiǎn)單,而且生動(dòng)有趣,有助于語(yǔ)言學(xué)習(xí)。
1.2 信號(hào)采集過(guò)程
聲卡(Sound Card)也叫音頻卡,是多媒體技術(shù)中最基本的組成部分,是實(shí)現(xiàn)聲波/數(shù)字信號(hào)相互轉(zhuǎn)換的一種硬件。聲卡的基本功能是把來(lái)自話筒、磁帶、光盤的原始聲音信號(hào)加以轉(zhuǎn)換,輸出到耳機(jī)、揚(yáng)聲器、擴(kuò)音機(jī)、錄音機(jī)等聲響設(shè)備,或通過(guò)音樂(lè)設(shè)備數(shù)字接口(MIDI)使樂(lè)器發(fā)出聲音。電腦聲卡的工作原理很簡(jiǎn)單,麥克風(fēng)和喇叭所用的都是模擬信號(hào),而電腦所能處理的都是數(shù)字信號(hào),聲卡的作用就是實(shí)現(xiàn)兩者的轉(zhuǎn)換。從結(jié)構(gòu)上分,聲卡可分為模數(shù)轉(zhuǎn)換電路和數(shù)模轉(zhuǎn)換電路兩部分:模數(shù)轉(zhuǎn)換電路負(fù)責(zé)將麥克風(fēng)等聲音輸入設(shè)備采集到的模擬聲音信號(hào)轉(zhuǎn)換為電腦能處理的數(shù)字信號(hào),而數(shù)模轉(zhuǎn)換電路負(fù)責(zé)將電腦使用的數(shù)字聲音信號(hào)轉(zhuǎn)換為喇叭等設(shè)備能使用的模擬信號(hào)[4]。
LabVIEW中提供了強(qiáng)大的數(shù)據(jù)采集程序包,可以很簡(jiǎn)單地通過(guò)程序包對(duì)聲卡進(jìn)行調(diào)用。例如使用Acquire Sound獲取相關(guān)聲音信息,只需要設(shè)置相關(guān)參數(shù)就可以獲得所需要的語(yǔ)音信息。
由于聲卡直接對(duì)收集的聲音信號(hào)進(jìn)行模數(shù)轉(zhuǎn)換,因此聲卡所得到的信息直接為數(shù)字量而非模擬量,不需要再次進(jìn)行模數(shù)轉(zhuǎn)換。根據(jù)對(duì)信號(hào)采集和保存的相關(guān)要求,程序后面板設(shè)計(jì)如圖1所示。
對(duì)聲音進(jìn)行采集時(shí)主要的參數(shù)為錄音時(shí)間、采樣位數(shù)、采樣頻率和聲卡通道。在LabVIEW的Acquire Sound程序包中都涵蓋了相關(guān)參數(shù)的設(shè)置。雙擊該函數(shù)即可看見設(shè)置面板,為了方便修改相關(guān)信息,也可外接。
1.3 語(yǔ)音信號(hào)分析處理
對(duì)語(yǔ)音信號(hào)進(jìn)行采集保存后,便可對(duì)存儲(chǔ)的信號(hào)進(jìn)行讀取進(jìn)而進(jìn)行處理分析。由于語(yǔ)音信號(hào)攜帶著大量的信息,而語(yǔ)音分析的目的就是對(duì)這些信息進(jìn)行處理分析,因此需要對(duì)語(yǔ)音信息進(jìn)行不同的變換。語(yǔ)音信息分析可分為時(shí)域和變換域等處理方法[5]。而利用傅里葉變換對(duì)信號(hào)進(jìn)行處理,進(jìn)而得到其頻域信息是研究語(yǔ)音信號(hào)特征的重要方法之一。傅立葉變換是數(shù)字信號(hào)處理領(lǐng)域一種很重要的算法。傅立葉原理表明:任何連續(xù)測(cè)量的時(shí)序或信號(hào),都可以表示為不同頻率的正弦波信號(hào)的無(wú)限疊加。而根據(jù)該原理創(chuàng)立的傅立葉變換算法利用直接測(cè)量到的原始信號(hào),以累加方式來(lái)計(jì)算該信號(hào)中不同正弦波信號(hào)的頻率、振幅和相位。
和傅立葉變換算法對(duì)應(yīng)的是反傅立葉變換算法。該反變換從本質(zhì)上說(shuō)也是一種累加處理,這樣就可以將單獨(dú)改變的正弦波信號(hào)轉(zhuǎn)換成一個(gè)信號(hào)。因此,可以說(shuō),傅立葉變換將原來(lái)難以處理的時(shí)域信號(hào)轉(zhuǎn)換成了易于分析的頻域信號(hào)(信號(hào)的頻譜),可以利用一些工具對(duì)這些頻域信號(hào)進(jìn)行處理、加工,最后還可以利用傅立葉反變換將這些頻域信號(hào)轉(zhuǎn)換成時(shí)域信號(hào)[6]。傅里葉變換如下:
F(ω)=F[f(t)]=∫∞-∞f(t)e-jωt dt(1)
其逆變換如下所示:
f(t)=F-1[F(ω)]=12π∫∞-∞F(ω) ejωtdω(2)
在LabVIEW中可利用已有的工程包簡(jiǎn)單方便地對(duì)信號(hào)進(jìn)行快速傅里葉變換,并針對(duì)不同的傅里葉變換信息進(jìn)行分類處理。由于錄音時(shí)無(wú)法完全錄入所需信息,其中必然會(huì)夾雜一些非有效信息,需要將這些無(wú)效的雜音或者并未發(fā)聲的信息進(jìn)行濾除,因而需要進(jìn)行端點(diǎn)檢測(cè),探查出語(yǔ)音信號(hào)是從何處開始又在何處結(jié)束的。由于LabVIEW內(nèi)部是擁有Matlab節(jié)點(diǎn)的,所以可以使用Matlab進(jìn)行聯(lián)合編程。后面板如圖2所示。雖然使用了Matlab,但是這樣處理仍然比單獨(dú)使用Matlab編程快得多。
在進(jìn)行時(shí)域分析時(shí),要對(duì)信號(hào)進(jìn)行預(yù)加重,主要是加窗,并對(duì)高頻部分進(jìn)行加重,進(jìn)而加強(qiáng)其高頻部分的分辨率。其結(jié)果是高頻部分的幅值得到提升,頻譜變得平坦。
在加強(qiáng)高頻部分時(shí),傳遞函數(shù)為:endprint
H(z)=1-a·z-1(3)