单通道语音增强方法因其算法复杂度适中, 算法的实现对硬件需求不大, 而在很多领域受到广泛的应用. 在单通道话音增强算法中, 噪声估计是至关重要的一环. 在这一环节中, 主要任务就是对噪声功率谱进行准确的估计, 这样才能较好的抑制噪声, 同时保证较好的话音质量, 否则会产生过减或欠估计现象, 前者会导致话音失真, 影响语音可懂度, 后者则会导致的噪声残留, 影响听觉体验.
全球很多学者提出了多种噪声估计方法. 在这些噪声估计算法里面, 最具代表性的有Martin在2001年提出的MS最小统计量噪声估计算法[1], 该算法在固定的搜索窗内搜索含噪语音功率谱最小值. 在2002年, Israel Cohen提出了MCRA (Minima Controlled Recursive Averaging)最小递归控制平均算法[2], 该算法通过将当前帧带噪话音子频带局部功率谱与搜索窗内对应的最小功率谱比较, 以此确定该频带是否含有话音成分. MCRA算法在话音噪声谱增加缓慢(噪声谱增加小于2 dB/s)的情况下[3], 有良好的噪声估计能力, 能够通过递归平均法准确估计噪声值. 但该算法采用了固定搜索窗长来更新最小功率谱值, 当话音出现噪声谱陡增的情况时, 噪声估计会出现延迟. 延迟时间在L到2L帧之间, 其中L为一个最小噪声估计窗长, 为了保证话音无失真, L时间长度通常选为800 ms~1500 ms.
为解决噪声估计延迟, 广大学者也做了一些研究. 2005年, Loizou提出在MCRA噪声估计算法的基础上引入连续平滑噪声更新[4], 改进后的算法有效的缩短了噪声估计延迟, 但是该算法在低信噪比下存在噪声过估计情况, 导致话音失真. 2009年, 贺慧芳, 马建芳在MCRA算法的基础上提出了一种基于语音帧检测的算法[5]来加快噪声估计速度, 该算法在较高信噪比条件下可以有效的缩短噪声估计延迟, 在低信噪比下对噪声估计延迟的改进有限. 2015年, 熊晶, 王旭贞等人在MCRA算法的基础上提出了一种双向噪声估计算法[6,7], 该算法可以较好的解决噪声估计延迟以及过估计问题, 但是实现该算法需要在缓存一段话音数据, 不适合实时性要求较高的场合.
本文在MCRA噪声估计算法的基础上, 引入一种利用最大对数似然比结合能零比的VAD辅助算法, 通过该辅助算法, 可以动态的选择大小噪声搜索估计窗中的最小功率谱值进行后续计算, 从而得到一种变窗长搜索的改进型噪声估计算法. 本文所提的改进算法能有效缩短噪声估计延迟, 也能在低信噪比环境下运行, 并且不需要缓存数据, 可以用于实时性要求较高的场合.
2 基于变窗长的MCRA改进算法本节先介绍MCRA算法[2]的基本原理, 然后介绍本文提出的双参数双门限VAD算法以及双窗并行搜索, 最后讲述本文算法如何进行噪声估计更新.
2.1 MCRA算法基本原理当前带噪话音帧的功率谱为
${S_f}(k,l) = \sum\limits_{i = - N}^N {w(i)} |Y(k,l){|^2}$ | (1) |
其中,
然后对当前帧功率谱做时域上的平滑:
$S(k,l) = {\alpha _s}S(k,l - 1) + (1 - {\alpha _s}){S_f}(k,l)$ | (2) |
其中,
再按照如下方式更新
当
$\left\{ {\begin{aligned} & {{S_{\min }}(k,l) = \min (S(k,l),{S_{\min }}(k,l - 1))} \\ & {{S_{\rm{tmp}}}(k,l) = \min (S(k,l),{S_{\rm {tmp}}}(k,l - 1))} \end{aligned}} \right.$ | (3) |
当
$\left\{ {\begin{aligned} & {{S_{\min }}(k,l) = \min ({S_{\rm {tmp}}}(k,l - 1),S(k,l))} \\ & {{S_{\rm {tmp}}}(k,l) = S(k,l)} \end{aligned}} \right.$ | (4) |
接着求得当前帧平滑功率谱
${S_r}(k,l) = \frac{{S(k,l)}}{{{S_{\min }}(k,l)}}$ | (5) |
如果
$p(k,l) = {\alpha _p}p(k,l - 1) + (1 - {\alpha _p})I(k,l)$ | (6) |
式中,
最后更新噪声估计值:
$\begin{array}{l}{\lambda _d}(k,l + 1) = {\lambda _d}(k,l)p(k,l) + (1 - p(k,l))({\alpha _d}{\lambda _d}(k,l) \\\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;\;+ (1 - {\alpha _d})|Y(k,l){|^2})\end{array}$ | (7) |
(1) 基于能零比的VAD
在文献[8]中, Maragos提出了一种基于短时能零比的VAD算法, 即短时平均过零率与短时能量相结合的VAD算法, 该算法对噪声谱变化不敏感, 即噪声谱的陡增不会影响算法性能, 且能较好的区分浊音和非浊音, 但在低信噪比下对清音和噪声的区分效果不佳.
短时平均过零率表示一帧语音中信号时域波形穿越横轴的次数. 对于离散的信号, 如果相邻的取样值发生符号改变, 则称为过零. 短时平均过零率就是样本数值改变符号的次数.
高频信号意味着较高的平均过零率, 低频意味着较低的平均过零率. 通常情况下, 话音中出现浊音时, 过零率较低, 而出现清音以及白噪声、超短波噪声时, 过零率较高.
过零率可以通过下面的公式求得:
$Zcr(l) = \sum\limits_{n = 0}^{N - 1} {|{\rm{sgn}}[{y_l}(n)] - {\rm{sgn}}[{y_l}(n - 1)]|} $ | (8) |
式中,
在话音中的有话区间能量要高于无话区间, 过零率则相反, 现在结合这两种方法, 即用能量值除以过零率的值, 可以更突出有话区间的数值, 而噪声区间的数值则更小. 第l帧的能量可以根据下面公式求得:
$Energy{\rm{(}}l{\rm{)}} = \sum\limits_{k = 0}^{N - 1} {y{\rm{(}}l,k{\rm{)}}} $ | (9) |
这里引入对数能量计算公式:
$Log\_Energy{\rm{(}}l) = {\rm {lo}}{{\rm g}_{10}}{\rm{(}}1 + Energy{\rm{(}}l{\rm{)}}/a{\rm{)}}$ | (10) |
用对数表达式可以缓和能量幅度剧烈变换, 参数
最后能零比通过以下公式求出:
$E{{cr(}}l{{) = Energy(l)/(Zcr(}}l{{) + }}b{{)}}$ | (11) |
参数
(2) 基于最大对数似然比的VAD
在文献[9]中, J Chang等人提出了基于高斯统计模型与拉普拉斯统计模型的最大对数似然比, 在文献[10]中, 夏丙寅等人基于上述模型提出了一种最大对数似然比VAD算法, 可以较好的区分清音和噪声. 为了保护清音部分, 本文选择最大对数似然比作为VAD辅助算法中的另外一种参数.
对每一帧话音信号, 话音存在假设为
$\begin{aligned}& \wedge (k,l) = \frac{{p(Y(k,l)|{H_1})}}{{p(Y(k,l)|{H_0})}} = \frac{1}{{\xi (k,l)}}\exp \left\{ {\frac{{\gamma (k,l)\xi (k,l)}}{{1 + \xi (k,l)}}} \right\}\end{aligned}$ | (12) |
$\xi (k,l) = \frac{{{\lambda _x}(k,l)}}{{{\lambda _d}(k,l)}}$ | (13) |
$\gamma (k,l) = \frac{{|Y(k,l){|^2}}}{{{\lambda _d}(k,l)}}$ | (14) |
式(6)和式(7)中的
基于对数似然比LLR的判决规则可得:
$LLR(l) = \log \wedge (l) = \frac{1}{N}\sum\limits_{k = 0}^{N - 1} {\log \wedge (k,l)} $ | (15) |
本文中将两种VAD算法结合起来, 利用能零比VAD对噪声功率谱变化不敏感, 以及最大对数似然比VAD能在低信噪比情况下较好的区分清音和噪声的特点, 提出一种双门限双参数的VAD算法, 并将其作为MCRA噪声估计算法的辅助算法.
上述双参数双门限的VAD, 即以最大对数似然比以及能零比作为参数, 采用二级门限, 通过判决流程得到一个话音存在标记值. 具体的流程如图1所示.
状态0为“非话音段”、状态1位“疑似话音段”, 状态2为“话音段”, 状态3为“结束段”. 为方便描述, 此处用
从状态0开始执行VAD算法. 如果当前状态为0或者1, 且
如果当前状态为2,
最终根据话音帧所处的状态做一个存在标记, 当状态为0时, 把当前帧标记为“语音不存在”, 其他状态则把当前帧标记为“语音存在”.
2.3 双窗法并行搜索原MCRA算法, 噪声搜索窗选用固定的窗长, 而本文算法选用两个大小不同的窗[12]同时搜索最小功率谱值, 并根据式(3)和式(4)持续更新
若话音帧通过上述的双参数双门限VAD算法被标记为“语音存在”, 则根据式(5)计算当前帧平滑功率谱
由于小窗长度较短, 选用小窗下搜索到的最小功率谱值来进行噪声估计更新计算, 会加快噪声估计速度.
3 话音估计器
本文采用Israel Cohen提到的OM-LSA话音估计器[13], 结合本文的改进型噪声估计算法, 实现整个语音增强算法, 具体框图如图2所示.
图2中的
文献[13]中指出: 通过估计每一个频率子带话音存在概率, 得到一个联合时频特性的增益函数:
$G(k,l) = {(\frac{{\xi (k,l)}}{{1 + \xi (k,l)}})^{p(k,l)}}G_{\min }^{1 - p(k,l)}$ | (16) |
其中
通过下式求得处理后的话音频谱:
$\overset{\lower0.5em\hbox{$\smash{\scriptscriptstyle\frown}$}}{X} (k,l) = Y(k,l) * G(k,l)$ | (17) |
其中,
本节的实验仿真内容主要为: 将引入双门限双参数VAD辅助算法的变窗长改进算法与原MCRA算法[2]做对比, 比较收敛时间长短. 实验中的噪声类型采用选自Noisex中的高斯白噪声, 以及超短波噪声, 然后分别将高斯白噪声、超短波噪声与纯净语音叠加, 生成几段样本用来测试. 实验选取标准普通话测试话音17 s, 采样率8 KHz.
4.1 实验设计实验一. 选取上述纯净话音样本, 给样本加上高斯白噪声, 带噪话音8 s–11 s处信噪比由10 dB变为2 dB, 在语谱图3(a)中用方框标出, 并用文字说明. 图3(b)为原MCRA算法在噪声谱陡增时的噪声估计延迟, 图中用方框标示, 可以看到噪声估计延迟较长, 约为1.6 s; 而图3(c)为本文改进算法的语谱图, 可看到噪声谱陡增处, 噪声估计延迟缩短, 约为0.4 s.
实验二. 选取上述纯净话音样本, 给样本加上超短波噪声, 此环境下噪声谱陡增段包含话音, 在2.5 s–4 s处, 信噪比由10 dB变为0 dB, 语谱图4(a)中用方框标出, 并用文字说明. 图4(b)中可以看到, 噪声估计延迟约为1.5 s; 而图4(c)为文中改进算法的语谱图, 可以看到噪声谱陡增处, 噪声估计延迟缩短, 约为0.5 s.
4.2 实验结果分析从图3和图4中, 可以看出: 无论是在高斯白噪声还是超短波噪声环境下, 本文提出的改进型算法, 面对噪声谱陡增, 噪声估计延迟都要比原MCRA算法短, 即噪声估计速度本文提出的算法要优于原MCRA算法.
5 总结本文利用了过零率对噪声功率谱变化不敏感的性质, 将能零比与最大对数似然比结合, 作VAD辅助检测. 联合原有算法, 采用大小窗同时搜索功率谱最小值, 最终形成基于变窗长搜索的改进型噪声估计算法. 经过实验证明, 改进的噪声估计算法, 在噪声谱陡增时, 能够有效的降低噪声估计延迟.
[1] |
Martin R. Noise power spectral density estimation based on optimal smoothing and minimum statistics. IEEE Transactions on Speech and Audio Processing, 2001, 9(5): 504-512. DOI:10.1109/89.928915 |
[2] |
Cohen I, Berdugo B. Noise estimation by minima controlled recursive averaging for robust speech enhancement. IEEE Signal Processing Letters, 2002, 9(1): 12-15. DOI:10.1109/97.988717 |
[3] |
郑成诗, 李晓东, 莫福源, 等. 一种噪声谱估计的快速跟踪算法. 中国声学学会2006年全国声学学术会议论文集. 厦门, 中国. 2006. 401–402.
|
[4] |
Rangachari S, Loizou PC. A noise-estimation algorithm for highly non-stationary environments. Speech Communication, 2006, 48(2): 220-231. DOI:10.1016/j.specom.2005.08.005 |
[5] |
贺慧芳, 马建芬. 基于语音帧检测和子带谱跟踪的噪声估计算法. 计算机工程, 2009, 35(20): 281-282. DOI:10.3969/j.issn.1000-3428.2009.20.099 |
[6] |
熊晶. 语音增强中噪声估计的研究[硕士学位论文]. 兰州: 兰州交通大学, 2015.
|
[7] |
王旭贞. 汽车噪声下语音增强算法的研究与应用[硕士学位论文]. 杭州: 杭州电子科技大学, 2015.
|
[8] |
Maragos P. Fractal aspects of speech signals: Dimension and interpolation. Proceedings of 1991 International Conference on Acoustics, Speech, and Signal Processing. Toronto, ON, Canada. 1991. 417–420. [doi: 10.1109/ICASSP.1991.150365]
|
[9] |
Chang JH, Kim NS, Mitra SK. Voice activity detection based on multiple statistical models. IEEE Transactions on Signal Processing, 2006, 54(6): 1965-1976. DOI:10.1109/TSP.2006.874403 |
[10] |
夏丙寅, 鲍长春. 适应噪声强度突变的噪声估计加速方法. 信号处理, 2013, 29(10): 1336-1345. DOI:10.3969/j.issn.1003-0530.2013.10.010 |
[11] |
Ephraim Y, Malah D. Speech enhancement using a minimum-mean square error short-time spectral amplitude estimator. IEEE Transactions on Acoustics, Speech, and Signal Processing, 1984, 32(6): 1109-1121. DOI:10.1109/TASSP.1984.1164453 |
[12] |
张建伟, 陶亮, 周健, 等. 基于改进谱平滑策略的IMCRA算法及其语音增强. 计算机工程与应用, 2017, 53(1): 153-157. DOI:10.3778/j.issn.1002-8331.1504-0029 |
[13] |
Cohen I, Berdugo B. Speech enhancement for non-stationary noise environments. Signal Processing, 2001, 81(11): 2403-2418. DOI:10.1016/S0165-1684(01)00128-1 |