语音增强的整个过程,通常假设噪声为加性随机平稳噪声,且语音短时平稳,下面的原理描述中,都是在这两个假设前提之下来做的。整个语音增强的流程大致可以分为两大部分
一、噪声估计
二、衰减因子(有的地方也叫做增益因子)的计算
最后,把衰减因子应用于带噪语音,就可以得到我们期望的“纯净语音”。语音增强最难的部分,应该是噪声估计,而不是衰减因子的确定。因些这里重点说下噪声估计部分,要进行噪声估计的话,先要了解带噪语音的特点,根据这些特点进行噪声的估计,那么,带噪语音都有哪些特点呢?
(1)噪所对语音频谱的影响在频率上是不均匀的,有的频谱区域影响大,有的频谱区域影响小,很自然就可以想到,可以利用各频带来估计噪声,当特定频带的信噪比或者语音存在概率比较低时,可以独立更新噪声谱,这就是时间递归平均型噪声估计算法的出发点
(2)即便是在语音活动期间,单个频带的带噪语音功率通常都会衰减到噪声的功率水平,这是最小值跟踪噪声估计算法的出发点。通过在每个频带跟踪带噪语音功率的最小值,可以得到该频带噪声水平的一个粗略估计。
speex使用的噪声估计算法结合了这两个特性,我们分别说下根据上面两个特性延伸出来的两个噪声估计算法:最小值跟踪、时间递归平均。先说下最小值跟踪噪声估计算法,这类估计算法主要有三种:最小值统计、最小值搜索、连续谱最小值跟踪。
最小值统计算法是通过统计过去D帧的各频点最小值、计算相应的偏差因子来估计噪声的,具体内容请参考论文:Noise Power Spectral Density Estimation Based on Optimal Smoothing and Minimum Statistics。这里不再详细阐述。
最小值搜索是以遍历的方式查找过去D帧各频点的最小值来估计噪声的,这种方法有的地方也称为最小值查找
连续谱最小值跟踪具体内容请参考一个频域语音降噪算法实现及改进方法中的内容,这里同样也不再详述。
下面再说下时间递归平均型噪声估计算法。这种方法是要用以下的通用形式来估计噪声
\[\hat \sigma _d^2(\lambda ,k) = \alpha (\lambda