目录
VAD概述:
1. What?
2. How?
3. VAD方法:
4. 存在的问题?
一. 基于预置阈值判决的VAD方法
1. 常用的特征:
2. 基于短时能量:
3. 基于短时过零率:
4. 简单总结:
二. 基于GMM的VAD方法
1. 特征:
2. 方法:
3. 总结:
三. 基于神经网络的VAD方法
1. 背景:
2. 应用:
3. 特点要求:
4. 算法流程:
5. 算法步骤:
VAD概述:
1. What?
答:给定一帧语音数据(10-30ms),输出该数据中含有语音的概率。
2. How?
答:通常是有特征提取和语音和非语音两部分组成。
传统的特征包括过零率、能量值和频谱等。
传统的判决方法:主要是基于预置阈值的方法和基于统计模型的方法。
3. VAD方法:
答:基于预置阈值判决的VAD、基于高斯混合模型的VAD和基于神经网络的VAD。
4. 存在的问题?
答:对于SNR较低的场景下,如何有效区分语音和噪声。
一. 基于预置阈值判决的VAD方法
1. 常用的特征:
短时平均过零率、短时平均幅度和短时能量等(都是时域特征)
2. 基于短时能量:
加窗分帧提取短时能量。
由于不同频带能量差异很大,因此短时能量被拓展到多个子带中。
eg:
首先用一组滤波器(伽马通、mel等)分布得到不同频率的子带信号,然后分布计算每个子带的能量,并为每个子带设置不同的判决阈值。
3. 基于短时过零率:
短时过零率:时域波形过X轴的次数。可以反映部分频域的信息,可以过滤掉低频信号。
4. 简单总结:
短时过零率受高频信号影响较大,因此可以有效过滤掉低频信号。短时能量对噪声的幅度比较敏感,可以过滤掉幅度较低的噪声,因此一般结合使用。基于预置阈值判决的VAD较简单,主要适用于安静环境下或噪声源比较单一的场景。 不适应非平稳噪声较多的复杂场景。二. 基于GMM的VAD方法
以Google的WebRTC为例
1. 特征:
基于子带的能量作为特征
2. 方法:
建模:对每个子带用两个高斯模型的混合进行建模,一个是语音模型,一个噪音模型
判决:在进行判决时对每个子带计算一个二元高斯对数似然比并在每个子带似然比的基础上计算全局似然比;阈值由试验和经验给出,通常当子带似然比和全局似然比中有任何一个超过设定的阈值则判定信号中带有语音。
参数更新:存在语音时对语音模型进行更新,否则则对噪音模型进行更新。(更新是通过计算梯度进行更新)
3. 总结:
通过子带的特征计算和高斯混合模型的自适应更新,相比于预设阈值的判决更鲁棒,但仍然应对非平稳噪声的场景时误检率较高。
三. 基于神经网络的VAD方法
1. 背景:
基于统计模型的方法对于非平稳噪声的复杂场景误检率较高。
2. 应用:
激活检测(一级算法)和长语音切分
3. 特点要求:
要求功耗较低且具备实时性
因此模型也相对较简单
4. 算法流程:
5. 算法步骤:
加窗分帧:加窗分帧并进行STFT的到频谱。(25ms, 10ms)滤波器组:过64通道的Gammatone滤波器组,对每一帧进行频域滤波,输出64维向量。 Gammatone滤波器组(或Mel滤波器组)都是根据人耳对听觉特性,针对不同中心频率由不同的频率分辨率。即低频子带数量较多,带宽较窄,划分粒度较细,在高频子带数量较少,带宽较宽,划分粒度更粗。Gammatone滤波器组的64个中心频率在对数域上均匀分布。等效矩形带宽(ERB):等效矩形滤波器的带宽。滤波器的衰减系数直接决定了该滤波器的等效矩形带宽。特征归一化:特征提取后对特征进行归一化操作,且可根据特征是时更新归一化系数。神经网络处理:64维特征输入神经网络。 模型包含一个一维卷积 + 两个LSTM+带softmax函数的全连接层。一维卷积:对频谱在频域上进行卷积,提取频域能量的特征。LSTM:对时域变化进行建模。LSTM的输出隐状态过全连接层和softmax进行二分类,预测当前帧含有语音的概率。后处理:输出的概率通过后处理步骤进行平滑(比如中值滤波器),滤除过短的毛刺信号,输出判决值。其他:另外可能还由于实际情况需要采用剪枝、量化等对模型等尺寸和算力需求等进一步压缩。总结自:《语音识别服务务实战》
如果觉得《VAD简单总结》对你有帮助,请点赞、收藏,并留下你的观点哦!