張立偉 賈 沖 張雄偉 閔 剛,2 曾 理
(1.解放軍理工大學(xué)指揮信息系統(tǒng)學(xué)院,南京,210016;2.西安通信學(xué)院基礎(chǔ)部,西安,710106)
語音增強(qiáng)是語音信號(hào)處理中的重要領(lǐng)域,其主要目的是從帶噪語音信號(hào)中盡可能提取純凈的原始語音或原始語音參數(shù),在語音編碼、語音識(shí)別和聽覺輔助等領(lǐng)域具有重要的應(yīng)用價(jià)值。20世紀(jì)70年代以后,隨著數(shù)字信號(hào)處理理論的發(fā)展成熟,人們開始采用信號(hào)處理的方法研究和實(shí)現(xiàn)語音增強(qiáng)問題。最具代表性的算法是Boll提出的譜減法(Spectral subtraction,SS)[1],其思想簡(jiǎn)單直觀、易于實(shí)現(xiàn),但該方法假設(shè)在有聲段噪聲是固定的,且依賴話音激活檢測(cè)技術(shù)(Voice activity detection,VAD),在非平穩(wěn)噪聲環(huán)境和低信噪比條件下,效果并不理想。多帶譜減法(Multi-band spectral subtraction,MSS)是將噪聲頻譜劃分為互不重疊的頻帶,分別在不同頻帶采用不同的譜減參數(shù)進(jìn)行增強(qiáng)處理[2]。該算法效果要明顯好于傳統(tǒng)譜減法,但仍需要VAD過程?;诜秦?fù)矩陣分解(Nonnegative matrix factorization,NMF)[3]的語音增強(qiáng)算法是通過訓(xùn)練構(gòu)造語音和噪聲的字典并將其組合成一個(gè)聯(lián)合字典,利用非負(fù)矩陣分解更新帶噪語音在聯(lián)合字典下的投影系數(shù),實(shí)現(xiàn)語音和噪聲的分離。然而,非負(fù)矩陣分解算法只是在頻域進(jìn)行字典學(xué)習(xí),學(xué)習(xí)得到的字典中的原子通常只是一維信號(hào),缺乏有效表征原始信號(hào)的結(jié)構(gòu)特征,也沒有考慮幀與幀之間的相關(guān)性。針對(duì)上述不足,Smaragdis提出一種新的矩陣分解算法——卷積非負(fù)矩陣分解(Convolutive nonnegative matrix factorization,CNMF)[4]。 利 用 CNMF 算 法 分 解 語 音 信號(hào),得到的時(shí)頻字典能夠更好地保留語音信號(hào)中的個(gè)人特征信息及幀間相關(guān)性。孫健等率先將該算法運(yùn)用到語音轉(zhuǎn)換中,提出一種基于卷積非負(fù)矩陣分解的語音轉(zhuǎn)換方法[5],獲得了較好的轉(zhuǎn)換效果。隨后,黃建軍等人將該算法運(yùn)用到語音增強(qiáng)中,提出了一種時(shí)頻學(xué)習(xí)單通道語音增強(qiáng)算法[6]。雖然該算法取得了較好的增強(qiáng)效果,但是對(duì)語音信號(hào)中的一些時(shí)頻特征描述仍不夠完善。本文在卷積非負(fù)矩陣分解的基礎(chǔ)上,考慮到語音信號(hào)在時(shí)頻域的稀疏性,提出了基于稀疏卷積非負(fù)矩陣分解(Sparse convolutive nonnegative matrix factorization,SCNMF)的語音增強(qiáng)算法。
卷積非負(fù)矩陣分解是非負(fù)矩陣分解的二維擴(kuò)展,可以用如下數(shù)學(xué)模型來表示
式中:V∈R≥0,L×N為待分解的矩陣;W(t)∈R≥0,L×R和H∈R≥0,R×N分別為時(shí)頻原子和相應(yīng)的時(shí)變?cè)鲆嫦禂?shù);()運(yùn)算符表示向右移動(dòng)矩陣i列并將最左邊的i列補(bǔ)零。CNMF的數(shù)學(xué)模型可以理解為用非負(fù)矩陣集W和非負(fù)矩陣H的卷積來表示待分解非負(fù)矩陣V,故稱為卷積非負(fù)矩陣分解。CNMF的目標(biāo)就是尋找一系列的非負(fù)矩陣W(t)和H,使其卷積的結(jié)果盡可能地逼近矩陣V。使用KL散度作為目標(biāo)函數(shù)即
式中:V為V的估計(jì)
KL散度是在泊松噪聲假設(shè)條件下求解非負(fù)矩陣W(t)和H的最大對(duì)數(shù)似然解[3],用于描述與V的逼近程度。通過對(duì)目標(biāo)函數(shù)的優(yōu)化可以得到乘性迭代規(guī)則[4]
式中:?為矩陣元素相乘運(yùn)算符;E為元素都為1的矩陣。
由于語音信號(hào)在時(shí)頻域存在稀疏性,因此采用稀疏非負(fù)矩陣分解算法能夠更好地反映語音的這種特征,且該算法收斂速度快,存儲(chǔ)空間?。?]。Paul等在CNMF算法中加入稀疏性約束,即對(duì)編碼矩陣H進(jìn)行稀疏性約束[8],得到的時(shí)頻字典W(t)能夠更為詳細(xì)地包含語音的特征信息。通過控制H的稀疏度可以使W(t)成為過完備時(shí)頻字典。對(duì)H進(jìn)行稀疏性約束,式(2)可以改寫為
式中λ為稀疏因子,用于控制編碼矩陣的稀疏性和重構(gòu)時(shí)語音的失真度。
增加稀疏性約束后帶來一個(gè)新問題:增加的稀疏約束項(xiàng)λH是單調(diào)遞增函數(shù),當(dāng)W(t)增大,H減小時(shí),(W(t)→αW(t),H(t)→(1/α)H(t),其中α≥1),目標(biāo)函數(shù)值將會(huì)減小。在這種情況下,等式右邊的第一項(xiàng)并不會(huì)受到影響,而第二項(xiàng)則會(huì)減小,必然導(dǎo)致W(t)的元素值趨于無窮大,H的元素值趨于零。因此,為了控制W(t)和H中元素值大小,需要引入另一個(gè)約束條件,即令‖W(t)‖2實(shí)現(xiàn)歸一化。
與CNMF算法的乘性迭代規(guī)則相似,利用梯度下降法對(duì)目標(biāo)函數(shù)(5)優(yōu)化可以得到如下的乘性迭代規(guī)則[7]
SCNMF算法中對(duì)W(t)和H的求解采用迭代求解方式,具體過程如下:
(1)開始;
(2)初始化W(t)和H;
(3)重復(fù);
(4)k←k+1;
(8)結(jié)束:最終得到W(t)和H。
取TIMIT標(biāo)準(zhǔn)語音庫(kù)中“SA1”純凈語音,通過短時(shí)傅里葉變換(Short-time Fourier transform,STFT)得到幅度譜V。當(dāng)語音字典原子數(shù)目R=40,時(shí)間跨度T=8,稀疏因子λ=0.05時(shí),通過CNMF和SCNMF算法分別對(duì)V進(jìn)行分解,結(jié)果如圖1所示。
通過圖1,可以看出SCNMF算法相對(duì)于CNMF算法,更多地保留了信號(hào)的特征信息,特別是中高頻段的信息,并將這些信息反映在時(shí)頻字典上,如圖1(c,e)所示。正是由于采用SCNMF算法對(duì)語音信號(hào)分解時(shí)生成了過完備時(shí)頻字典,使得其時(shí)變?cè)鲆嫦噍^于CNMF算法而言更加稀疏,如圖1(d,f)所示。根據(jù)信號(hào)稀疏表示原理,信號(hào)表示得越稀疏,分離去噪效果越好,同時(shí)也會(huì)造成更多的語音失真[9]。盡管CNMF算法分離的時(shí)變?cè)鲆嬉簿哂邢∈栊?,但是相?duì)而言,SCNMF算法中加入了稀疏因子λ,通過調(diào)整λ的取值,能夠在去除殘余噪聲和減小語音失真方面得到折中,從而能得到更加準(zhǔn)確的增強(qiáng)語音。
圖1 “SA1”純凈語音及其時(shí)頻譜以及分別用CNMF和SCNMF算法分解得到的時(shí)頻字典和時(shí)變?cè)鲆鍲ig.1 Waveforms and spectrograms of speech″SA1″,and basis matrices and coefficient matrices factorized from″SA1″using CNMF and SCNMF algorithms respectively
與傳統(tǒng)的基于字典學(xué)習(xí)的語音增強(qiáng)算法相似,本文提出的基于稀疏卷積非負(fù)矩陣分解的語音增強(qiáng)算法分為字典學(xué)習(xí)和增強(qiáng)兩部分。假設(shè)語音信號(hào)和噪聲信號(hào)均為加性信號(hào),則帶噪語音信號(hào)y(t)可以表示為
式中:s(t)為純凈語音信號(hào);n(t)為噪聲信號(hào),二者相互獨(dú)立。算法可劃分為學(xué)習(xí)和增強(qiáng)兩個(gè)階段,總體框架如圖2所示。
圖2 SCNMF語音增強(qiáng)算法總體框架Fig.2 Framework of speech enhancement based on SCNMF algorithm
字典學(xué)習(xí)階段:首先通過STFT得到純凈語音和噪聲的幅度譜,然后利用稀疏卷積非負(fù)矩陣分解算法分別將純凈語音和噪聲幅度譜分解為過完備時(shí)頻字典Ws,Wn和時(shí)變?cè)鲆鍴s,Hn,將過完備時(shí)頻字典Ws和Wn保存下來作為增強(qiáng)階段的先驗(yàn)信息。
增強(qiáng)階段:通過STFT得到帶噪語音幅度譜,將幅度譜作為稀疏卷積非負(fù)矩陣分解的輸入,用訓(xùn)練階段保存的純凈語音和噪聲過完備時(shí)頻字典Ws和Wn作為先驗(yàn)信息,通過分解得到語音的時(shí)變?cè)鲆鍴s和噪聲時(shí)變?cè)鲆鍴n。在重構(gòu)出語音和噪聲的幅度譜之后,運(yùn)用逆STFT分析得到增強(qiáng)后的語音信號(hào)。
本節(jié)將通過實(shí)驗(yàn)仿真,首先討論稀疏因子對(duì)SCNMF算法的影響,從中找出稀疏因子λ的最優(yōu)值。然后,再將本文提出的語音增強(qiáng)算法與多帶譜減法、基于NMF和CNMF的語音增強(qiáng)算法進(jìn)行比較,評(píng)估本文算法的性能。
從1.1節(jié)中可知,影響CNMF算法增強(qiáng)效果主要有2個(gè)參數(shù),即語音字典原子數(shù)目R和時(shí)間跨度T。在實(shí)驗(yàn)中發(fā)現(xiàn),40個(gè)時(shí)頻原子就足夠描述語音的聲學(xué)特征,更多的原子數(shù)目會(huì)增強(qiáng)算法計(jì)算量,性能提升卻很有限,因此語音字典原子數(shù)目R設(shè)置為40個(gè)。與文獻(xiàn)[6]中的參數(shù)設(shè)置一致,在這里時(shí)間跨度T=8。而對(duì)于SCNMF算法,影響其增強(qiáng)效果主要有3個(gè)參數(shù),即語音字典原子數(shù)目R、時(shí)間跨度T和稀疏因子λ。R和T的選取,根據(jù)CNMF算法中的取值不變,本節(jié)主要討論稀疏因子λ的選取。根據(jù)文獻(xiàn)[7]可知,稀疏因子λ為大于零的實(shí)數(shù),它主要用于調(diào)節(jié)算法總體誤差和稀疏度的關(guān)系。其取值越大,時(shí)變?cè)鲆婢仃嘓越稀疏,反之亦然。由1.3節(jié)可知,時(shí)變?cè)鲆婢仃嘓的稀疏度與增強(qiáng)后得到的語音質(zhì)量具有緊密聯(lián)系。λ值越大,H越稀疏,則增強(qiáng)后的語音將包含更少的殘余噪聲。但是,H越稀疏在增強(qiáng)過程中將會(huì)有更多的語音成分丟失,從而造成更大的語音失真。為了實(shí)現(xiàn)對(duì)語音失真和殘留噪聲之間的權(quán)衡,得到更好的增強(qiáng)效果,本節(jié)設(shè)計(jì)了以下實(shí)驗(yàn),在總體性能最優(yōu)的條件下對(duì)稀疏因子λ進(jìn)行優(yōu)化選擇。
實(shí)驗(yàn)中,將純凈語音中分別加入F16,M109,Babble三種典型噪聲,分別得到信噪比為-5,0,5,10dB的帶噪語音。獲取帶噪語音的時(shí)頻譜時(shí)采用Hamming窗函數(shù),窗長(zhǎng)512,幀移256。在3.2節(jié)的算法性能比較時(shí)采用同樣的參數(shù)設(shè)置。稀疏因子λ的取值范圍設(shè)定為[0,1]。在實(shí)驗(yàn)中發(fā)現(xiàn),算法性能在λ較小時(shí)比較敏感,因此λ步長(zhǎng)采用不等間隔,在[0,0.1]時(shí)采取較小步長(zhǎng)(0.01),在[0.1,1]時(shí)采取較大步長(zhǎng)(0.1)。對(duì)數(shù)頻譜距離(Log-spectral distance,LSD)反映了語音頻譜失真的度量,LSD值越小,說明算法的增強(qiáng)效果越好。因此本文采用LSD測(cè)度作為參數(shù)優(yōu)化過程中的評(píng)價(jià)指標(biāo)。
圖3-5曲線為所有實(shí)驗(yàn)后得到的LSD值。顯然,對(duì)于不同信噪比,在[0,0.05]區(qū)間,LSD 值先上升而后降至最低點(diǎn),在[0.05,1]區(qū)間,LSD值上升至一定程度逐漸趨于平穩(wěn)(當(dāng)然存在個(gè)別奇異點(diǎn),這里不再考慮)。這一結(jié)果表明在不同信噪比下λ=0.05是一個(gè)較理想的最優(yōu)值。
圖3 混入F16噪聲時(shí)稀疏因子λ對(duì)算法性能影響Fig.3 Performance of the algorithm affected by sparse factorλmixed with F16noise
圖4 混入M109噪聲時(shí)稀疏因子λ對(duì)算法性能影響Fig.4 Performance of the algorithm affected by sparse factorλmixed with M109noise
圖5 混入Babble噪聲時(shí)稀疏因子λ對(duì)算法性能影響Fig.5 Performance of the algorithm affected by sparse factorλmixed with Babble noise
為了驗(yàn)證本文算法的有效性,將其與多帶譜減法、基于NMF和CNMF的語音增強(qiáng)算法進(jìn)行比較。實(shí)驗(yàn)中,取純凈語音為8kHz采樣、16b量化的標(biāo)準(zhǔn)女聲信號(hào)。噪聲取自Noisex-92噪聲庫(kù)中的F16飛機(jī)噪聲、M109坦克噪聲和Babble噪聲。通過MATLAB將純凈語音信號(hào)與噪聲信號(hào)進(jìn)行混合,分別生成信噪比為-5,0,5,10dB的帶噪語音。
本文采用3.1節(jié)所述的對(duì)數(shù)頻譜距離LSD和客觀質(zhì)量評(píng)估方法(Perceptual evaluation of speech quality,PESQ)對(duì)語音增強(qiáng)算法的性能進(jìn)行比較。PESQ取自2001年國(guó)際電信聯(lián)盟(ITUT)推出的P.862標(biāo)準(zhǔn),用來評(píng)價(jià)語音的主觀試聽效果,能夠很好地反映語音信號(hào)的感知質(zhì)量,PESQ得分越高表示增強(qiáng)效果越好。
表1-2分別給出了4種算法在不同信噪比條件下增強(qiáng)語音的LSD值和PESQ值的比較情況,由表可以看出,相對(duì)于多帶譜減法、基于NMF和CNMF的語音增強(qiáng)算法,本文提出的基于SCNMF的語音增強(qiáng)算法具有更好的增強(qiáng)效果。
同時(shí)可以看出,當(dāng)在低信噪比情況下,本文提出的基于SCNMF的語音增強(qiáng)算法較其他3種算法優(yōu)勢(shì)更加明顯,而在高信噪比情況下,本文的算法提升性能效果不明顯。這是由于在低信噪比情況下,相對(duì)于其他3種算法,基于SCNMF的語音增強(qiáng)算法分解得到的過完備時(shí)頻字典能夠在充分去除殘余噪聲的條件下,更多地保留語音成分。
最后,對(duì)本文所提出算法的復(fù)雜度進(jìn)行簡(jiǎn)單分析。本文算法的計(jì)算量包括STFT、語音過完備時(shí)頻字典與時(shí)變?cè)鲆娓潞湍娑虝r(shí)傅里葉變換(ISTFT)。,由SCNMF算法的迭代流程可知,整個(gè)算法的計(jì)算量主要集中在過完備時(shí)頻字典和時(shí)變?cè)鲆娴牡蠼?,即式?-7)的矩陣運(yùn)算上。設(shè)帶噪語音幅度譜頻率點(diǎn)數(shù)為L(zhǎng)和整個(gè)語音幀數(shù)目為N,為矩陣分解的秩為R,時(shí)頻原子大小為T,根據(jù)文獻(xiàn)[4]分析,CNMF的時(shí)間復(fù)雜度為O(TLNR),而本文算法的時(shí)間復(fù)雜度與CNMF算法處于同一級(jí)別,因此其時(shí)間復(fù)雜度也是O(TLNR)。
表1 增強(qiáng)語音的對(duì)數(shù)譜失真Table 1 LSD of enhanced speech
表2 增強(qiáng)語音的PESQ得分Table 2 PESQ of enhanced speech
本文提出了一種基于SCNMF的語音增強(qiáng)算法,該算法通過訓(xùn)練得到的先驗(yàn)知識(shí)對(duì)帶噪語音進(jìn)行增強(qiáng)。實(shí)驗(yàn)表明,在非平穩(wěn)噪聲和低信噪比條件下,相對(duì)于傳統(tǒng)的增強(qiáng)算法,在不提升算法復(fù)雜度的同時(shí)能夠更好地抑制背景噪聲,取得了良好的增強(qiáng)效果。雖然本文提出的方法較傳統(tǒng)的增強(qiáng)算法有一定的改進(jìn),但基于SCNMF的語音增強(qiáng)方法仍存在一些不足:部分參數(shù)值的選取依賴于實(shí)驗(yàn)結(jié)果或經(jīng)驗(yàn)值,特別是本文對(duì)于稀疏因子的選取,缺乏理論驗(yàn)證;本文方法在字典學(xué)習(xí)階段仍然需要語音信息,這在一定程度上制約了算法的適用范圍。在今后的工作中,將以上述問題為方向,對(duì)語音增強(qiáng)算法進(jìn)一步進(jìn)行研究和改進(jìn)。
[1]Boll S.Suppression of acoustic noise in speech using spectral subtraction[J].IEEE Transactions on A-coustics Speech,and Signal Processing,1979,27(2):113-120.
[2]Kamath S,Loizou P.A multi-band spectral subtraction method for enhancing speech corrupted by colored noise[J].IEEE Trans Acoust,Speech Signal Process,2002,8(4):164-168.
[3]Lee D D,Seung H S.Learning the parts of objects by non-negative matrix factorization[J].Nature,1999,401(10):788-791.
[4]Smaragdis P.Convolutive speech bases and their application to supervised speech separation[J].IEEE Trans on Audio,Speech and Language Processing,2007,15(1):1-12.
[5]孫健,張雄偉,曹鐵勇,等.基于卷積非負(fù)矩陣分解的語音轉(zhuǎn)換方法[J].數(shù)據(jù)采集與處理,2013,28(2):141-148.
Sun Jian,Zhang Xiongwei,Cao Tieyong,et al.Voice conversion based on convolutive nonnegative matrix factorization[J].Journal of Data Acquisition and Processing,2013,28(2):141-148.
[6]黃建軍,張雄偉,張亞非,等.時(shí)頻學(xué)習(xí)單通道語音增強(qiáng)算法[J].聲學(xué)學(xué)報(bào),2012,35(5):539-547.
Huang Jianjun,Zhang Xiongwei,Zhang Yafei,et al.Single channel speech enhancement via time-frequency dictionary learning[J].Acta Acustica,2012,35(5):539-547.
[7]Ohoyer P.Non-negative matrix factorization with sparseness constraints[J].Journal of Machine Learning Research,2004(5):1457-1469.
[8]O′Grady P D,Pearlmutter B A.Convolutive non-negative matrix factorization with sparseness constraint[C]∥International Workshop on Machine Learning for Signal Processing.Maynooth,Ireland:IEEE,2006:427-432.
[9]Zibulevsky M,Pearlmutter B A.Blind source separation by sparse decomposition in a signal dictionary[J].Neu Comp,2001,13(4):863-882.