羅海濤
(廣東外語外貿(mào)大學(xué)信息學(xué)院,廣東 廣州 510420)
含噪語音信號端點檢測
羅海濤
(廣東外語外貿(mào)大學(xué)信息學(xué)院,廣東 廣州 510420)
MATLAB是一個功能強大的數(shù)學(xué)軟件,可以進行數(shù)值運算、函數(shù)或信號處理、繪制圖形。處理含噪語音信號,通常需要首先消除噪聲,與語音信號相比,交通噪聲頻率較低。根據(jù)Daubechies方法,構(gòu)造小波,并據(jù)此導(dǎo)出小波包。再用小波包對含噪語音信號進行分解。該算法檢測語音端點,獲得良好效果。
MATLAB;語音信號處理;小波包;端點檢測
MATLAB是MATrix LABoratory的縮寫,可直譯為矩陣實驗室,是美國MathWorks公司出品的數(shù)學(xué)軟件,是一個用于數(shù)值計算、數(shù)據(jù)分析、數(shù)據(jù)可視化等的交互式環(huán)境。
正如其名稱(矩陣實驗室)所顯示的,MATLAB的基本數(shù)據(jù)單位是矩陣,包括向量,MATLAB可以進行矩陣和向量運算、繪制函數(shù)圖形和數(shù)據(jù)圖形、實現(xiàn)算法、創(chuàng)建用戶界面、連接運行其他編程語言的程序等。它的指令表達式與普通的數(shù)學(xué)和工程中常用的表達式很相似,因而很容易掌握和使用,比用C,F(xiàn)ORTRAN等語言編程解決同樣的問題簡捷得多,效率高得多。加之具有強大的數(shù)據(jù)處理、圖形繪制和圖像處理能力,其具體應(yīng)用領(lǐng)域包括工程計算、控制設(shè)計、數(shù)字信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計與分析等領(lǐng)域。
MATLAB的新版本中還增加了對C,F(xiàn)ORTRAN,C++,JAVA等語言的支持,可以直接調(diào)用,也可以將自己編寫的程序?qū)隡ATLAB函數(shù)庫中以便以后調(diào)用。此外,MATLAB針對許多專門的領(lǐng)域開發(fā)了功能強大的模塊集和工具箱,這些工具箱一般由特定領(lǐng)域?qū)I(yè)人員開發(fā)、編寫代碼,用戶可以直接使用而不需要自己編寫代碼。MATLAB還提供了完整的聯(lián)機查詢、幫助系統(tǒng),更加方便用戶使用。加之MATLAB提供了比較完備的調(diào)試系統(tǒng),代碼和程序可以逐條解釋執(zhí)行,也可以通過編譯來運行,調(diào)試工具能夠及時報告出現(xiàn)的錯誤,并且分析出錯原因。MATLAB環(huán)境下集成了語音信號處理工具箱,提供了大量的函數(shù)讀寫音頻文件,提高了處理效率,如果用C語言編程讀寫音頻文件,需要很多代碼并且多次調(diào)試[2]。
小波分析是近30多年來發(fā)展起來的新興學(xué)科,是傅立葉變換突破性的發(fā)展,為很多領(lǐng)域和工程應(yīng)用提供了全新的工具。其思想相當(dāng)于多采樣率的濾波器組,對一個函數(shù)或者信號進行濾波分解,得到兩部分分解結(jié)果,即低頻部分也叫離散逼近(approximation),和高頻部分,也叫離散細(xì)節(jié)(detail)。還可以根據(jù)需要,分別對這兩部分參數(shù)進行小波分解,得到4個部分參數(shù);分解過程可以一直進行下去,理論上可以分解無數(shù)次,最后得到一棵完整的二叉樹[1]。
根據(jù)Daubechies方法,可以構(gòu)造小波[3-4]。首先,我構(gòu)造了一個尺度濾波器,也稱為低通重構(gòu)濾波器。在頻域,該濾波器如式⑴所示:
上面兩個式子相等,因而它們的對應(yīng)系數(shù)也相等,所以:
根據(jù)式⑵,有:
而根據(jù)式⑴,有:
上面兩個式子相等,因而它們的對應(yīng)系數(shù)相等,所以:
最終我們可以得到系數(shù):h0=-0.129,h1=0.224,h3=0.837,h4=0.483。
對應(yīng)的尺度函數(shù)j(t)和小波函數(shù)y(t)如圖1所示。
圖1 尺度函數(shù)j(t)和小波函數(shù)y(t)
根據(jù)尺度函數(shù)j(t)和小波函數(shù)y(t),我們可以導(dǎo)出小波包。
本人在吵雜的公路邊錄制了中文語音“0”,“1”,……,“十”,“百”,“千”和“萬”,錄制為“.wav”音頻文件。這樣,語音信號就摻雜了交通噪聲,這些音頻信號都是44100Hz的采樣數(shù)字信號。圖2和圖3是其中的兩個音頻文件的波形圖。
圖2 語音“0”
圖3 語音“1”
本人用前面導(dǎo)出的小波包,把每個帶噪信號分解至第7級,圖4和圖5顯示語音“0”的兩個端節(jié)點參數(shù)。
圖4 節(jié)點(7,0)或者127
圖5 節(jié)點(7,1)或者128
圖4是語音信號的第7級離散逼近參數(shù)(approximation coefficients),經(jīng)過數(shù)次測試,可以得知,與正常語音信號相比,交通噪聲處于相對較低的頻率。
對于其他端節(jié)點參數(shù),可以壓縮其中的部分參數(shù),而保持其余部分不變。圖5所示,幅值較大的部分對應(yīng)語音信號,其余幅值較小的部分對應(yīng)噪聲。其他節(jié)點參數(shù)例如節(jié)點129、130等等,都是這種情況。為了消除噪聲,以圖5為例,把幅值小的部分參數(shù)置零,其余部分參數(shù)保持不變。這樣做是因為每個漢字發(fā)音只有一個音節(jié),在該音節(jié)時間段內(nèi),節(jié)點參數(shù)對應(yīng)的是語音和噪聲,當(dāng)然噪聲幅值相對較小。在該音節(jié)時間段之外,節(jié)點參數(shù)對應(yīng)的完全是噪聲。為了簡單起見,一個音節(jié)時間段內(nèi)的節(jié)點參數(shù)可以保持不變。
需確定語音信號的起始點和終止點。從圖5可以看出,對應(yīng)語音信號的參數(shù)數(shù)據(jù)幅值明顯比其余參數(shù)大很多,這是因為在這個頻率上,噪聲幅值比語音幅值小很多。其他端節(jié)點的情況類似于端節(jié)點127,即離散逼近端節(jié)點,所以,我們有以下的語音端點檢測算法:
a.設(shè)置一個閾值,例如0.5倍的節(jié)點參數(shù)絕對值的最大值,設(shè)置一個指示變量為0;
b.開始,取第1個參數(shù)數(shù)據(jù)x;
c.如果x的絕對值大于閾值,轉(zhuǎn)下一步,否則,轉(zhuǎn)步驟e;
d.如果指示變量等于0,設(shè)置語音起始點為x的序號,設(shè)置指示變量為1;否則設(shè)置語音結(jié)束點位x的序號;
e.取下一個參數(shù)數(shù)據(jù)x,轉(zhuǎn)步驟c,直至完成。
以上算法可以保證得到分別對應(yīng)于語音信號的起始點和終止點的,小波包分解后的參數(shù)數(shù)據(jù)的對應(yīng)序號,再由此可以倒查出原始帶噪語音信號的起始端點和結(jié)束端點。
傳統(tǒng)的去噪過程中,噪聲頻率比語音信號頻率高很多,但是交通噪聲能量主要集中在比語音信號頻率低的部分。這種情況下,常用的消除噪聲方法并不適用,很難直接進行語音端點檢測。本文嘗試用小波對含噪語音信號進行分解,從上述結(jié)果可以看出,分解后更加容易檢測語音信號的起始端點和結(jié)束端點,得到的結(jié)果更加準(zhǔn)確。
小波分析方法在信號處理中有著廣闊的應(yīng)用前景,尤其在消除噪聲、信號的奇異點檢測方面,有很成功的應(yīng)用。例如,Donoho[5]提出了一個正式的“去噪”解釋,并且展示小波變換如何用來“去噪”。他進一步證明“去噪”信號在大范圍的情況下都成功,而以往非小波方法只能部分地成功。所以下一步可以結(jié)合含噪信號奇異點信息,進行深入的研究,更加精確的實現(xiàn)端點檢測、消除噪聲、獲取語音特征參數(shù)等。
[1]Luo,Haitao,Local Thresholding de-noise speech signal.Proceedings ofSPIE-The InternationalSociety for OpticalEngineering[C].v8878,2013,Fifth International Conference on Digital Image Processing,ICDIP,2013.
[2]羅海濤.wav格式與數(shù)據(jù)獲取[J].電腦知識與技術(shù),2016.12(27):211-213
[3]張國華,張文娟,薛鵬翔.小波分析與應(yīng)用基礎(chǔ)[M].西北工業(yè)大學(xué)出版社,2006.
[4]劉明才.小波分析及其應(yīng)用[M].清華大學(xué)出版社,2005.
[5]Donoho,D.L.;I.M.Johnstone,"Ideal de-noising in an orthonormal basis chosen from a library of bases,"CRAS Paris[C].Ser I,t.319,1994:1317-1322
Detection of the end points of noisy speech signal
Luo Haitao
(School of Informatics,Guangdong University of Foreign Studies,Guangzhou,Guangdong 510420,China)
MATLAB is powerful mathematical software that performs numerical calculations,function or signal processing,and draws graphs.Processing noisy speech signal usually needs to eliminate noise first.Compared with speech signal,traffic noise frequency is lower.In this paper,Daubechies wavelet is constructed,and a wavelet packet is derived from the constructed scaling and wavelet functions.Then the wavelet packet is used to decompose the noisy speech signal.Detecting the starting point and ending point of speech with the algorithm achieves a good result.
MATLAB;speech signal process;wavelet packet;starting point and ending point detecting
TP311.11
A
1006-8228(2017)10-08-03
2017-07-31
羅海濤(1967-),男,廣東省興寧市人,碩士研究生,廣東外語外貿(mào)大學(xué)信息學(xué)院教師,主要研究方向:信號處理,語音識別。
10.16644/j.cnki.cn33-1094/tp.2017.10.003