This document discusses voice quality problems such as hissing or static sounds observed during a voice conversation. This document also provides suggestions to help you solve these voice quality issues.
Readers of this document should have knowledge of these topics:
A basic understanding of Voice over IP (VoIP).
Voice Activity Detection (VAD) and its application.
The information in this document is based on these software and hardware versions.
Cisco IOS® Software Release 12.1 and later that runs the IP Plus feature set.
All Cisco Voice Gateways.
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, make sure that you understand the potential impact of any command.
Refer to the Cisco Technical Tips Conventions for more information on document conventions.
Most IP-based Telephony systems include a voice activity detector. The purpose of the detector is to detect silence periods in the voice signal and temporarily discontinue transmission of the signal during the silence period. This saves bandwidth and allows the far-end to adjust its jitter-buffer. The downside is that during silence periods, the far-end phone has to generate its own signal to play to the listener. Usually, comfort noise is played out to the listener to mask the absence of an audio signal from the far-end. Comfort noise is usually modeled on the far-end noise so that there is not a stark contrast when you switch from the actual background noise to the comfort noise.
Figure 1 illustrates a typical IP Telephony system. The IP voice devices referred to can be IP telephones, IP analog gateways, IP digital gateways, and so on.
Figure 1: IP Telephony System
During a call between device A and device B, device A reaches a silence interval (Figure 2). The voice activity detector uses an algorithm in order to determine if a silence interval has been reached. Typically, the voice activity detector has a holdover period of time t1 at the end of each speech burst. During this time it continues to send packets to the far-end. This helps to avoid excessive switching and choppy speech. If additional speech is detected during this holdover interval, the voice stream between the devices continues uninterrupted. After a period of length t1 (T2 in Figure 2 ) has elapsed, IP voice device A stops sending packets if no additional voice is detected.
Figure 2: Device A VAD Events
At time T1 (Figure 2), an indication is sent to device B that alerts it to the fact that the VAD holdover is starting. This also contains the duration of the VAD holdover. When this message is received, device B starts to attenuate down the voice signal that it receives from device A and mixes it with the generated comfort noise that it should attenuate up (as in Figure 3).
Figure 3: Background Noise vs. Comfort Noise Attenuation during Holdover Period
This attenuation provides a smooth transition between real background noise and generated comfort noise. It makes the transitions from environments where the characteristics of the background noise are much different from those of generated comfort noise smoother and much less noticeable. The length of the VAD holdover interval (t1) determines how effective this technique is. Longer intervals result in smoother sounding transitions.
If the voice signal cuts in before time T2 (Figure 2), the attenuation is halted immediately and the full scale incoming audio is played. Such a cut-in should be signaled through another indication from device A to device B. Since the voice signal is significantly louder than the background noise, it masks the transition back and is not as noticeable.
The previously mentioned signaling may be in-band (for instance, via a new payload type in RTP or a named signaling event) or out-of-band (for instance, an H.245 signaling event).
The only cause of hearing a hissing sound or a static sound during a voice call is the introduction of comfort noise in a conversation. There are two possibilities to which comfort noise is injected in a voice call. The foremost is the use of VAD. Whenever VAD kicks-in, comfort noise packets are introduced in the audio stream. The second possibility (not a major contributor) is the kicking-in of echo-cancellation. Whenever echo-cancellation becomes active, comfort noise packets are introduced in the audio stream. The characteristics of these comfort packets is determined through an algorithm which includes monitoring on-going speech and receiving a signature of the background noise. This comfort noise is the hissing.
In this scenario, if device A pauses, device B can experience some hissing. This can be taken care of by a proper adjustment of the VAD parameters. Cisco recommends that you disable VAD if the fine-tuning of these parameters does not resolve the issue.
There are two parameters that dictate VAD functionality:
An initial threshold is decided which governs when VAD becomes active. This is controlled when you define the music-threshold <threshold_value> command on a voice port. The range for this is from -70 dBm to -30 dBm. The default value is -38 dBm. If you configure a lower value (towards -70 dBm), VAD becomes active at a much lower signal strength. The volume must drop really low before it is considered as silence. If you configure a higher value (closer to -30 dBm), VAD becomes active for even a small drop of voice signal strength. This drives the playout to play comfort noise packets more often. However, this can lead to minor clipping of audio.
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
Once the VAD becomes active, you can control the component of background noise and comfort noise when you configure the voice vad-time <timer_value> command under the global configuration. This is the delay time in milliseconds for silence detection and suppression of voice packet transmission. The default value for the holdover time is 250 msec. This means that within 250 msec, comfort noise completely kicks in. The range for this timer is 250 msec to 65,536 msec. If a high value is configured, comfort noise comes into play much later (background noise continues to be played). If this is configured for 65,536 msec, comfort noise is turned off. A higher value for this timer is desired for smoother transition between background noise and comfort noise. The downside to a high vad-time configuration is not entirely achieving the desired 30%-35% bandwidth saving.
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
Note: After you configure VAD, issue the shut and no shut commands on the voice port in order for the configuration changes to take effect.
If you continue to observe the hissing and/or static, even after you tune the parameters mentioned earlier in this document, then Cisco recommends that you disable VAD. This needs to be done on the gateways as well as on the Cisco CallManagers. These sections explain how to disable VAD on Cisco gateways and Cisco CallManager.
On Cisco gateways that run H.323, you can disable VAD when you configure the no vad command under the VoIP dial-peers. If this is the terminating gateway, make sure that no vad is configured on the appropriate inbound VoIP dial-peer matched. It might be helpful to configure incoming called-number <number_dialed> to match the appropriate incoming dial-peer. For the originating gateway, no vad can be configured on VoIP dial-peers based on which selective terminating gateways require to turn this off.
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
Ensure that these parameters in the Cisco CallManager are set to False (F) to disable VAD on Cisco CallManager:
Silence Suppression.
Silence Suppression for Gateways.
Complete these steps in order to find these parameters.
Choose Service > Service Parameters from the Cisco CallManager Administration menu.
From the Server drop-down menu choose the Cisco CallManager IP address or name and select Cisco CallManager from the Services drop-down menu.
The parameters are located in the Service Parameters Configuration window.
Set the Silence Suppression and Silence Suppression for Gateways parameters to False in the Service Parameter configuration window, under the Cluster-wide parameters.
Click Update in order to turn off VAD in Cisco CallManager. This procedure is similar for Cisco CallManager 3.3 and 4.0.