最近几个月一直在研究vad算法,今天项目被终结了,所以接下来就总结一下vad了。
关于实时的端点检测,基于asterisk系统的打断,通过计算可以获取到每一帧的160个采样点,每一个点的幅度,有正有负,这是所有一切阙值的计算依据。
1. 基于短时能量的判断。根据获取到的实时能量,将前20帧的能量的平均值作为判断的标准,当然,我们采用的avg的1.8倍 和1.3倍分别作为判断的髙阙值和低阙值。
2. 当然,如果外面有突然噪音,所以就判断连续好几帧都大于髙阙值的时候在判断现在有人在说话。
3. 补充一点,vad的识别,基本上都是基于时域和频域上的判别,时域上的判别对于信噪比较高的时候还比较理想,但是对于信噪比低的时候,基本上就失效了。对于这个分界点,具体还没有定界。
4. 时域上的还用了相关系数算法,基本上在监听到你讲话的时候,帧能量会突然变得很大,然后相邻几帧也会特别大,乘起来的话,肯定会变的更大,这个也不错,但是还是时域上的,不是很准。
5. 对于频域上的,我选择了倒谱系数MFCC系数
6. 因为了解过了webRTC,就采用webRTC的vad算法,
等有时间了再写这两个,
网友评论