牟 莉,佘石豪,孟玉茹
(西安工程大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,陜西 西安 710048)
基音周期是現(xiàn)代語音信號處理領(lǐng)域的一個重要參數(shù),準(zhǔn)確地提取和估算基音周期,是保證語音信號在人機(jī)交流中更有效地產(chǎn)生、傳輸、存儲、獲取和應(yīng)用的一個重要過程[1-2]?;糁芷跈z測在語音識別[3-4]、復(fù)雜時頻域交換的語音分析與合成[5-6]、低碼頻率語音編碼[7]、噪聲環(huán)境下的語音識別[8]、聽覺障礙的殘疾人語言指導(dǎo)[9]等多個領(lǐng)域有著廣泛地應(yīng)用。不同應(yīng)用領(lǐng)域下的基音周期檢測算法會直接影響到語音識別的識別率、合成語音是否真實(shí)再現(xiàn)原始語音信號、語音壓縮編碼的正確率。目前檢測基音周期的算法主要有主體-延伸法[10]、自相關(guān)函數(shù)(autocorrelation function,ACF)法[11]、平均幅度差函數(shù)(average magnitude difference function,AMDF)法[12]、倒譜法[13]、小波變換法[14]等。這些算法在無噪環(huán)境下提取基音周期比較準(zhǔn)確,但是在有噪環(huán)境下樣點(diǎn)檢測錯誤率明顯增加,基音周期估計(jì)不夠理想,所以尋求一種抗噪能力強(qiáng),基音檢測精度高的算法是語音信號處理的一個重要環(huán)節(jié)。
主體-延伸法是適用于噪聲環(huán)境下的一種基音周期檢測算法[15],利用主體-延伸法對音調(diào)區(qū)域的前過渡音和后過渡音的區(qū)間內(nèi)提取一個音調(diào)基音估計(jì)參數(shù)時,會存在估算周期值是其實(shí)際周期估計(jì)值的整數(shù)倍或半值,稱為“野點(diǎn)”問題[16]。文獻(xiàn)[17]提出利用譜減法對帶噪語音信號降噪,結(jié)合ACF法去除共振峰的響應(yīng),但是噪聲會將功率譜中較低的電平段覆蓋掉,導(dǎo)致語音信號的時頻域分析中出現(xiàn)錯誤,檢測誤差隨之增加,效果不夠理想。文獻(xiàn)[18-19]利用小波變換準(zhǔn)確檢測出基音峰值點(diǎn),但對于語音信號幅度迅速產(chǎn)生變化時,會直接出現(xiàn)均值下降的情況,基音周期估計(jì)的精度也不夠理想。
本文基于對音節(jié)組成的分析和基音周期檢測過程中存在的野點(diǎn)問題,提出了一種改進(jìn)的基音周期檢測算法。實(shí)驗(yàn)結(jié)果表明:該方法在有噪環(huán)境下可以改善基音頻率檢測,估算的基音頻率曲線和實(shí)際的基音頻率曲線可以較好地重合,減少野點(diǎn)問題,一定程度上增加了基頻提取的準(zhǔn)確性。
為了能夠準(zhǔn)確地提取帶噪語音的信號的基音周期參數(shù),首先將帶噪語音的信號經(jīng)小波變換和譜減法相結(jié)合進(jìn)行消噪,語音增強(qiáng)后的信號中存在共振峰及殘留干擾噪聲,對減噪語音信號進(jìn)行2次加窗分幀。一方面對多個端點(diǎn)和元音的主體檢測,另一方面通過數(shù)字帶通濾波[20]后更方便進(jìn)行多窗譜估計(jì)[21],得到過減因子并且保留譜減后的幅值,最后平滑處理,消除基音周期檢測中的部分野點(diǎn)。具體實(shí)現(xiàn)流程如圖1所示。
圖 1 基音周期檢測流程Fig.1 Flow chart of pitch period detection
譜減法降噪后的語音具有明顯的音樂噪聲[22],并且大大降低了對語音信號的準(zhǔn)確性和可懂程度,這是由殘留噪聲造成的。小波變換以傅里葉分析為基礎(chǔ),實(shí)現(xiàn)了時頻域局部變換和分析,能將信號在多尺度多分辨率上進(jìn)行小波分解,從而獲取信號中的局部信息。
設(shè)帶有干擾噪聲的語音信號時間序列為α(n),則該信號的附加噪聲模型可表示為
α(n)=β(n)+γ(n)
(1)
式中:β(n)為純凈語音信號;γ(n)為加性噪聲。
因?yàn)檎Z音β(n)和噪聲γ(n)這2個參數(shù)是獨(dú)立且互不相關(guān)的,所以可以通過快速傅里葉變換(fast Fourier transform,F(xiàn)FT)得到第i幀的語音帶噪信號為αi(m),幀數(shù)的長度設(shè)為N。分別對α(n),β(n),γ(n)進(jìn)行FFT,得到
(2)
則可以計(jì)算出帶噪語音信號α(n)的功率譜:
(3)
對其中任何一幀信號αi(m)進(jìn)行離散傅里葉變換(discrete Fourier transform,DFT)后,得
k=0,1,…,N-1
(4)
傳統(tǒng)譜減法實(shí)現(xiàn)降噪的主要原因是信號頻域幀內(nèi)的短時功率譜減去噪聲譜,但是計(jì)算過程中存在殘余功率譜,使得在頻域上產(chǎn)生很多的尖峰點(diǎn),不同幀之間有一定程度的重疊。為了有效防止增加處理后的信號的失真程度及其殘留的音樂噪聲,將小波變換的基函數(shù)引入到語音信號的時間序列,通過對小波基函數(shù)的平移和延遲、伸縮來實(shí)現(xiàn)多尺度的信號分析,分解低頻和高頻信息,自動調(diào)整信號的時域窗和頻域窗大小以滿足實(shí)際語音信號分析的要求。
一段連續(xù)信號f(x)的小波變換可表示為
(5)
式中:φ(x)為時頻域上局部性質(zhì)較好的小波函數(shù)。
假設(shè)存在一個實(shí)數(shù)對(a1,b2),且參數(shù)a1>0表示一個尺度因子,參數(shù)b2表示一個位移因子。當(dāng)尺度因子和位移因子存在小波函數(shù)當(dāng)中時,小波的基函數(shù)φa1,b2(x)可表示為
(6)
式中:φ(x)為母小波,是經(jīng)過移位和伸縮變換后所產(chǎn)生的一簇函數(shù)。
分析可知,小波會對時間序列進(jìn)行分解,低頻中丟失的信息由高頻捕獲。低頻信號接收器的時間分辨率相對較低而頻率信號分辨率相對較高;高頻信號接入點(diǎn)處的頻率分辨率相對較低而時間分辨率相對較高。最后重構(gòu)了不同尺度的小波系數(shù),使一些語音尖峰點(diǎn)被消除,從而獲得一些去噪后的有用語音信號。
為了提高基因檢測的可靠性,提出端點(diǎn)和元音主體檢測對第1次加窗分幀后的語音信號進(jìn)行預(yù)處理。由于語音信號的頭、尾部并不具有聲帶振動那樣的周期性,所以采用能熵比法[23]進(jìn)行端點(diǎn)和元音主體檢測。設(shè)第1次加窗分幀后的語音信號在頻域中的短時能量可表示為
(7)
式中:L為幀長;i為第i幀;yi(n)為分幀處理后得到的第i幀語音信號。
根據(jù)語音幀的短時能量,可以確定一個較低的閾值,然后將該閾值和能熵比值比較,把大于能熵比值的部分作為有話段的端點(diǎn)候選值,端點(diǎn)檢測完成后再進(jìn)一步判斷有話段的元音主體。把端點(diǎn)候選值中能熵比較大的部分作為元音主體。
帶噪語音經(jīng)過第2次加窗分幀后,首先對同一信號序列求出直接譜[24],然后多個數(shù)據(jù)窗選取相互正交后求其平均值,最后通過計(jì)算得到直接譜估計(jì)和較小的譜估計(jì)方差[25]。由于過渡區(qū)間內(nèi)仍然存在一部分元音主體的共振峰和殘留噪聲影響,所以要將功率譜密度估計(jì)值在相鄰兩幀之間進(jìn)行平滑處理,然后平均得到減噪后的語音信號。
在相鄰幀之間對多窗譜功率譜密度估計(jì)值進(jìn)行平滑處理后求得的平滑功率譜密度函數(shù)Py(k,i)為
(8)
式中:i、j為幀數(shù);k為譜線數(shù);M為第i幀前后各取M幀。
噪聲的平均功率譜密度值Pn(k)為
(9)
式中:S為噪聲占有的幀數(shù)。
由式(8)、(9)可知,利用譜減關(guān)系可以計(jì)算增益因子:
(10)
式中:λ為過減因子;η為增益補(bǔ)償因子。過減因子λ和增益補(bǔ)償因子η只是一個參考數(shù)值,具體取多大值是和噪聲情況有關(guān)。若信噪比較大,λ可取小一點(diǎn),η可取稍大一點(diǎn);若信噪比較小,λ就得取大一點(diǎn),η取小一點(diǎn)。消噪后的語音有少量的音樂噪聲,適當(dāng)選擇過減因子λ的數(shù)值可以有效去除音樂噪聲,但過大的λ值會引起語音信號失真。
主體-延伸法是基于音節(jié)的組成原理[26],先對元音主體的基音進(jìn)行檢測,再延伸到前后過渡區(qū)間檢測基音。以元音主體基音周期值為基準(zhǔn),向兩端過渡區(qū)間搜尋最接近于元音主體基音的周期值,這樣就能減少發(fā)生野點(diǎn)的現(xiàn)象。
元音主體的基音檢測是從用濾波后的每一幀分幀數(shù)據(jù)的自相關(guān)函數(shù)范圍內(nèi)尋找最大值對應(yīng)基音周期,但元音主體不完全是穩(wěn)態(tài)信號且會有野點(diǎn)發(fā)生,所以需要選用能熵比相對大的部分。
一般情況下,對過渡區(qū)間的基音檢測時,此方法會將少部分輔音和尾音劃分到有話音段內(nèi),而聲帶對這部分輔音和尾音并沒有振動,同時其中也不存在相應(yīng)的基音。所以針對這個問題,設(shè)置c1和c22個閾值參數(shù),采樣周期取值范圍為10~15,以這個為約束要求,在相鄰兩幀或多幀之間的基音周期差值不大于c1和c2,即基因周期p在i與(i±1)兩幀之間要滿足
|P(i)-P(i+1|≤c
(11)
由于在過渡區(qū)間進(jìn)行基音檢測時,在(i+1)點(diǎn)時有可能尋找不到滿足式(11)的數(shù)值,此時只能相隔一幀,甚至相隔多幀去尋找,在多幀之間要滿足
|P(i)-P(i+j)|≤c2,j≥2且j∈N
(12)
設(shè)置一個閾值參數(shù)T1,比例系數(shù)r2,用來判斷語音信號在延伸區(qū)間內(nèi)的端點(diǎn),可表示為
T1=Emax×r2
(13)
式中:Emax為過渡區(qū)間內(nèi)計(jì)算求得的能熵比的最大值。分析可知,在延伸區(qū)間的頭部、中部和尾部的有話音段中引入了新的閾值參數(shù)T1后,解決了多幀信號以元音主體基音周期為基準(zhǔn),向前后延伸區(qū)域判斷端點(diǎn),檢測其基音周期長短。
在基音周期的檢測中,也會產(chǎn)生檢測錯誤,使求得的基音周期軌跡中存在野點(diǎn)。為了去除基音周期檢測后的野點(diǎn),可以采用中值濾波[27]和線性平滑算法[28-29]相結(jié)合的方法來解決問題。
首先設(shè)置一個滑動窗,將滑動窗的中心移動到輸入信號處,得到中值濾波器的輸出值,此值是滑動窗內(nèi)輸入信號樣點(diǎn)的中值。然后結(jié)合線性平滑算法,用滑動窗進(jìn)行線性濾波處理。
分析可知,中值平滑既可以有效地去除少量的野點(diǎn),又不會破壞數(shù)據(jù)在2個平滑段之間的階躍性變化。線性平滑在糾正輸入信號中不平滑處樣點(diǎn)值的同時,也使附近各樣點(diǎn)的值得到了修改。
本次采樣的語音數(shù)據(jù)是在無噪聲環(huán)境下進(jìn)行錄制和完成的,錄入的內(nèi)容為“您好,西安,工程,大學(xué)”,設(shè)置的采樣頻率為8 kHz。先把信號截取、劃分成若干幀,每幀的長度設(shè)置為25 ms,位移為10 ms,然后使用漢明窗處理。
將信噪比為5 dB的高斯白噪聲加在一段純凈語音信號中,然后采用Matlab進(jìn)行對比仿真實(shí)驗(yàn)?;糁芷跈z測采用的方法分別是ACF法、主體-延伸法、小波-自相關(guān)法、譜減-自相關(guān)法以及本文提出的改進(jìn)方法。傳統(tǒng)基音周期檢測的實(shí)驗(yàn)結(jié)果如圖2所示。
(a) ACF法的基音周期檢測
從圖2(a)可以看出,ACF基音周期檢測時出現(xiàn)倍頻和半值現(xiàn)象比較明顯,在無話音段提取的基音頻率存在誤差,識別出現(xiàn)錯誤;圖2(c)、(d)通過ACF和其他基音周期檢測算法結(jié)合,結(jié)果顯示非有話音段幾乎不產(chǎn)生干擾基音頻率,基音周期提取的準(zhǔn)確性大幅提高,但是依然可以清楚地看到出現(xiàn)野點(diǎn)的數(shù)目。圖2(b)通過主體-延伸法檢測后使得一部分峰值曲線變得平滑,野點(diǎn)出現(xiàn)的情況減少,但它本身還是有局限性,比如有些語音信號還是不能正確地檢出其基音頻率。
圖3為本文改進(jìn)算法的基音周期和基音頻率波形圖。從圖3可以看出,估算出的基音頻率和實(shí)際基音頻率能很好地重合疊加在一起,并且周期曲線更平滑,出現(xiàn)野點(diǎn)的情況更少。所以改進(jìn)的主體-延伸法進(jìn)行基音周期提取后可以對有話音段進(jìn)行準(zhǔn)確提取。
圖 3 改進(jìn)算法的基音周期檢測結(jié)果Fig.3 Pitch period detection result of improved algorithm
2.1.1 性能指標(biāo)
改進(jìn)后的基音周期檢測算法性能的好壞由樣點(diǎn)率和野點(diǎn)數(shù)目共同決定。樣點(diǎn)率越大,野點(diǎn)數(shù)目越少,表明該方法的性能越好;樣點(diǎn)率越小,野點(diǎn)數(shù)目越多,表明該方法的性能越差。樣點(diǎn)率為有話段樣點(diǎn)數(shù)目與樣點(diǎn)總數(shù)目的比值。由于不同信號幀之間具有非穩(wěn)定性,使得基音能量傳遞過程中受到少部分噪聲干擾,非有話段中產(chǎn)生的樣點(diǎn)數(shù)也會影響基音周期樣點(diǎn)率水平的高低。
2.1.2 實(shí)驗(yàn)結(jié)果分析
本文提出的改進(jìn)算法通過實(shí)驗(yàn)仿真后,將以上各種基音周期檢測算法出現(xiàn)的有話段樣點(diǎn)數(shù)目及野點(diǎn)數(shù)目進(jìn)行對比分析。當(dāng)信噪比為5 dB時,對比結(jié)果如表1所示。
表 1 對比結(jié)果
從表1可以看出,本文改進(jìn)的方法有較好的表現(xiàn),在有噪聲的環(huán)境下,提取到的有話段的樣點(diǎn)數(shù)目高于其他檢測方法,并且產(chǎn)生的野點(diǎn)數(shù)目最少,再分別計(jì)算各個檢測方法的樣點(diǎn)率:ACF法為49%,主體-延伸法為82%,小波-ACF法為76%,譜減-ACF法為79%,本文改進(jìn)的方法為87%。通過對主體-延伸法的改進(jìn)及野點(diǎn)的平滑濾波處理,獲得了較高的有話段樣點(diǎn)率,進(jìn)一步提高了基音檢測的準(zhǔn)確率。
加窗分幀操作是語音信號提取特征的預(yù)處理階段,為了驗(yàn)證2次加窗分幀對基音周期檢測的影響,取小波-譜減法消噪后的語音進(jìn)行消融實(shí)驗(yàn),對ACF法、主體-延伸法、WT-ACF法、譜減-ACF法以及本文改進(jìn)方法的有話段樣點(diǎn)數(shù)目、野點(diǎn)數(shù)目、樣點(diǎn)率進(jìn)行比較。缺少第1次、第2次加窗分幀的實(shí)驗(yàn)結(jié)果如表2、3所示。
表 2 缺少第1次加窗分幀
表 3 缺少第2次加窗分幀
從表2和表3可以看出,缺少了第1次加窗分幀處理后,有話段樣點(diǎn)數(shù)目、樣點(diǎn)率都呈下降的趨勢,野點(diǎn)數(shù)目無明顯變化;缺少了第2次加窗分幀處理后,有話段樣點(diǎn)數(shù)目、樣點(diǎn)率無明顯變化,野點(diǎn)數(shù)目呈上升的趨勢。
分析可知,第1次加窗分幀的目的是進(jìn)行端點(diǎn)檢測和元音主體的檢測;而第2次加窗分幀的目的是進(jìn)行基音檢測,減少共振峰的影響。
為了進(jìn)一步檢驗(yàn)魯棒性和抗噪能力,分別加入信噪比為0dB、5dB、10dB、15dB的高斯白噪聲,對ACF法、主體-延伸法、WT-ACF法、譜減-ACF法以及本文改進(jìn)方法的基音周期檢測樣點(diǎn)率進(jìn)行比較,如表4所示。
表 4 不同信噪比下樣點(diǎn)率對比
從表4可以看出,在5種不同的信噪比環(huán)境下,WT-ACF法和譜減-ACF法在高信噪比下較ACF法有較大地提高,在低信噪比下這3種算法檢測的樣點(diǎn)率較低,效果不理想。在相同信噪比的情況下,本文改進(jìn)方法與其他4種算法相比較,其基音周期檢測樣點(diǎn)率有明顯地提高,信噪比為15 dB時,樣點(diǎn)率達(dá)到92.0%,信噪比為0 dB時,基音周期檢測樣點(diǎn)率也在90%以上。
從表4分析可知,當(dāng)信噪比大于0 dB時,本文提出的改進(jìn)方法進(jìn)行基音周期檢測都能得到很好的效果,說明本文建議的基音檢測算法具有較強(qiáng)的抗噪性、更高的準(zhǔn)確性,并且魯棒性很好。
由上述實(shí)驗(yàn)仿真結(jié)果對比可知,本文提出的改進(jìn)方法對帶噪語音信號提取基音周期的效果更顯著,有效抑制了加性噪聲產(chǎn)生的殘留噪聲、共振峰以及野點(diǎn)等問題。同時,改進(jìn)的方法進(jìn)行基音周期檢測完成后通過平滑濾波處理,對語音信號波形的破壞程度較小,穩(wěn)定性較高,提高了語音信號可懂度和有用話段基音提取的清晰度。
本文結(jié)合小波變換和譜減法對帶噪語音信號進(jìn)行消噪,再利用改進(jìn)的主體-延伸法進(jìn)行基音周期和基音頻率估計(jì)。仿真結(jié)果表明:本文改進(jìn)的方法效果更明顯,對抑制共振峰的產(chǎn)生和消除音樂噪聲效果較好,提高了基音周期檢測的精確度,同時使得檢測過程中產(chǎn)生的野點(diǎn)數(shù)目大幅減少,得到的頻率曲線平滑程度較高,魯棒性較好。但是在算法時間復(fù)雜度方面還需要進(jìn)一步優(yōu)化。