黃 玲,李 琳,王 薇,易才欽,郭東輝
(廈門大學信息科學與技術(shù)學院,福建 廈門361005)
語音信號增強是指從帶噪信號中獲取有用的語音信號,抑制噪聲干擾,提升語音自然度和清晰度,常用的語音增強方法有譜減法[1]、小波閾值法[2]、卡爾曼濾波法[3]等.近年來,基于信號稀疏表示的語音增強算法[4]也受到廣泛關(guān)注.
基于冗余字典的信號稀疏表示方法最早由Mallat和Zhang提出,一個可壓縮信號在某一空間上可用極少的觀測樣本信號以高概率重構(gòu).基于信號的稀疏表示進行信號壓縮、圖像增強、語音增強、人臉識別等信號處理[4-6],已取得了較好的成果.稀疏表示方法主要分為兩個部分,冗余字典的構(gòu)建和目標函數(shù)的優(yōu)化.Zhang等[7]通過實驗證明,稀疏表示方法改善信號處理性能的關(guān)鍵在于冗余字典的構(gòu)建.目前主要有2種字典構(gòu)建方法:固定字典法和字典訓練法[8-10].但這兩種方法訓練出的字典前者對信號的自適應(yīng)性不佳,后者結(jié)構(gòu)松散,字典規(guī)模受限,且運算量大.
為了解決上述問題,Rubinstein等[11]提出了一種新的字典學習方法——Sparse K-SVD算法,對冗余字典D進一步進行稀疏分解,使用小波變換或離散余弦變換建立一個基字典B,并尋找一個稀疏表示系數(shù)矩陣A,使得D=BA.Sparse K-SVD算法通過對字典的稀疏表示,使得字典D具有良好的自適應(yīng)性,同時降低了字典構(gòu)建的計算復雜度,能夠得到一個結(jié)構(gòu)緊密的字典,利于進行更高維度、更大規(guī)模信號的稀疏表示.
本文提出一種基于稀疏表示的語音增強算法,采用Sparse K-SVD算法訓練自適應(yīng)的冗余字典,再應(yīng)用正交匹配追蹤(OMP)算法進行稀疏編碼來重構(gòu)純凈語音.在主觀質(zhì)量和客觀指標上,基于稀疏表示的語音增強方法(分別使用Sparse K-SVD算法和K-SVD算法訓練字典)比傳統(tǒng)語音增強方法(小波法、譜減法、改進譜減法)獲得更優(yōu)的性能.在字典訓練時間方面進行分析發(fā)現(xiàn),相對于K-SVD字典訓練算法,Sparse KSVD算法大幅度提高了計算效率.
任意長度為N的一維離散語音信號Y∈RN,通過冗余字典D∈RN×K可稀疏表示為:
式中:α為信號的稀疏表示系數(shù),為K×1的向量,dk為給定冗余字典D中的一個原子,αk為α向量中與dk相對應(yīng)的值.語音信號的稀疏表示是從冗余字典中選擇具有最佳線性組合的若干原子來表示信號,實際上是一種逼近過程.從稀疏逼近角度出發(fā),希望在逼近殘差達到最小的情況下得到α最稀疏的一個解.這等同于解決下述問題[12]:
式中:‖‖0是l0范數(shù),即不為零的元素個數(shù),表示Frobenius范數(shù)的平方.
考慮語音噪聲為加性噪聲,其帶噪語音模型如下:
其中,Y為帶噪語音,X為原始語音,n為噪聲.根據(jù)式(2)從冗余字典D中選取最佳線性組合的若干原子來表示帶噪信號Y,當逼近殘差足夠小時,利用式(2)求解的稀疏表示矩陣,通過重構(gòu)的和原始信號X近似,從而把純凈信號從帶噪語音中分離出來,實現(xiàn)整個語音信號的增強.對于一個冗余字典D,式(2)的求解是個稀疏分解的過程.本文采用正交匹配追蹤(OMP)算法進行稀疏分解,從而減少迭代次數(shù).
Sparse K-SVD算法是在K-SVD算法的基礎(chǔ)上,將字典D中原子由基字典稀疏表示:D=BA,其中B是基字典,A是字典稀疏表示的系數(shù)矩陣.用Y,Γ分別為訓練信號和訓練信號的稀疏表示.從線性組合角度看,Sparse K-SVD算法是在式(2)的基礎(chǔ)上,構(gòu)建一個目標函數(shù),針對目標函數(shù)進行最優(yōu)化求解.其目標函數(shù)可表示為[11]:
其中,αi,?j分別是Γ和A的任意列向量,t,p分別是αi和?j中非零元素的個數(shù).
字典的更新是逐列進行的.首先,假設(shè)系數(shù)矩陣Γ和字典D都是固定的,將要更新字典的第k列為dk,令系數(shù)矩陣Γ的第k行為αk,dk=B?k,?k為矩陣A的第k列,此時,式(4)中的懲罰項可表示為:
上式中,乘積BAΓ被分解成N個矩陣和.每次逐列更新字典時,式(5)中項是固定的,所剩的一項,也就是要處理的第k項B?k0αk0.矩陣Ek0代表去掉原子dk的成分所造成的誤差.直接更新?k0和αk0,得到的更新后的αk0是滿向量,使得更新后的αk0中非零元素的位置和數(shù)量和未更新前的位置和數(shù)量不同,會出現(xiàn)發(fā)散.為了解決此問題,僅保留αk0中的非零值.因此,目標函數(shù)變?yōu)椋?/p>
其中,Ek和αk分別是Ek0和αk0去掉零輸入后收縮的結(jié)果.對于上式的第二個限制條件可在?kαk保持不變時,通過調(diào)整?k和αk的能量來滿足.因此,式(6)可簡化為;
接著優(yōu)化αk:
從而式(7)可改寫為:
式(10)與式(2)結(jié)構(gòu)相似,Ekαk相當于式(2)中的Y,B相當于式(2)中的D.因此,問題變得更簡單,方便計算.Sparse K-SVD算法完整的算法步驟如下所示:
輸入:信號Y,基字典B,初始字典A.目標原子的稀疏度t,目標信號的稀疏度p,迭代次數(shù)L.
輸出:字典的稀疏表示矩陣A,信號的稀疏表示矩陣Γ.
步驟:初始化:A=A0
Ekαk=(XI-BAΓI)αk(I為信號Y中用來表示αk的索引號)
本文利用語音信號的稀疏性,進行語音增強處理,采用Sparse K-SVD算法訓練冗余字典,式(2)可改寫為:
B是固定的基字典,很明顯上式中有兩個是未知的:字典的稀疏表示矩陣A和信號的稀疏表示矩陣Γ.
首先對帶噪語音初始化,用冗余余弦字典初始化基字典B,用單位矩陣初始化A,利用OMP算法可以尋找到一個最優(yōu)的Γ.然后,再通過Sparse K-SVD算法訓練得到字典稀疏表示的系數(shù)矩陣A.不斷迭代優(yōu)化A和Γ,具體步驟如下所示:
1)初始化
對帶噪語音進行分幀,幀長為N(如N=128),同時構(gòu)建一個冗余的余弦基字典B,這個基字典的大小為N×4N,A矩陣的初始值為單位矩陣.
2)稀疏編碼
先假設(shè)BA是固定的,根據(jù)式(11)求解每幀信號稀疏系數(shù)矩陣.然后再利用OMP算法不斷優(yōu)化Γ,直到的值小于ε為止.
3)訓練字典
每次更新A中的一個原子,在更新A的同時,也更新了信號稀疏表示的系數(shù)矩陣Γ.根據(jù)Sparse KSVD算法,用大量的幀長為M的語音訓練字典系數(shù)A.由于A是字典D的稀疏表示系數(shù),需要更新的原子數(shù)量相較于K-SVD算法大幅度減少.
4)語音重構(gòu)
利用更新后的字典D=BA和Γ,根據(jù)^Y=D^α一幀一幀地重構(gòu)原始語音信號.然后,對每幀重疊的部分采用均值化處理,從而實現(xiàn)整個語音信號的增強.
為了評價本文所提出的基于稀疏表示的語音信號增強方法的性能,本文對疊加高斯白噪聲后,信噪比分別為-5,0,5,10,15dB的帶噪語音進行主觀質(zhì)量和客觀指標上的測試.本實驗所用的原始語音文件來自NOIZEUS語音庫[12],下面實驗除波形觀察外,其他結(jié)果都是對NOIZEUS語音庫里30個語音文件實驗后所得的平均結(jié)果.實驗的硬件平臺為戴爾Inspiron1440型號PC機(2.2GHz主頻),軟件平臺為MATLAB R2009b.本文所采用的基于Sparse K-SVD算法的語音增強方法和基于K-SVD算法的語音增強方法都是對帶噪語音逐幀進行增強.每幀幀長128個樣點,幀間重疊1個樣點.K-SVD算法的初始字典是一個冗余的DCT字典,而在Sparse K-SVD算法中,也采用冗余的DCT字典作為基字典B,并把初始A矩陣設(shè)為單位矩陣.稀疏優(yōu)化停止的條件是平均誤差小于閾值ε.實驗表明,當ε=1.12σ時有更好的性能,這里的σ表示噪聲的標準差.
隨機選取NOIZEUS語音庫中的一段語音“sp04.wav”,采樣頻率為8kHz,字長為16bit,其波形圖如圖1(a)所示.疊加信噪比為0dB的高斯白噪聲,得到信噪比為0dB的帶噪語音(圖1(b)).采用不同方法進行語音增強后的波形圖如圖1所示.
圖1 sp04.wav的波形圖Fig.1 Waveform of sp04.wav
由圖1可知:1)被嚴重污染的帶噪語音,經(jīng)過基于稀疏表示的方法去噪后如圖1(f)和(g)所示,噪聲被大量消除,并且能很好地恢復原始語音的信息,而傳統(tǒng)的語音增強方法(如圖1(c)~(e)所示)去噪后還殘留著許多未被消除的噪聲;2)采用Sparse K-SVD算法的語音增強方法和采用K-SVD算法的一樣有良好的降噪性能.另外,聽音結(jié)果也顯示基于稀疏表示的去噪結(jié)果能很好地分辨出原始語音信號,可懂度和清晰度均良好,而傳統(tǒng)方法去噪結(jié)果的清晰度受到影響.
信號近似的準確率可以用重構(gòu)誤差ε來評價,它的定義如下式所示:
其中,s′(i)為增強語音的第i幀信號,s(i)為原始語音的第i幀信號.增強后的信號如果越接近原始信號,則ε的值越小.不同方法進行增強的重構(gòu)誤差如圖2所示.從圖2可知,當帶噪語音的信噪比從-5dB變化到15 dB時,采用基于稀疏表示的增強方法(采用Sparse KSVD算法和采用KSVD算法)的重構(gòu)誤差很接近,都比傳統(tǒng)增強方法的重構(gòu)誤差低.當疊加的噪聲強度越大時,不同增強方法重構(gòu)誤差的差異就越明顯.
圖2 重構(gòu)誤差比較圖Fig.2 Comparison of reconstruction error
本文還從信噪比和語音質(zhì)量兩個方面對不同增強方法的性能進行了對比,分別如表1和2所示.其中信噪比的定義如下:
表1 采用不同方法增強后信噪比的比較Tab.1 Output SNR for different enhancement methods dB
表2 采用不同方法增強后語音質(zhì)量的比較Tab.2 PESQ scores for different enhancement methods
式中,s′(i)為增強語音的第i幀信號,s(i)為原始語音的第i幀信號.由表1可知,當帶噪語音的原始信噪比從-5dB變化到15dB時,這幾種增強方法在一定程度上都提高了信噪比和語音質(zhì)量.不過,基于稀疏表示的增強算法(采用 K-SVD算法或Sparse K-SVD算法)的性能提高得更顯著.
對采用不同字典訓練算法(K-SVD和Sparse KSVD)的信號增強效果進行比較,基于Sparse K-SVD的稀疏表示法和基于K-SVD的稀疏表示法的增強性能不相上下.
對幾種語音增強方法的計算時間進行了統(tǒng)計,如表3所示,可知,小波閾值法的計算時間最短,譜減法和改進譜減法的次之,而基于稀疏表示的語音增強方法(分別使用Sparse K-SVD算法和K-SVD算法訓練字典)則消耗較長的時間.這是由于基于稀疏表示的語音增強方法訓練大規(guī)模的字典(如字典原子數(shù)為512)耗時較長.由本文4.1節(jié)和4.2節(jié)的實驗結(jié)果可知,在主觀質(zhì)量和客觀指標上,采用Sparse K-SVD算法和K-SVD算法的語音增強性能都優(yōu)于傳統(tǒng)的語音增強方法.可見,語音增強處理中增強質(zhì)量和計算時間是個權(quán)衡關(guān)系,需根據(jù)實際需求選擇合適的語音增強方法.
表3 語音增強方法計算時間的比較Tab.3 Time consumption for different enhancement methods
表3顯示在相同噪聲等級下,Sparse K-SVD算法訓練字典的計算效率遠高于K-SVD算法.尤其在15 dB噪聲環(huán)境下,Sparse K-SVD算法的計算速度提高了二十幾倍.可知,與K-SVD學習字典方法相比,基于Sparse K-SVD學習字典的語音增強算法能夠在保證語音增強性能的前提下大幅度節(jié)省計算時間.
本文基于語音信號的稀疏表示理論,提出了一種采用Sparse K-SVD算法訓練冗余字典的語音增強方法,不僅進一步優(yōu)化了語音增強性能而且提高了計算效率.采用Sparse K-SVD算法訓練出的字典結(jié)構(gòu)緊湊,可用于處理大規(guī)模的語音數(shù)據(jù).基于Sparse K-SVD的稀疏表示方法不僅可實現(xiàn)語音增強,還適合于其他的信號處理應(yīng)用,如說話人識別、人臉識別、盲源分離等.
[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.