The quality of VoIP calls is influenced by a number of external factors, including the network the device is connected to and the device software and hardware.
Network characteristics
VoIP calls involve the transmission of a continuous train of voice data packets. Due to network congestion, some packets may reach the recipient later than packets that were transmitted before them. This out-of-order receipt of packets, known as jitter, can make audio sound jumbled or robotic.
Jitter is measured in milliseconds of delay. Jitter values higher than 30 milliseconds (ms) on WebRTC calls can lead to poor audio quality. High jitter can also lead to jitter-induced packet loss, in which chunks of audio never arrive at their destination.
The primary cause of jitter is network congestion, due to an overcrowded network with many devices consuming bandwidth at the same time.
Latency, in the context of VoIP calls, is the total spoken-to-heard delay in the transmission of audio. The major contributing factor to VoIP latency is the delay incurred in the transmission of voice packets from origin to destination. Network latency (measured as round trip time) of more than 300ms results in a noticeable audio lag on a call. Higher network latency can sometimes lead to crosstalk.
Plivo recommends
To diminish jitter and latency, Plivo recommends:
-
Using a high-bandwidth fiber connection from a reputable internet provider. Dedicated business internet connections generally come with guaranteed SLAs on bandwidth and latency.
-
Using a physical Ethernet connection instead of Wi-Fi whenever possible.
-
If using Wi-Fi, limiting the number of devices connected on the same channel.
-
Using high-quality Wi-Fi routers built for enterprises or for real-time gaming. Look for routers that come with advanced QoS features.
-
Auditing your network firewall and NAT settings to check for transmission delays due to improper configuration.
-
Avoiding large data transfers on the same Wi-Fi network during calls.
-
Limiting bandwidth per connected device to ensure an even allocation of total available bandwidth.
-
Avoiding calls over cellular data connections (4G and older), as they are not optimized for low-latency traffic.
-
Setting the Differentiated Service Code Point (dscp) parameter of Plivo Browser SDK to "true." This setting informs network routers to prioritize voice packets over other network packets. Corresponding QoS configurations in the router may be also required. DSCP for WebRTC is supported by Chrome only.
-
Setting Plivo Media Server region selection in auto mode on Plivo Browser SDK. This ensures that calls get routed through the closest geographic PoP based on the device’s IP address.
-
Ensuring uplink and downlink bandwidth availability of at least 50Kbps for voice transmission.
-
If operating in a low-bandwidth environment, cap the bandwidth to be consumed on calls using the maxAverageBitrate configuration parameter of the Plivo Browser SDK.
-
Gracefully handling poor call quality experiences in real time by consuming mediaMetrics call quality events emitted by the Plivo Browser SDK during the course of calls.
-
Submitting call quality feedback to Plivo programmatically from the Browser SDK or through the Send Feedback method of the Voice API. Your feedback allows Plivo to learn and optimize its network by identifying patterns across calls.
Network firewalls
Voice data on VoIP calls is transferred over UDP. Ensure that your network firewall allows transmission of UDP packets between client devices and the public internet.
If your firewall requires whitelisting of external IP addresses, ensure that Plivo’s SIP Signalling and Media Server IP addresses are whitelisted on your network firewall.
Device characteristics
Several device characteristics also impact the quality of VoIP calls.
Browser and OS
Plivo Browser SDK uses WebRTC for voice calls. WebRTC is supported in the following browsers:
-
Chrome on Windows, Linux, macOS, and Android. Note that Chrome for iOS does not support WebRTC.
-
Firefox on Windows, Linux, macOS, and Android. Note that Firefox for iOS does not support WebRTC.
-
Safari 11+ on iOS and macOS
-
New Microsoft Edge (based on Chromium) on Windows
While WebRTC should be supported on these browsers, the Plivo Browser SDK v2 is tested and supported only in:
-
Chrome v55+ in desktop environments
-
Firefox v51+ in desktop environments
-
Microsoft Edge v79+ on Windows
Plivo recommends customers use its native iOS and Android SDKs to build app-based calling functionality on mobile devices. Mobile browsers are required to be in the foreground for the entire duration of the call and lack call interruption handling for cellular calls received while on a browser call. Both these features are supported by the Plivo iOS and Android SDKs.
Device hardware
While most modern PC and smartphone devices are more than capable of handling VoIP media, incompatibilities between components such as network drivers and audio cards can result in unexpected issues with media handling. Attempting to reproduce issues on other devices should be a key step in your debugging process.
Audio input and output devices
Plivo recommends using quality headsets for browser-based calls.
Headsets minimize echo by providing acoustic isolation between the speaker and the microphone. High-quality VoIP headsets with noise-canceling features can enhance call quality in noisy environments by eliminating background sounds.
Wired headsets generally offer more stable sound quality than wireless or Bluetooth headsets. Wireless headsets are more prone to adapter and driver configuration issues, which can lead to static or white noise on calls. We recommend testing with a different headset, or with a PC's inbuilt mic and speaker, when troubleshooting such issues.