趙 霞
(西安航空學(xué)院 能源與建筑學(xué)院,西安 710077)
語音的端點檢測、音節(jié)劃分、聲韻分割、濁清判決等對語音信號的后續(xù)處理,如消噪、語音識別都有重要應(yīng)用。目前最常用的幾種方法有:能量、倒譜、頻譜特征、譜熵[1]、過零率、自相關(guān)函數(shù),以及它們的組合形式,如能零積[2]。在低噪環(huán)境下,很多方法都能夠檢測出語音端點和清音、濁音;部分方法,如能量法能夠很好地區(qū)分清音濁音或者濁音和背景噪聲。然而,清音作為絕大部分漢語詞語的起點,其檢測不僅有一定難度,而且是否準(zhǔn)確對語音識別性能影響頗大[3]。
從產(chǎn)生原理上講,濁音是通過聲門調(diào)制、聲道影響和口腔輻射沖擊序列發(fā)出的一組能量并且具有一定規(guī)律性的語音;而清音則更像白噪聲,氣流的摩擦、爆破卻沒有聲帶的震動。因此,將清音和白噪聲相互分離,還是比較困難的,特別是清音淹沒在白噪聲中時。
有些“穩(wěn)健性”的端點檢測方法實際上是通過消噪,清除掉語音中的噪聲[1-2],然后對信號進行端點檢測的方法實際上改變了原信號,很可能會對清音部分產(chǎn)生比較大的傷害。有的學(xué)者使用基于子帶能量比[4-5]的方法或者信息熵[6]對清音進行了檢測。但是這幾種方法在白噪聲下不能很好地檢測出清音來,大量的白噪聲被誤認(rèn)為是清音,甚至有些濁音也被誤檢為清音。
本文通過仿真試驗發(fā)現(xiàn),在不考慮濁音的情況下,信息熵能夠比較好地區(qū)分白噪聲和清音,即使是在清音被白噪聲淹沒的情況下仍然能夠分辨出來,但由于清音和白噪聲的高頻特征,使得它們的信息熵變化比較大,也比較快,檢測時容易將連續(xù)清音分割成幾段清音。所以為了可靠地檢測出連續(xù)的清音,必須對語音的信息熵序列進行平滑地處理。本文選擇小波濾波方法對信號進行處理,仿真及結(jié)果顯示,這種方法能夠很好地從白噪聲及色噪聲中檢測出清音來,并且具有很好的穩(wěn)健性,在10 dB及以上條件下,完全可以檢測出噪聲中的清音來。
語音信號x(n)被加性白噪聲w(n)污染后的信號可表示為
zi(n)=xi(n)+wi(n)
(1)
式中:n=1,2,…,N;i為幀號。
信息熵的計算公式為[7]
(2)
式中,k=1,2,…,M;M為幀長。
譜熵的計算方法為:對信號先進行傅里葉變換,然后進行功率譜密度計算,最后根據(jù)功率譜密度計算熵值,就可以得到譜熵結(jié)果:
(3)
式中:Zi(k)為第i幀信號的M點FFT;M為FFT變換的長度,本文取值和幀長相等;pi(k)為第i幀信號的功率譜;*表示卷積計算;conj表示共軛。
對于任意信號f(t),其連續(xù)小波變換為[8]
FCWT(a,τ)=〈f(t),φa,τ(t)〉=
(4)
式中:a,τ分別為尺度因子(或者尺度參數(shù))和時間因子(或者位移參數(shù));φ為小波函數(shù);*表示共軛。
對連續(xù)小波變換,把尺度因子和時間因子離散化:
其中,a0,Ts分別是用來決定尺度因子和時間因子的離散化程度的參數(shù),得到離散小波變換為
(5)
離散小波變換的結(jié)果表明,相當(dāng)于使用了一對正交鏡像濾波器(QMF)對信號進行高通濾波(相應(yīng)于小波函數(shù)和細(xì)節(jié)空間)和低通濾波(相應(yīng)于尺度函數(shù)和尺度空間),對應(yīng)的正交鏡像濾波器分別為g(p)和h(p)(p為濾波器級數(shù))[9],然后再進行一次2倍下采樣,得到的小波系數(shù)(以3層分解為例)記為cA3、cD3、cD2、cD1分別是3層近似系數(shù)、3層細(xì)節(jié)系數(shù)、2層細(xì)節(jié)系數(shù)和1層細(xì)節(jié)系數(shù)。在重構(gòu)時,使用QMF濾波器g(p)′和h(p)′對小波系數(shù)cA3、cD3、cD2、cD1的信號進行濾波,再進行一次2倍采樣。
本文選定了小波基后,對應(yīng)的正交鏡像濾波器記為g(p,waveletbasis)和h(p,waveletbasis);同時,重構(gòu)正交濾波器記為g(p,waveletbasis)′和h(p,waveletbasis)′。
如圖1所示,當(dāng)使用16位量化,采樣率為11.025 kHz的語音,其內(nèi)容為英文“passage thirty-six”,信噪比為10.720 9 dB,分幀方法為:幀長256,幀移128,矩形窗。計算得到的譜熵顯示,譜熵基本上不會受到清音或白噪聲的影響,是一種很好的濁音檢測方法。
(a) 無噪信號
(b) 染噪信號
(c) 染噪信號的譜熵
圖1 染噪信號的譜熵
濁音的檢測方法如下:
(1) 按照式(3)計算每幀信號的譜熵值,組成譜熵序列。
(2) 選擇門限。選擇2個門限Thmax,Thmin,它們分別是某些非濁音段的譜熵最大值和最小值,可以根據(jù)語音信號前面和后面預(yù)留的無聲段進行選擇。只有連續(xù)大于Thmax或者連續(xù)小于Thmin的譜熵對應(yīng)幀,才能被認(rèn)為是濁音。一般情況下,濁音的譜熵在開始時比較明顯,因此,為了提高濁音開始點檢測的準(zhǔn)確性,進一步消除噪聲的影響,對兩個選定的門限進行如下調(diào)整:
Thsmax=1.5Thmax
(6)
Thsmin=0.5Thmin
(7)
如果檢測到連續(xù)3幀信號的譜熵值都大于調(diào)整后的Thsmax,或者小于調(diào)整后的Thsmin,就認(rèn)為濁音開始。另外還需要注意的是,在噪聲很低情況下,根據(jù)信號噪聲得到的門限Thmax非常小,不能正確識別出濁音來,因此,需要對它設(shè)定一個下限,通過多次試驗測定顯示,該下限設(shè)定為0.003能夠很好地滿足要求,并使得檢測無論是在高背景噪聲還是低背景噪聲下,都能夠有效地檢測出濁音來。
(3) 對濁音結(jié)束進行相應(yīng)判斷。濁音雖然在開始時特征比較明顯,但是在結(jié)尾部分其特征卻是緩慢下降的,特別在尾音,甚至和噪聲或者清音的譜熵相當(dāng)。因此,為了檢測到更精確的濁音結(jié)束點,需要對濁音的結(jié)束條件加強約束。這里使用的約束方法是:使用調(diào)整前的門限Thmax和Thmin。結(jié)果表明,使用不同門限對濁音開始和結(jié)束進行判斷時,得到的檢測效果有一定進步。如果檢測到連續(xù)3幀信號譜熵都小于Thmax,并且大于Thmin,認(rèn)為濁音結(jié)束。
對于檢測后確定為濁音的信號部分,將其全部置零,然后使用該信號進行清音檢測。
根據(jù)分析,熵函數(shù)對清音和白噪聲有一定的分辨能力,如圖2(a)、(b)所示,在時域信號中,當(dāng)清音和白噪聲無法辨認(rèn)情況下,使用信息熵仍然能夠在一定程度上區(qū)分出清音來。為了能夠更好地檢測和提高分辨能力,在檢測清音時,使用的幀長為128,幀移為64。清音檢測方法如下:
(1) 根據(jù)式(2)對分幀后的各幀信號計算其信息熵序列(見圖2(b))。
(2) 使用小波濾波方法對熵進行平滑和連續(xù)性處理。如圖2(b)所示,雖然清音有明顯的信息熵尖峰存在,但是由于選擇的門限不一定是最優(yōu)的,同時隨機的白噪聲有可能在某個短暫的時刻超過門限,并且即便是清音,由于它和白噪聲的相似性,也有可能出現(xiàn)連續(xù)清音中低于熵值門限的情況,這些都會使連續(xù)的清音被分割成許多不連續(xù)的部分。同時也會增加個別白噪聲信息熵尖峰影響檢測結(jié)果的可能性。因此,在這里采用小波濾波對信號的信息熵序列進行平滑處理。
通過仿真試驗,發(fā)現(xiàn)使用db2小波對信息熵序列進行了2層分解,然后,使用haar小波和小波系數(shù)cA2進行重構(gòu),能更好地獲得平滑作用,如圖2(c)所示。每個正交小波基都對應(yīng)了一組正交鏡像濾波器,本文使用db2進行小波分解,并用haar小波進行重構(gòu),相當(dāng)于使用了g(p,db2)和h(p,db2)對輸入信號進行高通和低通濾波,并用g(p,haar)′和h(p,haar)′對上述采樣后的小波系數(shù)進行高通和低通濾波。選擇haar小波,主要是因為它的形狀類似矩形,用在重構(gòu)中,能使重構(gòu)后的信號有一定的類似矩形結(jié)構(gòu)(見圖2(c)),從而保證了平滑效果,稱為塊化效應(yīng)。
(a) 去除噪聲后的染噪信號
(b) 剩余染噪信號的熵
(c) db2分解haar重構(gòu)
(d) dmey分解haar重構(gòu)
圖2 去除濁音后的染噪信號的信息熵
但是,當(dāng)觀察到3(c)中的某些比較明顯的清音部分,如3(b)中第40幀左右位置的一個尖峰在平滑后消失了。經(jīng)過仿真試驗發(fā)現(xiàn),如果使用dmey小波對信息熵進行分解,并使用haar小波進行重構(gòu),能使清音部分的信息熵值更多地保留下來,重構(gòu)效果如圖2(d)所示。同時發(fā)現(xiàn),雖然單單使用dmey小波可以更好地檢測出被忽略的清音,但是又會因為其平滑效果不如db2好,而造成許多連續(xù)清音的斷裂。因此,選擇同時使用這兩種小波基來進行小波分解和重構(gòu),之后將檢測到的清音段進行疊加。結(jié)果顯示,這種操作既可以避免清音斷裂情況的出現(xiàn),又能夠很好地檢測出一些輕微的被淹沒的清音來。
平滑處理后,根據(jù)信號各幀的信息熵水平,選擇合適的門限,再對清音幀進行判斷。因為清音和白噪聲非常相似,為了提高檢測精度,除了縮短幀長及幀移以外,在選擇門限時,也應(yīng)當(dāng)避免選擇非清音幀對應(yīng)的最大熵值,而應(yīng)該在可以接受的條件下,選擇比較小且能比較好地區(qū)分清音和白噪聲的門限。本文具體的處理方法為:計算信號前后部分幀的熵值,從中選擇次大的作為門限,如果連續(xù)2幀信號大于該門限,就認(rèn)為清音開始,若連續(xù)2幀信號的信息熵小于該門限,就認(rèn)為清音結(jié)束。
在濁音檢測及清音檢測完成后,需要對結(jié)果進行一些調(diào)整,因為將濁音部分置零和分幀都會使得清音和濁音的邊界產(chǎn)生模糊,可能會使某些已被檢測為濁音的部分又被檢測為清音,因此,在出現(xiàn)這種情況時,應(yīng)當(dāng)認(rèn)為這些重疊部分是濁音,而將清音檢測的開始點后移到濁音結(jié)束的下一個位置,或者將清音檢測的結(jié)束點前移到濁音開始的上一個位置。最終的檢測結(jié)果如圖3所示。
圖3(a)是染噪信號,圖3(b)是檢測到的濁音和清音內(nèi)容。上面的方框內(nèi)是濁音部分,下面的方框內(nèi)是清音部分。在該語音中,“passage thirty-six”一共有5個濁音,分別是// /ei/ /з:/ /i/ /i/,已經(jīng)被全部檢測出來,清音共有7個,分別是/p/ /s/ /d/ /θ/ /t/ /s/ /ks/,除了“six”中s的發(fā)音被檢測為兩段外,其他部分都被檢測出來了。而這些清音中的大部分是淹沒在白噪聲中的,如圖3(a)所示。
(a) 染噪語音
(b) 清音檢測結(jié)果
圖3 染噪信號清音檢測結(jié)果
使用內(nèi)容為“passage thirty-six”的語音,在不同信噪比下進行清音檢測,檢測結(jié)果如圖4所示,噪聲類型為白噪聲。其中圖(f)為無噪聲條件下濁音、清音的檢測結(jié)果,(a)~(e)分別為5、10、15、20、25 dB下的檢測結(jié)果。圖中顯示,本文提出的方法,在10 dB及以上信噪比條件下,取得的檢測結(jié)果很好,特別是10 dB條件下,而此時的清音基本上已經(jīng)被白噪聲所掩蓋。
(a)
(b)
(c)
(d)
(e)
(f)
圖4 不同信噪比下的檢測結(jié)果(本文方法+白噪聲)
隨機在馬路上采集一段實際噪聲,然后加入到上述純語音中,分別使用本文中方法和基于子帶的方法[5]進行清音檢測,得到的結(jié)果如圖5和圖6所示。信噪比順序與圖4中的相同。
(a)
(b)
(c)
(d)
(e)
(f)
圖5 不同信噪比下的檢測結(jié)果(本文方法+實際噪聲)
(a)
(b)
(c)
(d)
(e)
(f)
圖6 不同信噪比下的檢測結(jié)果(子帶方法+實際噪聲)
通過對比可以明顯得到,本文的方法能夠檢測出更多清音來,并且其魯棒性也明顯優(yōu)于基于子帶的方法。
在語音信號的端點檢測及聲韻分割等技術(shù)中,困難主要在于清音的有效檢測。使用本文的方法,能夠?qū)⑺械臐嵋艉蛶缀跞康那逡艉芎玫刈R別出來,即使在清音完全掩蓋在噪聲中時(包括白噪聲和實際噪聲),本文的方法仍然可以很好地檢測到清音。
濁音、清音、無聲段的檢測對于語音增強、語音識別都有重要的意義。以語音增強為例,通過對各種典型語音使用小波收縮法進行消噪[10]時,在小波基的選擇上,對濁音段使用dmey小波,對無聲段使用haar小波能夠取得更好的效果。同時,其他消噪?yún)?shù),如閾值算法等的選擇,也需要分辨語音是否是清音[4-6],然后再進行處理。
本文中,判決門限,包括濁音判決和清音判決,對于結(jié)果而言都是非常重要的。本文使用的門限估算方法為全部語音信號前后的無音幀的(譜)熵最大值與最小值的加權(quán)處理。因此,該方法要求語音前后要有一定的無聲段用來估計門限,若能與自適應(yīng)方法相結(jié)合使用,會取得更好的效果。