VAD综述
语音增强系列博文
VAD广泛应用于语音编码(网络/无线/有线传输),说话认识和语音识别(ASR,基于机器学习的方法,也是经过VAD标注后的语音数据用于训练的,准确标注真实场景的带噪语音比较重要)。VAD的准确对前端算法也是比较关键的,这里所说的是语音/非语音(非语音/静音)检测,一个VAD系统通常包括两个部分,特征提取和语音/非语音判决;常用的特征提取可以分为五类:
- 基于能量
- 频域
- 倒谱
- 谐波
- 长时信息
基于能量的特征常用硬件实现,谱(频谱和倒谱)在低SNR可以获得较好的效果。当SNR到达0dB时,基于语音谐波和长时语音特征更具有鲁棒性。
当前的判决准则可以分为三类:基于门限,统计模型和机器学习。
特征选取准则
对于VAD分类问题,特征尤为重要,好的特征应该能具备如下特性:
区分能力
含噪语音帧分布和仅仅噪声帧分布的分离度,理论上,好的特征能够让语音和噪声两类没有交集噪声鲁棒性
背景噪声会造成语音失真,进而语音特征也会失真,影响到提取到的特征的区分能力。
基于能量的特征
基于能量的准则是检测信号的强度,并且假设语音能量大于背景噪声能量,这样当能量大于某一门限时,可以认为有语音存在。然而当噪声大到和语音一样时,能量这个特征无法区分语音还是纯噪声。
早先基于能量的方法,将宽带语音分成各个子带,在子带上求能量;因为语音在2KHz以下频带包含大量的能量,而噪声在2~4KHz或者4KHz以上频带比0~2HKz频带倾向有更高的能量。这其实就是频谱平坦度的概念,webrtc中已经用到了。在信噪比低于10dB时,语音和噪声的区分能力会加速下降。
频域特征
通过STFT将时域信号变成频域信号,即使在SNR到0dB时,一些频带的长时包络还是可以区分语音和噪声。
倒谱特征
对于VAD,能量倒谱峰值确定了语音信号的基频(pitch),也有使用MFCC做为特征的;
基于谐波的特征
语音的一个明显特征是包含了基频及其多个谐波频率,即使在强噪声场景,谐波这一特征也是存在的。可以使用自相关的方法找到基频。
长时特征
语音是非稳态信号。普通语速通常每秒发出10~15个音素,音素见的谱分布是不一样的,这就导致了随着时间变化语音统计特性也是变化的。另一方面,日常的绝大多数噪声是稳态的(变化比较慢的),如白噪声/机器噪声。
判决准则
门限
门限通常是根据训练数据集特征预先得到的,对于噪声变化的场景,需要使用自适应门限,可以将能量,将能量最小记作和能量最大记作,对应的门限为则可以得到如下自适应门限:
绝大多数使用了平滑策略来跟新门限,
统计模型方法
统计模型的方法最先源于似然比检验(likelihood ratio test LRT),这种方法假设语音和背景噪声是独立高斯分布,这样它们的DFT系数可以用高斯随机变量来描述,这一方法考虑两种假设,和分别表示非语音和语音。给定第k帧谱,它们的概率密度函数如下:
其中是频点索引,并且分别是噪声和语音的方差。这些参数可以通过噪声估计和谱减的方法从训练数据集中获得。然后可以获得第i个频段的似然比,这样可以获得最终的似然比检验:
在webrtc中,使用的就是这一思想,此外,还可以借鉴到webrtc中定点化的思想在里面。
由于1.6中左侧的log总是正数,这一似然比偏向,所以减小只有噪声时似然比波动的decision-directed(DD)方法被提出来,DD方法在语音到非语音变换区域容易发生错误。又有基于平滑的方法被提出来。
上述是基于高斯的统计模型,有其它学者提出使用DCT或者KL做为特征的拉普拉斯,伽马分布以及双侧伽马分布可以更好的描述语音和噪声的分布。这在低信噪比时可以获得更好的VAD检测结果。
机器学习方法
这一思想是语言的模型是通过学习得到的,目前训练数据集都是通过传统的VAD方法进行标注的,如果标注的数据里就有不准确的,那么如何通过NN获得更准确的VAD,这类方法的难点个人认为更多的是实际强噪声场景下的训练数据集标注的问题。