语音是人类最方便的通信方式,在处理语音信号时,通常采用纯净语音信号。实际采集的语音信号中含有一定的噪声,影响到语音的可懂度及音质。因此,有效去除带噪语音信号中的噪声成分具有非常重要的理论意义和实用价值。语音增强是解决噪声污染语音信号的重要方法。
语音增强算法现已比较成熟。传统语音增强算法主要有Wiener滤波法[1]、谱减法[2]、小波变换[3]及这些算法的改进算法。现代语音增强算法主要有主成分分析[4]、非负矩阵分解、压缩感知理论及这些算法的改进算法等。其中,比较具有代表性的是近年来兴起的压缩感知理论[5-6]。文[7]中提出的K奇异值分解 (K-singular value decomposition, K-SVD) 字典训练算法属于基本压缩感知理论的改进算法,该算法通过为信号构造过完备冗余字典,能够更好地在自适应的稀疏基上稀疏表示语音信号,从而更加精确地重构纯净语音信号。但K-SVD字典训练算法在低信噪比的情况下,却不能较好地稀疏表示带噪语音信号。文[8]提出了经验模态分解 (empirical mode decomposition, EMD),可根据信号的局部时变特征进行自适应时频分解,非常适合对非平稳信号的分析,但EMD存在模态混叠问题。为解决此问题,文[9]提出了总体平均经验模态分解 (ensemble empirical mode decomposition, EEMD),向待分解的信号中加入Gauss白噪声来平滑脉冲干扰等异常事件,解决模态混叠问题。带噪语音通过EEMD分解可得到高频噪声本征模式分量 (intrinsic mode function, IMF),但其余的IMF分量中仍含有少量的噪声成分。结合上述算法,通过预降噪提高语音信号的稀疏性,从而准确重构纯净语音,是有效去除噪声的关键。
本文针对传统语音增强算法的缺陷及K-SVD算法在低信噪比的情况下不能较好地稀疏表示带噪语音信号的问题,提出一种EEMD与K-SVD字典训练相结合的语音增强算法。该算法利用EEMD分解去除噪声IMF分量,并利用EEMD进一步分解过渡IMF分量[10],去除其中的噪声成分。去噪后的过渡IMF分量与剩余的IMF分量叠加得到新的带噪语音。采用纯净语音信号通过K-SVD训练过完备字典,利用正交匹配追踪算法 (orthogonal matching pursuit, OMP)[10]将新的带噪语音在过完备字典上进行稀疏分解,通过稀疏系数重构出去噪后的语音,达到语音增强的目的。
1 EEMD算法EEMD算法[9]是EMD算法的改进算法,主要解决EMD算法中产生模态混叠的问题。EEMD算法利用了Gauss白噪声具有频率均匀分布的统计特性。当信号加入白噪声后,使得信号在不同尺度上具有连续性,从而减小模态混叠的程度。EEMD算法的分解步骤如下:
步骤1 在原始带噪语音信号x(t) 中加入100次标准差为原始信号标准差0.1~0.4倍的随机正态分布Gauss白噪声。
步骤2 对步骤1得到的信号进行EMD分解。
步骤3 重复步骤1和步骤2N次。每次在信号中加入新的随机正态分布Gauss白噪声序列。
步骤4 求出所有迭代所获得的IMFs的平均值,作为分析信号的IMF组合。
最终,EEMD分解的结果为
$ x\left( t \right) = \sum\limits_j {{c_j}\left( t \right)} + r\left( t \right). $ | (1) |
其中:cj(t)(j=1,2,…,N) 代表从高频到低频的IMF分量;r(t) 为残余分量,代表信号的平均趋势。
2 K-SVD字典训练算法K-SVD[7]算法又称为广义K-均值算法,该算法能够在获取字典的同时获得稀疏系数矩阵,主要包括稀疏编码和字典更新2个步骤:
步骤1 字典D已知,求解信号的稀疏系数;
步骤2 根据得到的稀疏系数,更新字典中的原子,常用的方法有MOD (method of optimal directions)[11]和K-SVD,二者在字典更新时的原子更新机制不同:MOD是对字典中所有的原子进行更新,而K-SVD只对某个原子进行更新。
假设要进行稀疏表示的纯净语音为Y,稀疏表示使用的字典为D,相应的系数矩阵为M。K-SVD的目标函数为
$ \begin{array}{l} \mathop {\min }\limits_{\mathit{\boldsymbol{D}},\mathit{\boldsymbol{M}}} \sum\limits_i {{{\left\| {{\mathit{\boldsymbol{m}}_i}} \right\|}_0}} \\ {\rm{s}}{\rm{.t}}{\rm{.}}\;\;\left\| {\mathit{\boldsymbol{Y}} - \mathit{\boldsymbol{DM}}} \right\|_F^2 \le \varepsilon . \end{array} $ | (2) |
其中:‖‖F表示Frobenius范数,‖‖0表示0范数,ε表示逼近残差。
过完备字典的训练步骤如下:
步骤1 挑选一定数目的训练样本作为初始字典D。
步骤2 稀疏编码,这个阶段采用追踪算法进行计算。常用的追踪算法有BP、MP、OMP等,这些算法可以对样本信号进行稀疏表示,计算相应的系数。
步骤3 将字典中的原子逐个进行更新,假设Ek为去掉第K个原子以后的稀疏表示误差:
$ {\mathit{\boldsymbol{E}}_k} = \mathit{\boldsymbol{Y}} - \sum\limits_{j \ne k} {{\mathit{\boldsymbol{d}}_j}{\mathit{\boldsymbol{m}}_j}} $ | (3) |
其中mj表示矩阵M的列向量。
步骤4 定义ωk={i|1≤i≤K, mTk(i)≠0}表示用到原子dk的样本Y的索引,以防止结果发散。定义Ωk为N×ωk的矩阵,其中 (ωk(i), i) 是1,其他都是0,则式 (3) 等价为
$ \left\| {{\mathit{\boldsymbol{E}}_k}{\mathit{\boldsymbol{ \boldsymbol{\varOmega} }}_k} - {\mathit{\boldsymbol{d}}_k}\mathit{\boldsymbol{m}}_T^k{\mathit{\boldsymbol{ \boldsymbol{\varOmega} }}_k}} \right\|_F^2 = \left\| {\mathit{\boldsymbol{E}}_k^R - {\mathit{\boldsymbol{d}}_k}\mathit{\boldsymbol{m}}_R^k} \right\|_F^2. $ | (4) |
其中:mTk表示矩阵m的第k行,mRk=mTkΩk表示mTk去掉0值项的行矢量,EkR=EkΩk表示样值稀疏分解用到原子dk的误差列。
步骤5 将EkR通过SVD分解得到EkR▽VT。分解的U的第一列更新原来字典中的dk,矩阵V的第一列与Δ(1, 1) 的乘积更新系数向量mj。
重复步骤2到步骤5,直到满足终止条件,即可得到纯净语音Y的过完备字典。
3 EEMD与K-SVD结合的语音增强算法 3.1 算法的基本思想EEMD和K-SVD字典训练算法在语音增强方面各有优劣。带噪语音信号经过EEMD分解之后,可以得到几乎为纯噪声的IMF分量 (第一IMF分量),去除该噪声IMF分量对恢复原始语音信号几乎没有损失。其余IMF分量仍含有少量的噪声,但此时带噪语音信号稀疏性增强,能更好地通过过完备字典稀疏表示,通过稀疏系数重构得到的纯净语音信号更加精确。算法的流程如图 1所示。
![]() |
图 1 算法流程 |
3.2 增强算法的基本过程
带噪语音信号通过EEMD分解得到各IMF分量 (这里取前10层的IMF分量,10层之后的分量对信号重构影响极小,故此忽略)。对各IMF分量做互相关分析,与噪声相关性强而与语音相关性弱的IMF分量有可能为噪声IMF分量,对该分量进行自相关分析,若该IMF分量的自相关函数在零点取得极值而在其他各点为零或近似为零,则可判定该IMF分量为噪声分量,直接舍弃。
通常情况下,第二或第三IMF分量既含有大量的语音信息,又包含大量噪声,这种IMF分量称为过渡模态分量[12]。文[12]指出,将过渡IMF的第一次EMD分解处理得到的结果与一个合适的余弦信号相加,并对相加得到的混合信号再次进行EMD处理,就可以有效去除过渡IMF中的混叠噪声。因此,对过渡模态分量再次进行EEMD分解,去除几乎为纯噪声的第一IMF分量,其余IMF分量组成新的IMF分量,然后将去除噪声后的所有IMF分量叠加得到新的带噪语音。
$ \begin{array}{l} \mathop {\min }\limits_x {\left\| x \right\|_0}\\ {\rm{s}}{\rm{.t}}{\rm{.}}\;\;{\left\| {\mathit{\boldsymbol{y}} - \mathit{\boldsymbol{Dx}}} \right\|_2} \le \varepsilon . \end{array} $ | (5) |
其中:y表示要进行稀疏表示的新的带噪语音信号,D表示K-SVD训练得到的过完备字典,x表示y在D上分解得到的稀疏系数,ε表示稀疏表示的语音信号和带噪语音信号之间的残差。
可以采用OMP算法对式 (5) 进行求解,得到新的带噪语音信号的过完备稀疏表,过程如下:
步骤1 初始化,残差r(0)=y,原子集合矩阵Λ0=ϕ,字典为D,迭代序号k=1。
步骤2 计算残差r(i) 与字典D的内积,记录内积最大值位置对应的原子dj下标λi=arg maxj=1, 2, …, N|〈r(i), dj〉|, k=k+1。
步骤3 扩充原子集合矩阵Λi=Λi-1, φλ。
步骤4 稀疏系数xi=arg min‖Λi-1, dλi‖2,计算信号估计值yi=Λixi,更新残差r(i)=y-yi。满足‖r(i)‖22≤ε,转至步骤2继续迭代,否则终止。
通过上述步骤得到的最优解即为
$ \mathit{\boldsymbol{y = D\hat x = }}\sum\limits_{j = 1}^n {{x_j}{\mathit{\boldsymbol{d}}_i}} . $ | (6) |
对于ε的设置,文[13]指出,对于当已知噪声方差为σ2的情况下,在进行原子选择时通过设定与噪声方差成比例的恰当的阈值ε,就可以从带噪信号中选出与纯净语音相关的系数,舍弃与噪声有关的系数。实验中设置
$ \varepsilon = k{\sigma ^2}. $ | (7) |
实验中k取值通常在1.05~1.15之间,本文设定k取值1.08,能够得到最好的重构效果。
4 结果与分析为了验证本文算法在语音增强方面的有效性,对不同信噪比的带噪语音分别采用本文算法、谱减法、小波阈值去噪及K-SVD算法进行去噪处理,对比分析实验结果。
实验语音样本采用在专业录音棚内录制的标准普通话。单字和词语的录音人为8人 (4男4女),每个人分别录制8个单字和8个词语的语音样本;语句的录音人为4人 (2男2女),每人分别录制4个语句的语音样本。语音信号以单声道、16 kHz采样率、16位量化精度保存为WAVE文件。对纯净语音信号,分别加入白噪声、车内噪声、餐厅内噪杂噪声、粉红噪声和工厂车间噪声,加入的白噪声及有色噪声均来自NOIZEX-92噪声库。对所有纯净语音样本分别加入不同强度的白噪声,指定输出带噪语音信噪比分别为-10、-5、0、5、10 dB,并计算其分段信噪比 (segmental signal-to-noise ratio, SegSNR):
$ {\rm{SegSNR}} = \frac{{10}}{L}\sum\limits_{l = 0}^{L - 1} {{\rm{lo}}{{\rm{g}}_{10}}} \left( {\frac{{\sum\limits_{m = 0}^{M - 1} {x_l^2\left( m \right)} }}{{\sum\limits_{m = 0}^{M - 1} {{{({s_l}\left( m \right) - {x_l}\left( m \right))}^2}} }}} \right). $ | (8) |
其中:sl(m) 表示纯净语音,xl(m) 表示带噪语音,M表示帧长,L表示总帧数。
对加入噪声的语音进行EEMD分解,并求解出各IMF分量与纯净语音和噪声的互相关系数。图 2和3分别表示纯净语音“灯”加入不同强度噪声、指定输出信噪比分别为-5和5 dB时,各IMF分量与纯净语音以及噪声的互相关系数。
![]() |
图 2 加噪输出信噪比为-5 dB时各IMF分量的相关系数 |
![]() |
图 3 加噪输出信噪比5 dB时各IMF分量的相关系数 |
可以看出,无论是在高信噪比还是在低信噪比情况下,第1个IMF分量 (记为IMF1) 与噪声的相关度较大,而与纯净语音的相关度较小。第6—10 IMF分量与纯净语音及噪声的相关度都很小,可以忽略不计。
对2种信噪比情况下EEMD分解的IMF1分量做自相关分析,如图 4和5所示。
![]() |
图 4 加噪输出信噪比-5 dB时IMF1的自相关性分析 |
![]() |
图 5 加噪输出信噪比5 dB时IMF1的自相关性分析 |
可以看出,2种信噪比情况下EEMD分解的IMF1分量在零点处取得极大值,而其余各点基本接近于零。可以判定这2种信噪比情况下EEMD分解的IMF1分量均为噪声IMF分量,可直接舍弃。IMF2分量与噪声及语音的相关度几乎相当,说明IMF2分量中既包含大量语音,同时也含有大量噪声。因此,对IMF2分量再次进行EEMD分解,去除第1噪声IMF分量,其余IMF分量重新组合。将新组合的IMF2分量同IMF3、IMF4和IMF5分量组成新的带噪语音。利用纯净语音,通过K-SVD字典训练得到过完备字典。新的带噪语音通过过完备字典进行稀疏表示,通过稀疏系数重构得到增强后的语音。
为了验证本文方法的降噪性能,将本文算法分别与谱减法、小波阈值去噪和K-SVD字典训练算法的降噪结果进行对比。图 6为不同信噪比情况下各算法对带噪语音增强后的平均分段信噪比。图 7为不同信噪比情况下4种算法增强处理之后的平均感知语音质量评价 (perceptual evaluation of speech quality,PESQ),图 8和9分别给出了加入白噪声和色噪声,信噪比为-5 dB下4种算法增强后的波形。从中可以看出,本文算法要优于其他几种算法。
![]() |
图 6 各算法不同信噪比下增强处理后的信噪比 |
![]() |
图 7 各算法不同信噪比下增强处理后的PESQ |
![]() |
图 8 加入白噪声-5 dB时4种算法增强后的波形 |
![]() |
图 9 加入色噪声-5 dB时4种算法增强后的波形 |
为了进一步验证本文算法的降噪性能,采用汉语清晰度诊断押韵测试 (diagnostic rhyme test method of Chinese articulation,DRTC)[14]对降噪后的语音进行了主观评测。实验采用在加入不同强度的白噪声,并指定输出带噪语音的信噪比为-5、0、5 dB下的10对韵字语音,听音人为5男5女听力正常的研究生。DRT实验结果如表 1所示,可以看出,本文提出的算法总体上优于传统的谱减法、小波阈值去噪法和K-SVD算法。
SNR/dB | DRT评分 | |||
谱减法 | 小波阈值 | K-SVD | 本文算法 | |
-5 | 50% | 64% | 54% | 70% |
0 | 62% | 70% | 66% | 86% |
5 | 76% | 76% | 82% | 92% |
5 结论
本文提出了一种EEMD与K-SVD字典训练结合的语音增强算法。首先对带噪语音进行EEMD分解,得到的各IMF分量分别与纯净语音和噪声做互相关分析,对疑似噪声IMF分量做自相关分析,从而去除噪声IMF分量。同时,将过渡IMF分量再次进行EEMD分解,去除噪声成分。将去噪后的过渡IMF分量与剩余IMF分量组合成新的带噪语音,并在采用纯净语音训练得到的过完备字典上进行稀疏表示,通过稀疏系数重构得到增强之后的语音信号。不同信噪比情况下各算法对带噪语音的去噪对比实验结果表明,本文提出的算法优于其他几种算法。
[1] | Chen J, Benesty J, Huang Y, et al. New insights into the noise reduction Wiener filter[J]. IEEE Transactions on Audio, Speech, and Language Processing, 2006, 14(4): 1218–1234. DOI:10.1109/TSA.2005.860851 |
[2] | Boll S. Suppression of acoustic noise in speech using spectral subtraction[J]. IEEE Transactions on Acoustics, Speech, and Signal Processing, 1979, 27(2): 113–120. DOI:10.1109/TASSP.1979.1163209 |
[3] | Donoho D L. De-noising by soft-thresholding[J]. IEEE Transactions on Information Theory, 1995, 41(3): 613–627. DOI:10.1109/18.382009 |
[4] | 王文波, 张晓东, 汪祥莉. 基于主成分分析的经验模态分解消噪方法[J]. 电子学报, 2013, 41(7): 1425–1430. WANG Wenbo, ZHANG Xiaodong, WANG Xiangli. Empirical mode decomposition de-noising method based on principal component analysis[J]. Chinese Journal of Electronics, 2013, 41(7): 1425–1430. (in Chinese) |
[5] | 石光明, 刘丹华, 高大化, 等. 压缩感知理论及其研究进展[J]. 电子学报, 2009, 37(5): 1070–1081. SHI Guangming, LIU Danhua, GAO Dahua, et al. Advances in theory and application of compressed sensing[J]. Chinese Journal of Electronics, 2009, 37(5): 1070–1081. (in Chinese) |
[6] | Donoho D L. Compressed sensing[J]. IEEE Transactions on Information Theory, 2006, 52(4): 1289–1306. DOI:10.1109/TIT.2006.871582 |
[7] | Michal A, Michael E, Alfred B. K-SVD:An algorithm for designing overcomplete dictionaries for sparse representation[J]. IEEE Transactions on Signal Processing, 2006, 54(11): 4311–4322. DOI:10.1109/TSP.2006.881199 |
[8] | Huang N E, Shen Z, Long S R, et al. The empirical mode decomposition and the Hilbert spectrum for nonlinear and non-stationary time series analysis[C]//Proceedings of the Royal Society of London A:Mathematical, Physical and Engineering Sciences. London, UK:Royal Society, 1998:903-995. |
[9] | Wu Z, Huang N E. Ensemble empirical mode decomposition:A noise-assisted data analysis method[J]. Advances in Adaptive Data Analysis, 2009, 1(1): 1–41. DOI:10.1142/S1793536909000047 |
[10] | Karahanoglu N B, Erdogan H. A* Orthogonal matching pursuit:Best-first search for compressed sensing signal recovery[J]. Digital Signal Processing, 2012, 22(4): 555–568. DOI:10.1016/j.dsp.2012.03.003 |
[11] | Engan K, Aase S O, Husøy J H. Multi-frame compression:Theory and design[J]. Signal Processing, 2000, 80(10): 2121–2140. DOI:10.1016/S0165-1684(00)00072-4 |
[12] | 李月, 彭蛟龙, 马海涛, 等. 过渡内蕴模态函数对经验模态分解去噪结果的影响研究及改进算法[J]. 地球物理学报, 2013, 56(2): 626–634. LI Yue, PENG Jiaolong, MA Haitao, et al. Study of the influence of transition IMF on EMD do-noising and improved algorithm[J]. Chinese Journal of Geophysics, 2013, 56(2): 626–634. (in Chinese) |
[13] | Donoho D L, Elad M, Temlyakov V N. Stable recovery of sparse overcomplete representations in the presence of noise[J]. IEEE Transactions on Information Theory, 2006, 52(1): 6–18. DOI:10.1109/TIT.2005.860430 |
[14] | Li Z, Tan E C, McLoughlin I, et al. Proposal of standards for intelligibility tests of Chinese speech[J]. IEEE Proceedings-Vision, Image and Signal Processing, 2000, 147(3): 254–260. DOI:10.1049/ip-vis:20000189 |