郭 欣,賈海蓉,王 棟
(太原理工大學(xué) 信息工程學(xué)院,山西 太原 030024)
?
利用子空間改進(jìn)的K-SVD語音增強(qiáng)算法
郭 欣,賈海蓉,王 棟
(太原理工大學(xué) 信息工程學(xué)院,山西 太原 030024)
在低信噪比的情況下,稀疏表示無法將純凈語音完全從帶噪語音中分離出來,針對此問題提出了一種利用子空間改進(jìn)的K奇異值分解語音增強(qiáng)算法.首先,利用子空間最優(yōu)估計(jì)器跟蹤噪聲; 其次,通過K奇異值分解算法對噪聲進(jìn)行訓(xùn)練,構(gòu)建出噪聲字典; 最后,用K奇異值分解算法訓(xùn)練語音字典.在訓(xùn)練過程中,如果某個原子對應(yīng)的稀疏系數(shù)低于設(shè)定的閾值,并且該原子可在訓(xùn)練得到的噪聲字典中找到,就把該原子對應(yīng)的稀疏系數(shù)設(shè)為零,即可達(dá)到去噪的目的.仿真結(jié)果表明,改進(jìn)算法去除白噪聲和babble噪聲的效果顯著,有效提高信噪比和減少語音失真,同時(shí),該算法也可以很好地應(yīng)用于消除隨機(jī)噪聲.
語音增強(qiáng);K奇異值分解;稀疏表示;信號子空間
在實(shí)際的語音通信系統(tǒng)中,語音信號不可避免地受到噪聲的干擾.語音增強(qiáng)[1]的目的就是盡可能地從噪聲中提取出純凈的語音信號,達(dá)到改善語音信號的質(zhì)量和提高可懂度.目前平穩(wěn)噪聲及高信噪比(Signal-to-Noise Ratio,SNR)下的語音增強(qiáng)方法都能取得較好的增強(qiáng)效果,但低SNR下的語音增強(qiáng)效果不佳,嚴(yán)重影響了通信效果.因此,低SNR下的語音增強(qiáng)仍然是目前研究的熱點(diǎn)和難點(diǎn).
近年來,稀疏表示或稀疏編碼在信號處理領(lǐng)域受到了極大的關(guān)注.文獻(xiàn)[2]首次提出了過完備稀疏表示思想,構(gòu)造過完備字典主要分為兩類算法,一種是利用傳統(tǒng)基構(gòu)造字典,比如離散余弦變換(Discrete Cosine Transform,DCT)字典[3]; 另一種就是K奇異值分解(K-Singular Value Decomposition,K-SVD)算法構(gòu)造字典,其中K-SVD算法是最具代表性的一種算法[4].文獻(xiàn)[5]提出了基于數(shù)據(jù)驅(qū)動字典和稀疏表示的語音增強(qiáng),說明了K-SVD構(gòu)造的字典可以有效去除加性噪聲,改善語音質(zhì)量.但是運(yùn)用稀疏表示語音增強(qiáng)的前提是,在K-SVD構(gòu)造的字典中語音是稀疏的、噪聲是密集的.然而實(shí)際情況中噪聲也可能是稀疏的[6-7],那么,在低SNR下噪聲原子就可能掩蓋信號原子.筆者針對以上問題提出了一種利用子空間改進(jìn)的K-SVD語音增強(qiáng)算法,先通過改進(jìn)算法構(gòu)造噪聲字典; 然后在K-SVD訓(xùn)練語音字典過程中,如果同時(shí)滿足兩個條件: 某個原子對應(yīng)的稀疏系數(shù)低于設(shè)定的閾值和該原子可在得到的噪聲字典中找到,就把該原子對應(yīng)的稀疏系數(shù)設(shè)為零,達(dá)到去除噪聲的目的.雖然信號子空間算法具有計(jì)算量大、實(shí)時(shí)性較差的問題,但是文中只是利用子空間算法的最優(yōu)估計(jì)器估計(jì)噪聲,大大減少了計(jì)算量,實(shí)時(shí)性增強(qiáng).并且子空間算法也可以彌補(bǔ)K-SVD算法誤判幾率大、SNR提高不明顯的問題.
K-SVD算法需要K次迭代,在迭代過程中先根據(jù)當(dāng)前的字典更新稀疏表示系數(shù),然后再利用此系數(shù)更新字典中的原子.它的過程也就是稀疏編碼與字典更新的不斷反復(fù)交替.
K-SVD算法構(gòu)造的過完備字典目標(biāo)函數(shù)為[4]
算法的具體步驟如下:
(1) 初始化字典,假設(shè)字典是固定的,賦予字典初始值.
(2) 稀疏分解,基于字典D對Y進(jìn)行稀疏分解得到X.利用正交匹配追蹤(Orthogonal Matching Pursuit,OMP)算法計(jì)算每個輸入信號的稀疏表示,即
(3)
接下來進(jìn)入下一次迭代,稀疏編碼與更新字典交替完成,直到滿足迭代條件為止.
在高SNR的情況下,噪聲原子的能量明顯小于語音信號的原子,K-SVD稀疏表示的語音增強(qiáng)效果明顯; 在低SNR的情況下,由于信號和噪聲的稀疏表示區(qū)別不明顯,此算法的增強(qiáng)效果不佳.最典型的例子就是白噪聲,它與清音部分非常相似[6],如果可以用字典表示清音,那么同樣可以表示白噪聲; babble噪聲本身是一種語音,可以在訓(xùn)練的純凈語音字典中稀疏表示.為了驗(yàn)證噪聲也具有稀疏性,對語音庫中一段隨機(jī)噪聲的 5 000 點(diǎn)進(jìn)行稀疏性分析,此信號采樣頻率為 8 kHz,幀長取128個樣點(diǎn).某幀噪聲的稀疏表示如圖1所示,可以清晰地看出,噪聲在過完備K-SVD字典下是稀疏的,這將很可能導(dǎo)致增強(qiáng)性能的下降,造成嚴(yán)重的失真.為了解決這些問題,提出了利用子空間改進(jìn)的K-SVD語音增強(qiáng)算法.
圖1 噪聲在K?SVD字典下的稀疏表示圖2 改進(jìn)的語音增強(qiáng)框圖
2.1 利用子空間改進(jìn)的K-SVD語音增強(qiáng)算法的基本框架
綜上所述,整個算法的基本構(gòu)架如圖2所示,字典學(xué)習(xí)(Dictionary Learning,DL)用LD表示,該系統(tǒng)可以訓(xùn)練出噪聲字典和噪聲的非零稀疏系數(shù),μ和σ分別表示字典語音增強(qiáng)階段的相干閾值.
算法具體步驟如下:
(1) 通過子空間算法計(jì)算帶噪語音的協(xié)方差矩陣Ry,對前 3 000 點(diǎn)進(jìn)行采樣計(jì)算噪聲的協(xié)方差矩陣Rn.利用子空間最優(yōu)估計(jì)器進(jìn)行多次估計(jì),找到噪聲部分.為保證信號不發(fā)生較大的失真,在使用信號子空間算法時(shí)選擇小的拉格朗日乘子,文中選擇 μ= 0.3.
圖3 語音增強(qiáng)后的SNR隨μ變化的曲線圖
參數(shù)μ對于信號最終的增強(qiáng)程度影響很大,圖3顯示了SNR為 -5 dB 的帶噪語音利用子空間改進(jìn)的K-SVD語音增強(qiáng)算法增強(qiáng)后SNR隨參數(shù)μ的變化曲線圖.由圖可知,選取 μ= 0.3,可以最大提高SNR.
(2) 找到的噪聲部分,在K-SVD過完備字典訓(xùn)練下,得到常用噪聲的噪聲字典同時(shí)得到所有非零的稀疏系數(shù).
(3) 運(yùn)用K-SVD算法對帶噪語音進(jìn)行訓(xùn)練得到語音字典,初始字典采用過完備DCT字典.
在K-SVD更新字典和稀疏編碼中,可以通過匹配追逐原理(Matching Pursuit,MP)、OMP等匹配追蹤算法和基追蹤算法求取近似值,OMP算法是在MP算法基礎(chǔ)上的一種改進(jìn)算法,將所選原子正交化,再將信號投影到這些正交基上,得到語音分量和噪聲分量,最后用相同方法迭代循環(huán).由于OMP算法收斂速度比MP算法更快,文中使用OMP算法基于K-SVD進(jìn)行追蹤匹配.
(4) 使噪聲部分在語音字典重新訓(xùn)練,同時(shí)可以在字典中找到頻繁使用的k個原子.如果這些原子對應(yīng)的稀疏系數(shù)低于某一閾值,并且也可以在得到的常用噪聲的噪聲字典中找到,那么就把這些原子對應(yīng)的稀疏系數(shù)設(shè)為零,以達(dá)到去除噪聲的目的.
2.2 子空間構(gòu)造噪聲字典
信號子空間[9]可通過選取適當(dāng)?shù)睦窭嗜粘俗?,在抑制噪聲和減少信號失真上做出較為折中的選擇.帯噪語音信號的向量空間可以分成一個信號加噪聲子空間和一個噪聲子空間.子空間語音增強(qiáng)方法的基本思想就是將帶噪語音信號投影到信號子空間(包含語音信號和噪聲,其中語音信號占主要部分)和噪聲子空間,然后盡可能地濾除噪聲子空間,并保留信號子空間的信號部分,進(jìn)而恢復(fù)出近似純凈的語音信號.
定義一個純凈信號x的模型,設(shè)x是一個k維零均值隨機(jī)向量
假設(shè)n為加性噪聲信號,那么帶噪語音y就可以表示為
H=Rn(Rx+μ Rn)-1.
其中,μ是拉格朗日乘子.利用特征值分解,式(8)可以重新寫為
假定一個過完備K-SVD字典Φ={d1,d2,…,dN}(k=1,2,…,N),則
如果Φs∩Φn=?,那么將已得噪聲字典中的噪聲原子稀疏系數(shù)設(shè)置為零,然后通過式(11)重構(gòu),即
但是,輕易地把一個原子的稀疏系數(shù)設(shè)為零會有什么樣的結(jié)果?如果 Φs∩ Φn=?,很可能造成語音信號嚴(yán)重失真.
(a) 若原子屬于Φs而不屬于Φn,則語音能量丟失,失真嚴(yán)重;
(b) 若原子同時(shí)屬于Φn和Φs,強(qiáng)行設(shè)置原子系數(shù)為零,則去噪是以語音能量的損耗為代價(jià)的;
(c) 若原子屬于Φn不屬于Φs,則可以把噪聲很好地消除.
在這里,希望找到所有的原子在(c)情況下,然后將其稀疏系數(shù)設(shè)置為零.所以為了避免(a)、(b)的情況,這里需要通過子空間算法多次估計(jì)噪聲,再通過K-SVD訓(xùn)練找到合適的閾值,以至于可以找到頻繁表示噪聲和不頻繁表示噪聲的原子,使其達(dá)到良好地抑制噪聲和減少失真的作用.
為了驗(yàn)證利用子空間改進(jìn)的K-SVD語音增強(qiáng)算法,設(shè)計(jì)了兩組實(shí)驗(yàn).實(shí)驗(yàn)采用的是863語音庫,采樣頻率為 8 kHz,初始字典是過完備DCT字典,其中字典的大小設(shè)為 1 024 個原子.使用SNR和SPSS[10-11]系統(tǒng)來驗(yàn)證并評價(jià)重構(gòu)語音的質(zhì)量.
實(shí)驗(yàn)1 考察白噪聲和babble噪聲環(huán)境下的算法效果.
在上一節(jié)中,提到噪聲也可以稀疏表示,最典型的就是白噪聲和babble噪聲.實(shí)驗(yàn)采用noise-92語音庫中的白噪聲和babble噪聲得到所需的帶噪語音,并且在帶噪語音SNR分別為 -10 dB、-5 dB、0 dB、5 dB、10 dB 和 20 dB 的情況下進(jìn)行測試,如圖4~5所示.
圖4 含白噪聲語音增強(qiáng)后SNR對比圖圖5 含babble噪聲語音增強(qiáng)后SNR對比圖
圖4和圖5分別表示了在白噪聲和babble噪聲環(huán)境下,3種算法增強(qiáng)后SNR的對比圖.從圖4可以看出,單獨(dú)運(yùn)用K-SVD和子空間算法的去噪結(jié)果是非常接近的; 圖5顯示在babble噪聲中,K-SVD字典去噪效果是略勝過子空間算法的,因?yàn)閎abble噪聲是時(shí)變噪聲,對于子空間算法噪聲譜估計(jì)比較困難.而文中提出的去噪方法在大部分SNR下是優(yōu)于其他兩種算法的,尤其是在低SNR情況下.
實(shí)驗(yàn)2 考察隨機(jī)噪聲環(huán)境下的算法性能.
實(shí)驗(yàn)條件同實(shí)驗(yàn)1,主要考察語音加隨機(jī)噪聲時(shí),3種增強(qiáng)算法的性能比較.使用語音庫中的一段男聲信號和一段女聲信號,加入SNR分別為 -10 dB、-5 dB、0 dB 和 10 dB 的隨機(jī)噪聲,分別用基于K-SVD字典、子空間及K-SVD與子空間的改進(jìn)算法去噪.時(shí)域波形圖如圖6~7所示,不同輸入SNR的結(jié)果如表1所示.
圖6 男聲-5dB不同算法去噪效果圖7 女聲-5dB不同算法去噪效果
表1 各種算法去噪后的SNR結(jié)果 dB
圖6~7分別表示男聲、女聲信號在-5 dB情況下的波形圖,從波形可以看出,單獨(dú)使用K-SVD、子空間方法雖在一定程度上降低了噪聲干擾,但在非語音段仍有大量噪聲; 而兩者聯(lián)合的方法仿真波形失真少,很好的刻畫了局部信息.表1列出了SNR為 -10 dB、-5 dB、0 dB 和 10 dB 時(shí)的去噪結(jié)果,由此看出,文中方法在低SNR時(shí)大大優(yōu)于單獨(dú)使用K-SVD、子空間方法.
采用SPSS19.0數(shù)據(jù)統(tǒng)計(jì)軟件分析不同SNR情況下,不同算法對語音增強(qiáng)是否存在顯著性影響.SPSS數(shù)據(jù)統(tǒng)計(jì)中的指標(biāo)(p表示顯著性差異,其中低于0.5就為顯著)統(tǒng)計(jì)分析中,原始數(shù)據(jù)為在SNR分別為 -10 dB、-5 dB、0 dB 和 10 dB 這4種情況下,3種算法對20句不同語音進(jìn)行語音增強(qiáng)后得到的SNR,因此共得到 4×20 個數(shù)據(jù).統(tǒng)計(jì)方法選用重復(fù)度量方差分析方法.統(tǒng)計(jì)分析結(jié)果如表2和表3所示.
表2 3種算法增強(qiáng)后的性能對比
表3 相同SNR下的不同算法的對比
從表2可以看出,在同一SNR下,改進(jìn)算法在3種算法中均值最大.K-SVD算法和子空間算法方差明顯大于改進(jìn)算法,此差距說明K-SVD算法和子空間算法語音增強(qiáng)效果不穩(wěn)定、兩極分化嚴(yán)重.所以,驗(yàn)證了3種算法中利用子空間改進(jìn)的K-SVD語音增強(qiáng)算法性能最優(yōu).表3表明利用子空間改進(jìn)的K-SVD語音增強(qiáng)算法的性能存在顯著性差異,(F(2,125)= 312.95,P< 0.01).在SNR分別為 -10 dB、-5 dB、0 dB 情況下,文中提出的改進(jìn)算法明顯優(yōu)于子空間算法和K-SVD算法 (P< 0.01); 在SNR為 10 dB 情況下,改進(jìn)算法的性能仍然優(yōu)于子空間算法,但與K-SVD算法性能沒有明顯的差異.由此可以說明,改進(jìn)算法在低SNR的情況下性能最為突出,論證了前文的結(jié)論.
為了解決噪聲(尤其是白噪聲和babble噪聲)在過完備K-SVD字典上稀疏的問題,結(jié)合子空間構(gòu)造噪聲字典,筆者提出了利用子空間改進(jìn)的K-SVD語音增強(qiáng)算法.從仿真結(jié)果可以看出,在低SNR下,利用改進(jìn)算法明顯比子空間算法和K-SVD算法去除白噪聲和babble噪聲效果好,并且也改善了信號子空間計(jì)算量大、實(shí)時(shí)性差的問題.同時(shí),通過大量實(shí)驗(yàn)驗(yàn)證了,利用子空間改進(jìn)的算法對白噪聲和babble噪聲的良好效果也可以很好地應(yīng)用于消除隨機(jī)噪聲.并且通過采用SPSS19.0軟件評價(jià)了改進(jìn)算法在低SNR的情況下,與K-SVD算法、子空間算法相比,其誤判率大大降低,SNR有所提高,且減少了失真.
[1] 楊立春, 葉敏超, 錢沄濤. 基于多任務(wù)稀疏表達(dá)的二元麥克風(fēng)小陣列話音增強(qiáng)算法[J]. 通信學(xué)報(bào), 2014, 35(2): 87-94.
YANG Lichun, YE Minchao, QIAN, Yuntao. Speech Enhancement Based on Multi-task Sparse Representation for Dual Small Microphone Arrays[J]. Journal on Communications, 2014, 35(2): 87-94.
[2]MALLAT S G, ZHANG Z. Matching Pursuits with Time-frequency Dictionaries[J]. IEEE Transactions on Signal Processing, 1993, 41(12): 3397-3415.
[3]張君昌, 劉海鵬, 樊養(yǎng)余. 一種自適應(yīng)時(shí)移與閾值的DCT語音增強(qiáng)方法[J]. 西安電子科技大學(xué)學(xué)報(bào), 2014, 41(6):177-182.
ZHANG Junchang, LIU Haipeng, FAN Yangyu. Speech Enhancement Method Using Self-adaptive Time-shift and Threshold Discrete Cosine Transform[J]. Journal of Xidian University, 2014, 41(6): 177-182.
[4]DONOHO D L. Compress Sensing [J]. IEEE Transactions on Information Theory, 2006, 52(4): 1289-1306.
[5]孫林慧, 楊震. 基于數(shù)據(jù)驅(qū)動字典和稀疏表示的語音增強(qiáng)[J]. 信號處理, 2011, 27(12): 1793-1800.
SUN Linhui, YANG Zhen. Speech Enhancement Based on Data-driven Dictionary and Sparse Representation[J]. Signal Processing, 2011, 27(12): 1793-1800.
[6]HE Y J, HAN J Q, DENG S W, et al. A Solution to Residual Noise in Speech Denoising with Sparse Representation [C]//Proceedings of the IEEE International Conference on Acoustics, Speech and Signal Processing. Piscataway: IEEE, 2012: 4653-4656.
[7]趙彥平. 基于稀疏表示的語音增強(qiáng)方法研究[D]. 長春: 吉林大學(xué), 2014.
[8]AHARON M, ELAD M, BRUCKSTEIN A.K-SVD: an Algorithm for Designing Overcomplete Dictionaries for Sparse Representation [J]. IEEE Transactions on Signal Processing, 2006, 54(11): 4311-4322.
[9]BOROWICZ A. A Signal Subspace Approach to Spatio-temporal Prediction for Multichannel Speech Enhancement [J]. EURASIP Journal on Audio, Speech, and Music Processing, 2015, 2015(1): 1-12.
[10]ZHANG S J. An Analysis of English Majors Speech Perception Problems[J]. Journal of Chemical and Pharmaceutical Research, 2014, 6(6): 2472-2483.
[11]BALCIUNIENE I. Linguistic Disfluency in Narrative Speech: Evidence from Story-telling in 6-year Olds[C]//Proceedings of the Annual Conference of the International Speech Communication Association. Baixas: International Speech and Communication Association, 2013: 2143-2146.
(編輯:王 瑞)
Speech enhancement using the improvedK-SVD algorithm by subspace
GUOXin,JIAHairong,WANGDong
(College of Information Engineering, Taiyuan Univ. of Technology, Taiyuan 030024, China)
In the case of a low SNR, it is difficult that the clean speech is separated completely by sparse representation from the noisy speech. To solve the above problem, a speech enhancement method using the improvedK-SVD algorithm by subspace is proposed. First, the noise is tracked by the optimal estimator of the subspace, and a noise dictionary is trained by using theK-SVD. Then, the speech dictionary is trained by theK-SVD algorithm. In the process of training, if an atom whose sparse coefficient is lower than the set threshold and could also be found in the noise dictionary, the sparse coefficient is set to zero, which achieves the goal of de-noising. Simulation results show that the algorithm can remove white noise and babble noise obviously, so that the SNR is improved and distortion is reduced greatly. Simultaneously, this improved algorithm can also be applied to eliminate the random noise very well. And the improved algorithm verified by SPSS19.0 software is superior to theK-SVD algorithm and subspace algorithm under a low SNR.Key Words: speech enhancement;K-SVD; sparse representation; subspace
2015-08-28
時(shí)間:2016-04-01
國家自然科學(xué)基金資助項(xiàng)目(61370093);山西省青年科技研究基金資助項(xiàng)目(2013021016-1);山西省自然科學(xué)基金資助項(xiàng)目(2013011016-1);?;饒F(tuán)隊(duì)資助項(xiàng)目(2014TD028,2014TD029)
郭 欣(1990-),女,太原理工大學(xué)碩士研究生,E-mail:Gxin189@126.com.
賈海蓉(1977-),女,副教授,博士,E-mail:helenjia722@163.com.
http://www.cnki.net/kcms/detail/61.1076.tn.20160401.1622.038.html
10.3969/j.issn.1001-2400.2016.06.019
TN912.35
A
1001-2400(2016)06-0109-07