背景
据统计通话过程中静音的时间超过了50%,如果这时还是按普通方式发送数据包,会造成带宽的严重浪费!因此引入了VAD和CNG技术,极大减少带宽的消耗。
VAD
Voice Activity Detector, 即语音动态检测。话机的输入信号分为语音和静音两类,VAD主要通过信号的能量来区分语音和静音。当检测到用户没有讲话即静音状态时,发送端可以不发送语音报文,只发送静音指示报文,从而降低语音报文占用的带宽。如下所示,正常的语音包负载占据160字节
而静音帧只有几个字节,如下所示:
CNG
(Comfort Noise Generator),即舒适噪音产生。为避免静音期间出现长时间的静默,使接收端用户感到不自然,在静音过程中需要接收端生产背景噪声,接收端可根据发送端发送的静音指示帧来产生舒适噪声。
总结
vad是发送端使用的,cng是接收端使用的。如果发送端vad开启,dsp检测非静音则生成RTP包发送到对端,如果检测是静音则发送静音标识(cn包或者帧内静音包)给对端,对端收到静音标识后生成背景噪声!
场景确认
1. 话机A 开启vad,话机B关闭vad, B环境安静无人说话,A端可以听到舒适的背景噪音,这个噪音由B打包成RTP包发送到A
2. 话机A 开启vad,话机B开启vad, B环境安静无人说话,A端可以听到舒适的背景噪音,这个噪音由A生成,B只是发静音标识给A,A收到后自己生成舒适噪音
voip中vad关闭则发送端自己将生成的背景噪音打包到RTP包中,vad开启则值发送静音标识给对端,由对端自己生成!生成背景噪声的原因是让双方感觉通话还在!