概观 VAD概述 VAD代表语音活动检测。它的作用是区分声音和其他任何东西,包括沉默。在VoIP应用中,它可以用作最小化传输的音频分组数量的工具。如果没有人说话,则可以停止音频数据包的流动,或者至少改变为低得多的舒适噪声数据包。在典型的电话交谈中,双方都在谈话时间很短,但大多数时间只有一方正在交谈。使用VAD,可以大大减少甚至停止每个方向的传输,接近50%的呼叫。VAD通常是VoIP路径端点内的功能。
这里有两件事需要注意,这往往让人感到困惑。VAD与静音检测不同。大声的音乐肯定不是沉默,但它也不是声音,一个好的VAD会宣称“没有声音存在”。其次,使用VAD来最小化分组流通常被描述为带宽减少措施。当每个人一次谈话的可能性很低时,这只是携带大量并发呼叫的网络链路的情况。对于大多数客户端应用,当所有会话被声明为语音时,网络所需的带宽将是峰值,并且数据包以其语音编解码器的正常速率传输。在这些情况下,VAD允许的是平均值的降低 数据速率,释放大量不是实时数据的数据容量,因此可以排队等待。
CNG概述 CN代表舒适噪音。这是在VoIP路径的接收端合成的模拟背景噪声。该功能称为舒适噪声生成(CNG)。在粗略形式中,它可以是一般房间“糊”的简单模拟(例如,具有Hoth光谱加权的高斯噪声)。在更复杂的形式中,从发送器接收的噪声参数可以包含噪声建模参数。这些可用于产生与发送者环境中当前正在拾取的噪声的幅度和频谱质量紧密匹配的噪声。
CN还指RFC 3389指定的CN RTP数据包。当VAD功能声明没有语音存在时,发送CN包。CN分组可以传达上述噪声建模参数,但是经常丢失该信息。理想情况下,CN发送数据包应当在发送方环境中的噪声发生变化时发送,因此接收方的CNG功能可以有效地更新噪声,并避免语音信号恢复时噪声的突然变化。更典型地,当语音分组流停止时,仅发送单个CN分组。
FreeSWITCH中的VAD VAD可以在端点配置文件中设置,可以有4个值:
输入媒体的VAD, out - 打开传出媒体的VAD, 两者 - 打开传入和传出媒体的VAD, none - VAD完全关闭。 当FreeSWITCH不检测语音时,它停止发送RTP。FreeSWITCH还支持每次调用VAD处理以及以下通道变量:
rtp_enable_vad_in rtp_enable_vad_out rtp_disable_vad_in rtp_disable_vad_out CNG在FreeSWITCH中 在FreeSWITCH中,CNG选项选择FreeSWITCH是否将生成CN RTP数据包。的抑制-CNG索菲亚配置文件选项和suppress_cng通道可变控制该设置。当双方都支持RFC 3389(他们在SDP消息交换中同意,rtpmap:13)时,FreeSWITCH将发送CN数据包。
在FreeSWITCH中允许CNG并不意味着它会在媒体通道中产生任何舒适噪声。
如果其中一个呼叫支路不处理VAD和异步RTP媒体,则监听呼叫者可能认为听到完美静音意味着连接已被丢弃。为了处理这些端点,有一个通道变量:bridge_generate_comfort_noise,它将生成假音频。
适用的设置 频道变量 bridge_generate_comfort_noise - 当桥接会话接收不连续的音频帧(静音抑制)时产生舒适噪声。 rtp_enable_vad_in rtp_enable_vad_out rtp_disable_vad_in rtp_disable_vad_out send_silence_when_idle -当设置大于0时,此变量告诉FreeSWITCH在空闲时传输舒适噪声。 suppress_cng - 这可用于阻止远程方(通常是手机)使用静音抑制。实施不良的静音抑制会导致语音丢失,这是一种解决方法,可以降低带宽消耗。 配置参数 suppress-cng - 在此配置文件或每次调用时使用’suppress_cng’变量抑制舒适噪声发生器(CNG)。
沉默文件类型 要将静音指定为保持或回铃音乐源,请使用以下语法:
沉默[:<级>] 级别越高,音量越低。默认值约为400.在相应的通道变量中设置值:+