When FreeSWITCH does not detect speech, it stops transmitting RTP. FreeSWITCH also supports per call VAD handling with the following channel variables:
CNG in FreeSWITCH
In FreeSWITCH the CNG options select whether or not FreeSWITCH will generate CN RTP packets. The suppress-cng sofia profile option and suppress_cng channel variable control this setting. When both sides support RFC 3389 (they agree in SDP message exchange, rtpmap:13), FreeSWITCH will send CN packets.
In case one of the call legs does not handle VAD and asynchronous RTP media, it's possible that the listening caller might think that hearing perfect silence means the connection has been dropped. For handling these endpoints, there is a channel variable: bridge_generate_comfort_noise which will generate fake audio.
- bridge_generate_comfort_noise — Generates comfort noise when bridged session is receiving discontinuous audio frames (silence suppression).
- send_silence_when_idle — When set greater than 0, this variable tells FreeSWITCH to transmit comfort noise when idle.
- suppress_cng — This can be used to stop a remote party, typically a handset, from using silence suppression. Poorly implemented silence suppression can result in lost speech, and this is a way to fix that, at the cost of greater bandwidth consumption.