劉鑫+金暄宏



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