許昊 張二華
摘 要: 為了提高語音端點檢測的準(zhǔn)確率,提出一種基于改進(jìn)C0復(fù)雜度和MFCC相似度相結(jié)合的端點檢測算法。首先,計算每一幀語音信號的C0復(fù)雜度以及MFCC相似度。然后,結(jié)合C0復(fù)雜度與MFCC相似度作為新的特征參數(shù),設(shè)置閾值進(jìn)行端點檢測。對信噪比在-15~15 dB范圍內(nèi)的含噪語音進(jìn)行端點檢測,使用Matlab軟件進(jìn)行仿真實驗。實驗結(jié)果表明,該方法相對于單獨的兩種方法提高了檢測率,且穩(wěn)定性更強。
關(guān)鍵詞: 音信號處理; C0復(fù)雜度; MFCC相似度; 端點檢測
中圖分類號: TN912?34 文獻(xiàn)標(biāo)識碼: A 文章編號: 1004?373X(2015)10?0007?03
0 引 言
端點檢測算法在語音信號處理領(lǐng)域有著十分重要的意義[1]。對語音信號進(jìn)行準(zhǔn)確的端點檢測既是提高語音識別準(zhǔn)確率的重要環(huán)節(jié),也是提升語音編碼效率的關(guān)鍵。傳統(tǒng)的端點檢測算法常采用短時能量、短時過零率和自相關(guān)最大值等方法,這些方法在低噪聲環(huán)境下均能取得比較好的結(jié)果,但在高噪聲環(huán)境下性能則下降明顯。后來又出現(xiàn)了許多新的方法,如基于譜熵的端點檢測[2]、基于LPCC(線性預(yù)測倒譜系數(shù))的端點檢測[3]、基于時頻方差的端點檢測[4]等方法。這些方法確實提高了在低信噪比環(huán)境下的語音檢測率,然而它們?nèi)杂胁恍〉母倪M(jìn)空間。由于MFCC(Mel頻率倒譜系數(shù))較好地反映了人耳的聽覺特性,而C0復(fù)雜度[5]較好地體現(xiàn)了語音信號的非線性特性,且基于二者的端點檢測方法均被證明具有良好的檢測效果。本文提出一種新的特征MFCC_C0,并將兩種特征進(jìn)行綜合,該方法在不同信噪比環(huán)境下均取得良好的效果,較單獨使用其中一種特征更具優(yōu)勢。
1 算法描述
1.1 改進(jìn)的C0復(fù)雜度
復(fù)雜度是作用于時間序列的一種指標(biāo),主要是將信號分解成規(guī)則成分和不規(guī)則成分兩部分,通過計算其不規(guī)則部分所占的相對比例來反應(yīng)信號的復(fù)雜度特性,就是C0復(fù)雜度描述的基礎(chǔ)[6]。改進(jìn)的C0復(fù)雜度,引入了參數(shù)r,表征超過頻譜均方值r倍,它更好地反應(yīng)了時間序列的隨機性。語音信號的C0復(fù)雜度計算步驟如下:
(1) 對語音信號進(jìn)行預(yù)加重、分幀、加窗處理,得到[fx]。其中預(yù)加重系數(shù)α=0.937 5,幀移為幀長的一半,使用Hamming窗。
(2) 計算語音信號的頻譜:
[Fk=x=0N-1fxexp-j2πkxN, x=0,1,2,…,N-1] (1)
式中:[Fk]是[fx]的離散傅里葉變換;[x]是時域變量;[k]是頻域變量;[j=-1]。
(3) 計算語音信號頻譜均方值:
[Fk=1Nk=0N-1Fk2] (2)
(4) 引入?yún)?shù)r(r為大于等于1的常數(shù)),保留大于頻譜均方值r倍的頻譜,將其余部分置零,大于閾值的部分認(rèn)為是語音信號中的規(guī)則成分,小于閾值的部分認(rèn)為是語音信號中的隨機成分,即:
[Fk=Fk,F(xiàn)k2≥rFk0,F(xiàn)k2 (5) 對[Fk]做傅里葉逆變換: [fx=1Nk=0N-1Fkexpj2πkxN, x=0,1,2,…,N-1] (4) (6) 語音信號的改進(jìn)C0復(fù)雜度定義如下: [C0r=x=0N-1fx-fx2x=0N-1fx2] (5) 當(dāng)r=1時,[C0r]就是原C0復(fù)雜度的定義。本文中取r=8。改進(jìn)后的C0復(fù)雜度比原來C0復(fù)雜度更可靠[7]。 1.2 MFCC相似度 MFCC(Mel頻率倒譜系數(shù))從人耳的聽覺出發(fā),與基于實際頻率倒譜的分析不同。人耳感受到的聲音頻率與聲音的實際頻率成非線性關(guān)系,而Mel頻率尺度[8]則是根據(jù)人耳的聽覺特性設(shè)計的。臨界頻率帶寬隨著頻率的變化而變化[9],并與Mel頻率的增長相一致。當(dāng)頻率低于1 000 Hz時,臨界頻率帶寬大約為100 Hz;當(dāng)中心頻率高于1 000 Hz時,臨界頻率帶寬呈對數(shù)增長。類似于臨界頻帶的劃分,可以使用帶通濾波器組來模擬人耳對不同頻率語音信號的處理。MFCC相似度[2]的計算步驟如下: (1) 計算語音信號的頻譜[Fk],由式(1)可得。 (2) 根據(jù)式(6)將實際頻率映射到Mel頻率上: [Melf=2595lg1+f700] (6) 式中參數(shù)[f]表示實際頻率,單位為Hz。 (3) 設(shè)置L個三角濾波器,濾波器的個數(shù)由信號的截止頻率決定(本文取L=24)。在Mel頻率尺度上,每個濾波器的中心頻率間隔相等。設(shè)[ol]、[cl]、[hl]分別是第[l]個三角濾波器的下限、中心和上限頻率,由于相鄰濾波器組有重疊,它們的關(guān)系如下[9]: [cl=hl-1=ol+1] (7) (4) 計算每個濾波器的輸出: [ml=k=olhlWlkFk, l=1,2,…,L] (8) 式中三角濾波器[Wlk]可表示為: [Wlk=k-olcl-ol ,ol≤k≤clhl-khl-cl ,cl≤k≤hl] (9) (5) 對濾波器輸出取對數(shù),并做離散余弦變換可得MFCC參數(shù): [cMFCCi=2Nl=1Llgmlcosl-12iπL] (10) (6) 假設(shè)當(dāng)前語音信號的前10幀為背景噪聲,取這幾幀信號的MFCC 參數(shù)均值作為背景噪聲MFCC參數(shù)的估計值。同時為了使背景噪聲估計值實時反映語音信號的實際背景噪聲情況,提出背景噪聲的MFCC參數(shù)更新公式[8]: [Cnoise=pC+1-pCi] (11) 式中:[C]為語音信號前10幀MFCC參數(shù)的均值;p為加權(quán)因子;[Ci]表示當(dāng)前幀的MFCC參數(shù)。若當(dāng)前幀被判斷為噪聲幀,則使用當(dāng)前幀的MFCC參數(shù)[Ci]來更新背景噪聲參數(shù)[Cnoise。]
(7) 相似度是用來衡量兩個對象之間相似程度的,求取相似度的方法有很多,如明氏距離、夾角余弦距離、相似性函數(shù)法等。本文選用相關(guān)系數(shù)距離法,來衡量兩個特征向量(當(dāng)前語音幀的MFCC參數(shù)[Ci]與噪聲幀的MFCC參數(shù)[Cnoise])之間的相似度。[di=1-x-xy-yx-xx-x′12y-yy-y′12] (12)
式中:[x=j=1nxj];[y=j=1nyj]。
1.3 兩種特征聯(lián)合檢測
C0復(fù)雜度表示信號中隨機運動所占的份額,而噪聲的隨機運動程度遠(yuǎn)高于語音的隨機運動程度。MFCC特征參數(shù)模擬了人耳的聽覺機制,具有較強的抗噪能力。這兩種特征相關(guān)性較低,本文通過對兩種特征分別歸一化后進(jìn)行綜合加權(quán)構(gòu)建一個新特征MFCC_C0,在此基礎(chǔ)上設(shè)置閾值進(jìn)行端點檢測。當(dāng)信噪比高于5 dB時,C0復(fù)雜度檢測率高于MFCC 相似度算法,此時給予C0復(fù)雜度特征更高的權(quán)重,反之,則給予MFCC 相似度特征更高的權(quán)重。
新特征MFCC_C0定義如下[10]:
[MFCC_C0i=C0_normi+9d_normi,SNR<5 dB9+SNR-55C0_normi+d_normi,SNR≥5 dB] (13)
式中:SNR為信噪比;[C0_normi]為C0的歸一化表示,[d_normi]為[di]的歸一化表示。
2 實驗結(jié)果與分析
實驗采用一段新聞聯(lián)播的語音信號作為純凈語音。并使用Cool Edit Pro軟件對其重新編輯,只保存單聲道,16 kHz采樣率和16 b量化處理。選用NOISEX?92噪聲庫中的白噪聲,合成不同信噪比的帶噪語音。為了驗證本文提出方法較先前兩種方法有所改進(jìn),將三種端點檢測方法的檢測效果顯示在同一幅圖中,進(jìn)行直觀的比較。本文使用Matlab軟件進(jìn)行實驗,結(jié)果見圖1,圖2。
圖1 信噪比為-10 dB時的三種方法的檢測結(jié)果
圖2 信噪比為10 dB時的三種方法的檢測結(jié)果
圖1、圖2中,每張圖均由(a)~(e)五個子圖構(gòu)成[10],其中:(a)為純凈語音;(b)為帶噪語音;(c)為MFCC相似度的檢測結(jié)果;(d)為C0復(fù)雜度算法的檢測結(jié)果;(e)為C0復(fù)雜度與MFCC相似度相結(jié)合算法的檢測結(jié)果。每個子圖中的紅色線條表示一段語音的開始和結(jié)束。其中,圖(a)、(b)是由人耳辨別,并在曲線上標(biāo)示出語音段的起始位置。圖(a)被劃分為10小段語音。圖(c)~圖(e)是由三種端點檢測算法自動檢測出的結(jié)果。
圖1給出在信噪比-10 dB下,三種算法的檢測效果。從圖(c)可以看出,MFCC相似度算法檢測出大部分語音段,但未檢測出第6段語音,且未能將第7,8段語音分開,及未能檢測出第9段語音;而從圖(d)可以看出,C0復(fù)雜度僅檢測出4段語音,存在大量誤判,且語音段與非語音段區(qū)分度很低;從圖(e)可以看出,本文提出的方法檢測效果接近MFCC相似度,好于C0復(fù)雜度的檢測結(jié)果。
圖2給出了在信噪比為10 dB下,三種算法的檢測效果。從圖(c)可以看出,MFCC相似度檢測出了絕大多數(shù)的語音段,包括第6段語音,然而第7,8段語音仍然未能被很好地分離,且未能區(qū)分第9,10段語音;而從圖(d)可以看出,C0復(fù)雜度檢測出了所有的語音,且區(qū)分性非常明顯;從圖(e)可以看出,本文提出的方法檢測效果接近C0復(fù)雜度,好于MFCC相似度。
為進(jìn)一步檢驗本文所提的算法的正確率,對三種端點檢測算法的正確率進(jìn)行計算并統(tǒng)計。表1是信噪比范圍在-15~15 dB下,三種端點的檢測效果。端點檢測的正確率可由式(14)得出:
[正確率=判斷正確的幀數(shù)語音的總幀數(shù)×100%] (14)
表1 MFCC相似度、C0復(fù)雜度及本文算法端點檢測正確率比照表
由表1可以看出,在-15~15 dB之間,與C0復(fù)雜度及MFCC相似度算法相比,改進(jìn)算法綜合了兩者的優(yōu)點,取兩者的較高值,且表現(xiàn)穩(wěn)定。當(dāng)信噪比低于0 dB時,C0復(fù)雜度的誤判逐漸增多,MFCC 相似度檢測的正確率較高,此時改進(jìn)算法更接近MFCC相似度的檢測效果。當(dāng)信噪比高于5 dB時,改進(jìn)算法與C0復(fù)雜度算法性能接近,端點檢測的正確度要高于MFCC相似度算法。
3 結(jié) 語
本文提出了一種基于C0復(fù)雜度與MFCC 相似度的端點檢測算法。 MFCC參數(shù)很好地描述了人耳的聽覺機制,能夠很好地區(qū)分語音和噪聲,其具有較強的穩(wěn)定性以及抗噪性。然而基于MFCC相似度的端點檢測算法準(zhǔn)確率并不高,特別是當(dāng)信噪比提高后未有顯著提升。而基于C0復(fù)雜度的端點檢測算法在高信噪比的情況下具有較高的檢驗率。MFCC相似度與C0復(fù)雜度兩種特征的結(jié)合,彌補了它們單一使用時的不足,提高了語音的檢測率及算法的穩(wěn)定性。實驗結(jié)果表明,該算法性能良好,在多種信噪比下均有良好的表現(xiàn)。
參考文獻(xiàn)
[1] 朱曉晶,侯旭初,崔慧娟,等.基于LPCC和能量熵的端點檢測[J].電訊技術(shù),2010,50(6):41?45.
[2] 劉榮,劉珩.低信噪比下基于功率譜上的語音端點檢測算法[J].計算機工程與應(yīng)用,2009,45(33):122?124.
[3] 李玉萍,樸春俊,韓永成.一種帶噪語音信號端點檢測方法研究[J].電子測試,2008(2):14?17.
[4] 馬靜霞.帶噪語音端點檢測方法的研究[D].秦皇島:燕山大學(xué),2007.
[5] 范影樂,武傳燕,李軼,等.基于C0復(fù)雜度的語音端點檢測技術(shù)研究[J].傳感技術(shù)學(xué)報,2006,19(3):750?753.
[6] 王綱金,趙歡,胡煉.基于小波變換C0復(fù)雜度的語音端點檢測方法[J].計算機工程與應(yīng)用,2010,46(29):134?136.
[7] 蔡志杰,孫潔.改進(jìn)的C0復(fù)雜度及其應(yīng)用[J].復(fù)旦學(xué)報:自然科學(xué)版,2008,47(6):791?796.
[8] 王宏志,徐玉超,李美靜.基于Mel頻率倒譜參數(shù)相似度的語音端點檢測算法[J].吉林大學(xué)學(xué)報:工學(xué)版,2012,42(5):1331?1335.
[9] 趙力.語音信號處理[M].北京:機械工業(yè)出版社,2009.
[10] 鄧瑞,肖純智,高勇.基于MFCC相似度和譜熵的端點檢測算法[J].現(xiàn)代電子技術(shù),2013,36(21):67?69.