黃 玲,李 琳,王 薇,易才欽,郭東輝
(廈門(mén)大學(xué)信息科學(xué)與技術(shù)學(xué)院,福建 廈門(mén)361005)
語(yǔ)音信號(hào)增強(qiáng)是指從帶噪信號(hào)中獲取有用的語(yǔ)音信號(hào),抑制噪聲干擾,提升語(yǔ)音自然度和清晰度,常用的語(yǔ)音增強(qiáng)方法有譜減法[1]、小波閾值法[2]、卡爾曼濾波法[3]等.近年來(lái),基于信號(hào)稀疏表示的語(yǔ)音增強(qiáng)算法[4]也受到廣泛關(guān)注.
基于冗余字典的信號(hào)稀疏表示方法最早由Mallat和Zhang提出,一個(gè)可壓縮信號(hào)在某一空間上可用極少的觀測(cè)樣本信號(hào)以高概率重構(gòu).基于信號(hào)的稀疏表示進(jìn)行信號(hào)壓縮、圖像增強(qiáng)、語(yǔ)音增強(qiáng)、人臉識(shí)別等信號(hào)處理[4-6],已取得了較好的成果.稀疏表示方法主要分為兩個(gè)部分,冗余字典的構(gòu)建和目標(biāo)函數(shù)的優(yōu)化.Zhang等[7]通過(guò)實(shí)驗(yàn)證明,稀疏表示方法改善信號(hào)處理性能的關(guān)鍵在于冗余字典的構(gòu)建.目前主要有2種字典構(gòu)建方法:固定字典法和字典訓(xùn)練法[8-10].但這兩種方法訓(xùn)練出的字典前者對(duì)信號(hào)的自適應(yīng)性不佳,后者結(jié)構(gòu)松散,字典規(guī)模受限,且運(yùn)算量大.
為了解決上述問(wèn)題,Rubinstein等[11]提出了一種新的字典學(xué)習(xí)方法——Sparse K-SVD算法,對(duì)冗余字典D進(jìn)一步進(jìn)行稀疏分解,使用小波變換或離散余弦變換建立一個(gè)基字典B,并尋找一個(gè)稀疏表示系數(shù)矩陣A,使得D=BA.Sparse K-SVD算法通過(guò)對(duì)字典的稀疏表示,使得字典D具有良好的自適應(yīng)性,同時(shí)降低了字典構(gòu)建的計(jì)算復(fù)雜度,能夠得到一個(gè)結(jié)構(gòu)緊密的字典,利于進(jìn)行更高維度、更大規(guī)模信號(hào)的稀疏表示.
本文提出一種基于稀疏表示的語(yǔ)音增強(qiáng)算法,采用Sparse K-SVD算法訓(xùn)練自適應(yīng)的冗余字典,再應(yīng)用正交匹配追蹤(OMP)算法進(jìn)行稀疏編碼來(lái)重構(gòu)純凈語(yǔ)音.在主觀質(zhì)量和客觀指標(biāo)上,基于稀疏表示的語(yǔ)音增強(qiáng)方法(分別使用Sparse K-SVD算法和K-SVD算法訓(xùn)練字典)比傳統(tǒng)語(yǔ)音增強(qiáng)方法(小波法、譜減法、改進(jìn)譜減法)獲得更優(yōu)的性能.在字典訓(xùn)練時(shí)間方面進(jìn)行分析發(fā)現(xiàn),相對(duì)于K-SVD字典訓(xùn)練算法,Sparse KSVD算法大幅度提高了計(jì)算效率.
任意長(zhǎng)度為N的一維離散語(yǔ)音信號(hào)Y∈RN,通過(guò)冗余字典D∈RN×K可稀疏表示為:

式中:α為信號(hào)的稀疏表示系數(shù),為K×1的向量,dk為給定冗余字典D中的一個(gè)原子,αk為α向量中與dk相對(duì)應(yīng)的值.語(yǔ)音信號(hào)的稀疏表示是從冗余字典中選擇具有最佳線性組合的若干原子來(lái)表示信號(hào),實(shí)際上是一種逼近過(guò)程.從稀疏逼近角度出發(fā),希望在逼近殘差達(dá)到最小的情況下得到α最稀疏的一個(gè)解.這等同于解決下述問(wèn)題[12]:

式中:‖‖0是l0范數(shù),即不為零的元素個(gè)數(shù),表示Frobenius范數(shù)的平方.
考慮語(yǔ)音噪聲為加性噪聲,其帶噪語(yǔ)音模型如下:

其中,Y為帶噪語(yǔ)音,X為原始語(yǔ)音,n為噪聲.根據(jù)式(2)從冗余字典D中選取最佳線性組合的若干原子來(lái)表示帶噪信號(hào)Y,當(dāng)逼近殘差足夠小時(shí),利用式(2)求解的稀疏表示矩陣,通過(guò)重構(gòu)的和原始信號(hào)X近似,從而把純凈信號(hào)從帶噪語(yǔ)音中分離出來(lái),實(shí)現(xiàn)整個(gè)語(yǔ)音信號(hào)的增強(qiáng).對(duì)于一個(gè)冗余字典D,式(2)的求解是個(gè)稀疏分解的過(guò)程.本文采用正交匹配追蹤(OMP)算法進(jìn)行稀疏分解,從而減少迭代次數(shù).
Sparse K-SVD算法是在K-SVD算法的基礎(chǔ)上,將字典D中原子由基字典稀疏表示:D=BA,其中B是基字典,A是字典稀疏表示的系數(shù)矩陣.用Y,Γ分別為訓(xùn)練信號(hào)和訓(xùn)練信號(hào)的稀疏表示.從線性組合角度看,Sparse K-SVD算法是在式(2)的基礎(chǔ)上,構(gòu)建一個(gè)目標(biāo)函數(shù),針對(duì)目標(biāo)函數(shù)進(jìn)行最優(yōu)化求解.其目標(biāo)函數(shù)可表示為[11]:

其中,αi,?j分別是Γ和A的任意列向量,t,p分別是αi和?j中非零元素的個(gè)數(shù).
字典的更新是逐列進(jìn)行的.首先,假設(shè)系數(shù)矩陣Γ和字典D都是固定的,將要更新字典的第k列為dk,令系數(shù)矩陣Γ的第k行為αk,dk=B?k,?k為矩陣A的第k列,此時(shí),式(4)中的懲罰項(xiàng)可表示為:

上式中,乘積BAΓ被分解成N個(gè)矩陣和.每次逐列更新字典時(shí),式(5)中項(xiàng)是固定的,所剩的一項(xiàng),也就是要處理的第k項(xiàng)B?k0αk0.矩陣Ek0代表去掉原子dk的成分所造成的誤差.直接更新?k0和αk0,得到的更新后的αk0是滿向量,使得更新后的αk0中非零元素的位置和數(shù)量和未更新前的位置和數(shù)量不同,會(huì)出現(xiàn)發(fā)散.為了解決此問(wèn)題,僅保留αk0中的非零值.因此,目標(biāo)函數(shù)變?yōu)椋?/p>

其中,Ek和αk分別是Ek0和αk0去掉零輸入后收縮的結(jié)果.對(duì)于上式的第二個(gè)限制條件可在?kαk保持不變時(shí),通過(guò)調(diào)整?k和αk的能量來(lái)滿足.因此,式(6)可簡(jiǎn)化為;

接著優(yōu)化αk:

從而式(7)可改寫(xiě)為:

式(10)與式(2)結(jié)構(gòu)相似,Ekαk相當(dāng)于式(2)中的Y,B相當(dāng)于式(2)中的D.因此,問(wèn)題變得更簡(jiǎn)單,方便計(jì)算.Sparse K-SVD算法完整的算法步驟如下所示:
輸入:信號(hào)Y,基字典B,初始字典A.目標(biāo)原子的稀疏度t,目標(biāo)信號(hào)的稀疏度p,迭代次數(shù)L.
輸出:字典的稀疏表示矩陣A,信號(hào)的稀疏表示矩陣Γ.
步驟:初始化:A=A0

Ekαk=(XI-BAΓI)αk(I為信號(hào)Y中用來(lái)表示αk的索引號(hào))

本文利用語(yǔ)音信號(hào)的稀疏性,進(jìn)行語(yǔ)音增強(qiáng)處理,采用Sparse K-SVD算法訓(xùn)練冗余字典,式(2)可改寫(xiě)為:

B是固定的基字典,很明顯上式中有兩個(gè)是未知的:字典的稀疏表示矩陣A和信號(hào)的稀疏表示矩陣Γ.
首先對(duì)帶噪語(yǔ)音初始化,用冗余余弦字典初始化基字典B,用單位矩陣初始化A,利用OMP算法可以尋找到一個(gè)最優(yōu)的Γ.然后,再通過(guò)Sparse K-SVD算法訓(xùn)練得到字典稀疏表示的系數(shù)矩陣A.不斷迭代優(yōu)化A和Γ,具體步驟如下所示:
1)初始化
對(duì)帶噪語(yǔ)音進(jìn)行分幀,幀長(zhǎng)為N(如N=128),同時(shí)構(gòu)建一個(gè)冗余的余弦基字典B,這個(gè)基字典的大小為N×4N,A矩陣的初始值為單位矩陣.
2)稀疏編碼
先假設(shè)BA是固定的,根據(jù)式(11)求解每幀信號(hào)稀疏系數(shù)矩陣.然后再利用OMP算法不斷優(yōu)化Γ,直到的值小于ε為止.
3)訓(xùn)練字典
每次更新A中的一個(gè)原子,在更新A的同時(shí),也更新了信號(hào)稀疏表示的系數(shù)矩陣Γ.根據(jù)Sparse KSVD算法,用大量的幀長(zhǎng)為M的語(yǔ)音訓(xùn)練字典系數(shù)A.由于A是字典D的稀疏表示系數(shù),需要更新的原子數(shù)量相較于K-SVD算法大幅度減少.
4)語(yǔ)音重構(gòu)
利用更新后的字典D=BA和Γ,根據(jù)^Y=D^α一幀一幀地重構(gòu)原始語(yǔ)音信號(hào).然后,對(duì)每幀重疊的部分采用均值化處理,從而實(shí)現(xiàn)整個(gè)語(yǔ)音信號(hào)的增強(qiáng).
為了評(píng)價(jià)本文所提出的基于稀疏表示的語(yǔ)音信號(hào)增強(qiáng)方法的性能,本文對(duì)疊加高斯白噪聲后,信噪比分別為-5,0,5,10,15dB的帶噪語(yǔ)音進(jìn)行主觀質(zhì)量和客觀指標(biāo)上的測(cè)試.本實(shí)驗(yàn)所用的原始語(yǔ)音文件來(lái)自NOIZEUS語(yǔ)音庫(kù)[12],下面實(shí)驗(yàn)除波形觀察外,其他結(jié)果都是對(duì)NOIZEUS語(yǔ)音庫(kù)里30個(gè)語(yǔ)音文件實(shí)驗(yàn)后所得的平均結(jié)果.實(shí)驗(yàn)的硬件平臺(tái)為戴爾Inspiron1440型號(hào)PC機(jī)(2.2GHz主頻),軟件平臺(tái)為MATLAB R2009b.本文所采用的基于Sparse K-SVD算法的語(yǔ)音增強(qiáng)方法和基于K-SVD算法的語(yǔ)音增強(qiáng)方法都是對(duì)帶噪語(yǔ)音逐幀進(jìn)行增強(qiáng).每幀幀長(zhǎng)128個(gè)樣點(diǎn),幀間重疊1個(gè)樣點(diǎn).K-SVD算法的初始字典是一個(gè)冗余的DCT字典,而在Sparse K-SVD算法中,也采用冗余的DCT字典作為基字典B,并把初始A矩陣設(shè)為單位矩陣.稀疏優(yōu)化停止的條件是平均誤差小于閾值ε.實(shí)驗(yàn)表明,當(dāng)ε=1.12σ時(shí)有更好的性能,這里的σ表示噪聲的標(biāo)準(zhǔn)差.
隨機(jī)選取NOIZEUS語(yǔ)音庫(kù)中的一段語(yǔ)音“sp04.wav”,采樣頻率為8kHz,字長(zhǎng)為16bit,其波形圖如圖1(a)所示.疊加信噪比為0dB的高斯白噪聲,得到信噪比為0dB的帶噪語(yǔ)音(圖1(b)).采用不同方法進(jìn)行語(yǔ)音增強(qiáng)后的波形圖如圖1所示.

圖1 sp04.wav的波形圖Fig.1 Waveform of sp04.wav
由圖1可知:1)被嚴(yán)重污染的帶噪語(yǔ)音,經(jīng)過(guò)基于稀疏表示的方法去噪后如圖1(f)和(g)所示,噪聲被大量消除,并且能很好地恢復(fù)原始語(yǔ)音的信息,而傳統(tǒng)的語(yǔ)音增強(qiáng)方法(如圖1(c)~(e)所示)去噪后還殘留著許多未被消除的噪聲;2)采用Sparse K-SVD算法的語(yǔ)音增強(qiáng)方法和采用K-SVD算法的一樣有良好的降噪性能.另外,聽(tīng)音結(jié)果也顯示基于稀疏表示的去噪結(jié)果能很好地分辨出原始語(yǔ)音信號(hào),可懂度和清晰度均良好,而傳統(tǒng)方法去噪結(jié)果的清晰度受到影響.
信號(hào)近似的準(zhǔn)確率可以用重構(gòu)誤差ε來(lái)評(píng)價(jià),它的定義如下式所示:

其中,s′(i)為增強(qiáng)語(yǔ)音的第i幀信號(hào),s(i)為原始語(yǔ)音的第i幀信號(hào).增強(qiáng)后的信號(hào)如果越接近原始信號(hào),則ε的值越小.不同方法進(jìn)行增強(qiáng)的重構(gòu)誤差如圖2所示.從圖2可知,當(dāng)帶噪語(yǔ)音的信噪比從-5dB變化到15 dB時(shí),采用基于稀疏表示的增強(qiáng)方法(采用Sparse KSVD算法和采用KSVD算法)的重構(gòu)誤差很接近,都比傳統(tǒng)增強(qiáng)方法的重構(gòu)誤差低.當(dāng)疊加的噪聲強(qiáng)度越大時(shí),不同增強(qiáng)方法重構(gòu)誤差的差異就越明顯.

圖2 重構(gòu)誤差比較圖Fig.2 Comparison of reconstruction error
本文還從信噪比和語(yǔ)音質(zhì)量?jī)蓚€(gè)方面對(duì)不同增強(qiáng)方法的性能進(jìn)行了對(duì)比,分別如表1和2所示.其中信噪比的定義如下:


表1 采用不同方法增強(qiáng)后信噪比的比較Tab.1 Output SNR for different enhancement methods dB

表2 采用不同方法增強(qiáng)后語(yǔ)音質(zhì)量的比較Tab.2 PESQ scores for different enhancement methods
式中,s′(i)為增強(qiáng)語(yǔ)音的第i幀信號(hào),s(i)為原始語(yǔ)音的第i幀信號(hào).由表1可知,當(dāng)帶噪語(yǔ)音的原始信噪比從-5dB變化到15dB時(shí),這幾種增強(qiáng)方法在一定程度上都提高了信噪比和語(yǔ)音質(zhì)量.不過(guò),基于稀疏表示的增強(qiáng)算法(采用 K-SVD算法或Sparse K-SVD算法)的性能提高得更顯著.
對(duì)采用不同字典訓(xùn)練算法(K-SVD和Sparse KSVD)的信號(hào)增強(qiáng)效果進(jìn)行比較,基于Sparse K-SVD的稀疏表示法和基于K-SVD的稀疏表示法的增強(qiáng)性能不相上下.
對(duì)幾種語(yǔ)音增強(qiáng)方法的計(jì)算時(shí)間進(jìn)行了統(tǒng)計(jì),如表3所示,可知,小波閾值法的計(jì)算時(shí)間最短,譜減法和改進(jìn)譜減法的次之,而基于稀疏表示的語(yǔ)音增強(qiáng)方法(分別使用Sparse K-SVD算法和K-SVD算法訓(xùn)練字典)則消耗較長(zhǎng)的時(shí)間.這是由于基于稀疏表示的語(yǔ)音增強(qiáng)方法訓(xùn)練大規(guī)模的字典(如字典原子數(shù)為512)耗時(shí)較長(zhǎng).由本文4.1節(jié)和4.2節(jié)的實(shí)驗(yàn)結(jié)果可知,在主觀質(zhì)量和客觀指標(biāo)上,采用Sparse K-SVD算法和K-SVD算法的語(yǔ)音增強(qiáng)性能都優(yōu)于傳統(tǒng)的語(yǔ)音增強(qiáng)方法.可見(jiàn),語(yǔ)音增強(qiáng)處理中增強(qiáng)質(zhì)量和計(jì)算時(shí)間是個(gè)權(quán)衡關(guān)系,需根據(jù)實(shí)際需求選擇合適的語(yǔ)音增強(qiáng)方法.

表3 語(yǔ)音增強(qiáng)方法計(jì)算時(shí)間的比較Tab.3 Time consumption for different enhancement methods
表3顯示在相同噪聲等級(jí)下,Sparse K-SVD算法訓(xùn)練字典的計(jì)算效率遠(yuǎn)高于K-SVD算法.尤其在15 dB噪聲環(huán)境下,Sparse K-SVD算法的計(jì)算速度提高了二十幾倍.可知,與K-SVD學(xué)習(xí)字典方法相比,基于Sparse K-SVD學(xué)習(xí)字典的語(yǔ)音增強(qiáng)算法能夠在保證語(yǔ)音增強(qiáng)性能的前提下大幅度節(jié)省計(jì)算時(shí)間.
本文基于語(yǔ)音信號(hào)的稀疏表示理論,提出了一種采用Sparse K-SVD算法訓(xùn)練冗余字典的語(yǔ)音增強(qiáng)方法,不僅進(jìn)一步優(yōu)化了語(yǔ)音增強(qiáng)性能而且提高了計(jì)算效率.采用Sparse K-SVD算法訓(xùn)練出的字典結(jié)構(gòu)緊湊,可用于處理大規(guī)模的語(yǔ)音數(shù)據(jù).基于Sparse K-SVD的稀疏表示方法不僅可實(shí)現(xiàn)語(yǔ)音增強(qiáng),還適合于其他的信號(hào)處理應(yīng)用,如說(shuō)話人識(shí)別、人臉識(shí)別、盲源分離等.
[1]Boll S.Suppression of acoustic noise in speech using spectral subtraction[J].IEEE Transactions on Acoust,Speech,Signal Process,1979,27(2):113-120.
[2]Vetterli M.Wavelets,approximation,and compression[J].IEEE Signal Processing Magazine,2001,18:59-73.
[3]Paliwal K,Basu A.A speech enhancement method based on Kalman filtering[J]∥IEEE International Conference on A-coustics,Speech,and Signal Processing,1987,12:177-180.
[4]Zhao N,Xu X,Yang Y.Sparse representations for speech enhancement[J].Chinese Journal of Electronics,2011,19(2):268-272.
[5]Wright J,Yang A Y,Ganesh A,et al.Robust face recognition via sparse representation[J].IEEE Transactions on Pattern Analysis and Machine Intelligence,2009,31:210-227.
[6]Elad M,Aharon M.Image denoising via sparse and redundant representations over learned dictionaries[J].IEEE Transactions on Image Processing,2006,15:3736-3745.
[7]Zhang L,Yang M,F(xiàn)eng X C.Sparse representation or collaborative representation:which helps face recognition?[C]∥2011IEEE International Conference on Computer.Barcelona:IEEE,2011:471-478.
[8]Vidal R,Ma Y,Sastry S.Generalized principal component analysis(GPCA)[J].IEEE Transactions on Image Process,2005,14(4):423-438.
[9]Engan K,Aase S O,Hakon Husoy J.Method of optimal directions for frame design[C]∥IEEE International Conference on Acoustics,Speech,and Signal Processing.Phoenix,AZ:IEEE,1999,5:2443-2446.
[10]Aharon M,Elad M,Bruckstein A.K-SVD:design of dictionaries for sparse representation[C]∥Proc of the Workshop on Signal Processing with Adaptive Sparse Structured Representations(SPARS′05).[S.l.]:SiteSeerX,2005:9-12.
[11]Rubinstein R,Zibulevsky M,Elad M.Double sparsity:learning sparse dictionaries for sparse signal approximation[J].IEEE Transactions on Signal Processing,2010,58:1553-1564.
[12]Hu Y,Loizou P.Subjective comparison of speech enhancement algorithms[C]∥2006IEEE International Conference on Acoustics,Speech,and Signal Processing.Toulouse:IEEE,2006:153-156.