关于webrtc的VAD(voice activity dectctor)算法说明web
webrtc 的vad使用GMM(Gaussian Mixture Model)对语音和噪声建模,经过相应的几率来判断语音和噪声。这种算法算法
的优势是它是无监督的,不须要严格的训练。GMM的噪声和语音模型以下:spa
p(xk|z,rk)={1/sqrt(2*pi*sita^2)} * exp{ - (xk-uz) ^2/(2 * sita ^2 )} it
XK是选取的特征量,在webrtc的VAD中具体是指子带能量,rk是包括均值uz和方差sita的参数集合。z=0,表明噪声;z=1,表明语音。webrtc
webrtc中的vad的C代码的详细步骤以下:test
1.设定模式 :方法
依据hangover、单独判决和全局判决门限将VAD检测模式分为如下4类activity
0-quality mode 集合
1- Low bitrate mode vi
2-Aggressive mode
3- Very aggressive mode
2.webrtc的VAD只支持帧长10ms,20ms和30ms,为此事先要加以判断,不符合条件的返回-1。
3.webrtc 的VAD核心计算只支持8KHz采样率,因此当输入信号采样率为32KHz 或者16KHz 时都要先下采样到8KHz 。
4.在8Khz采样率上分为两个步骤
4.1 计算子带能量
子带分为80~250Hz,250~500Hz,500~1000Hz,1000~2000Hz,2000~3000Hz,3000~4000Hz
须要分别计算上述子带的能量feature_vector。
4.2 经过高斯混合模型分别计算语音和非语音的几率,使用假设检验的方法肯定信号的类型。
首先经过高斯模型计算假设检验中的H0和H1(C代码是用h0_test和h1_test表示),经过门限判决vadflag;
而后更新几率计算所须要的语音均值(speech_means)、噪声的均值(noise_means)、语音方差(speech_stds)
和噪声方差(noise_stds)。