本文档讨论语音质量问题,例如语音对话期间观察到的嘶嘶声或静态声音。本文档还提供一些建议,帮助您解决这些语音质量问题。
本文档的读者应掌握以下这些主题的相关知识:
基本了解IP语音(VoIP)。
语音活动检测(VAD)及其应用
本文档中的信息基于以下软件和硬件版本。
运行IP Plus功能集的Cisco IOS®软件版本12.1及更高版本。
所有思科语音网关。
本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您使用的是真实网络,请确保您已经了解所有命令的潜在影响。
有关文档约定的更多信息,请参考 Cisco 技术提示约定。
大多数基于IP的电话系统都包括语音活动检测器。检测器的目的是检测语音信号中的静音周期,并在静音周期期间暂时停止信号的传输。这样可节省带宽,并允许远端调整其抖动缓冲。缺点是,在静默期间,远端电话必须产生自己的信号来播放给听者。通常,向听者发出舒适噪音,以掩蔽来自远端的音频信号。舒适度噪声通常基于远端噪声建模,因此当您从实际背景噪声切换到舒适度噪声时,不会形成鲜明的对比。
图1显示了典型的IP电话系统。引用的IP语音设备可以是IP电话、IP模拟网关、IP数字网关等。
图 1:IP 电话系统
在设备A和设备B之间的呼叫期间,设备A达到静默间隔(图2)。 语音活动检测器使用算法来确定是否已经达到静默间隔。通常,语音活动检测器在每个语音突发的结束处具有保持时间t1。在此期间,它继续向远端发送数据包。这有助于避免过度切换和语音不稳定。如果在此保留间隔期间检测到其他语音,则设备之间的语音流将不间断地继续。经过一段长度t1(图2中的T2)后,如果未检测到其他语音,IP语音设备A将停止发送数据包。
图 2:设备A VAD事件
在T1(图2)时,会向设备B发送指示,提示其VAD保持器正在启动。这还包含VAD保留的持续时间。当收到此消息时,设备B开始衰减它从设备A接收的语音信号,并将其与应该衰减的产生的舒适噪声混合(如图3)。
图 3:背景噪声与保持期舒适性噪声衰减
这种衰减在真实背景噪声和产生的舒适噪声之间提供了平滑的转换。它使得背景噪声与产生的舒适噪声特性有很大不同的环境发生了更平滑、更不明显的变化。VAD保留间隔(t1)的长度决定了此技术的有效性。较长的间隔会使声音转换更平滑。
如果语音信号在时间T2之前切入(图2),则会立即停止衰减,并播放全比例传入音频。这种切入应通过设备A到设备B的另一指示发出信号。由于语音信号比背景噪音大得多,因此它会屏蔽掉转换,并且不会那么明显。
上述信令可以是带内(例如,通过RTP中的新负载类型或命名信令事件)或带外(例如,H.245信令事件)。
在语音呼叫期间听到嘶嘶声或静音的唯一原因是在对话中引入舒适噪音。语音呼叫中会注入舒适噪音。最重要的是使用VAD。每当VAD启动时,音频流中都会引入舒适噪音数据包。第二种可能性(不是主要因素)是回声消除的启动。每当回声消除变为活动状态时,音频流中就会引入舒适噪音数据包。这些舒适分组的特征通过包括监控正在进行的语音和接收背景噪声的签名的算法来确定。这种舒适的噪音是嘶嘶声。
在此场景中,如果设备A暂停,设备B可能会出现一些嘶嘶声。这可以通过适当调整VAD参数来解决。如果对这些参数进行微调无法解决问题,思科建议禁用VAD。
有两个参数规定VAD功能:
确定初始阈值,以控制VAD何时变为活动状态。当您在语音端口上定义music-threshold <threshold_value>命令时,将控制此值。此范围为–70 dBm至–30 dBm。默认值为–38 dBm。如果配置较低值(接近–70 dBm),则VAD会以低得多的信号强度激活。卷必须降到极低的水平,才能被视为静音。如果配置更高的值(接近–30 dBm),VAD即使只是轻微的语音信号强度下降也会变为活动状态。这会促使播放更频繁地播放舒适的噪音数据包。但是,这可能导致音频的小剪辑。
3640-6#configure terminal Enter configuration commands, one per line. End with CNTL/Z. 3640-6(config)#voice-port 3/0/0 3640-6(config-voiceport)#music-threshold ? !--- WORD: Enter a number between -70 to -30. 3640-6(config-voiceport)#music-threshold -50 3640-6(config-voiceport)#end 3640-6# 3640-6#show run | begin voice-port voice-port 3/0/0 music-threshold -50
一旦VAD变为活动状态,在全局配置下配置voice vad-time <timer_value>命令时,可以控制背景噪声和舒适噪声的组件。这是用于无声检测和抑制语音数据包传输的延迟时间(以毫秒为单位)。保留时间的默认值为250毫秒。这意味着在250毫秒内,舒适噪音完全开始出现。此计时器的范围为250毫秒至65,536毫秒。如果配置了高值,则舒适噪音将在以后很长时间发挥作用(背景噪音仍在继续播放)。 如果配置为65,536毫秒,舒适噪音将关闭。对于在背景噪声和舒适噪声之间更平滑地转换,该计时器的值更高。高vad时间配置的缺点并不是完全实现所需的30%-35%带宽节省。
3640-6#configure terminal Enter configuration commands, one per line. End with CNTL/Z. 3640-6(config)#voice vad-time ? <250-65536>milliseconds 3640-6(config)#voice vad-time 750 3640-6(config)#end 3640-6# 3640-6# 3640-6# 3640-6#show run | begin vad-time voice vad-time 750
注意:配置VAD后,在语音端口上发出shut 和no shut 命令,以便配置更改生效。
如果您继续观察嘶嘶声和/或静态,即使您调整本文档前面提到的参数,思科建议您禁用VAD。这需要在网关和Cisco CallManager上完成。以下各节介绍如何在Cisco网关和Cisco CallManager上禁用VAD。
在运行H.323的Cisco网关上,当在VoIP拨号对等体下配置no vad命令时,可以禁用VAD。如果这是终端网关,请确保在匹配的相应入站VoIP拨号对等体上未配置vad。配置传入被叫号码<number_dialed>以匹配相应的传入拨号对等体可能很有帮助。对于始发网关,VoIP拨号对等体上不能配置任何vad,这取决于选择性终端网关需要关闭此网关。
dial-peer voice 100 voip incoming called-number !--- In order to match all called numbers destination-pattern 1T no vad session target ipv4:10.10.10.10 dtmf-relay h245-alpha ip precedence 5
确保Cisco CallManager中的这些参数设置为False(F)以在Cisco CallManager上禁用VAD:
静音抑制.
网关的静默抑制。
要查找这些参数,请完成以下步骤。
从Cisco CallManager Administration菜单中选择Service > Service Parameters。
从“服务器”下拉菜单中选择Cisco CallManager IP地址或名称,然后从“服务”下拉菜单中选择“Cisco CallManager”。
参数位于“服务参数配置”窗口中。
在“服务参数”配置窗口的“集群范围参数”下,将“网关的静默抑制和静默抑制”参数设置为False。
单击Update以在Cisco CallManager中关闭VAD。此步骤与Cisco CallManager 3.3和4.0类似。