Best Practices for Call Quality - Browser SDK
The quality of Voice over Internet (VoIP) calls is influenced by several external factors, such as the device software/hardware and the network it’s connected to.
In this article, we will explore the key factors that influence call quality on Browser SDK calls, best practices thereof.
The network that is being utilized by the device largely influences the quality of calls. The following network characteristics have a direct impact on call quality.
Jitter and Latency
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 other packets. This out-of-order receipt of packets, known as Jitter, can result in the audio sounding jumbled or robotic.
Jitter is measured in milliseconds of delay, and Jitter values higher than 30 milliseconds on WebRTC calls can lead to poor audio quality. High Jitter can also lead to Jitter Induced Packet Loss, resulting in chunks of audio getting completely lost.
The primary cause of Jitter is Network Congestion, due to an over-crowded network with many devices, consuming variable amounts of 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. This is known as Network Latency.
Network latency (measured as Round Trip Time) of over 300ms results in an observable audio lag on the call. Higher network latency can sometimes lead to cross talk.
- Using a high bandwidth fiber connection from a reputed 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 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’. DSCP for WebRTC is supported by Chrome only. It informs network routers to prioritize voice packets over other network packets. Corresponding QoS configurations in the router may be also required.
- 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 50 kbps for voice transmission.
- If operating in a low bandwidth environment, cap the bandwidth to be consumed on the call using the maxAverageBitrate configuration parameter of Plivo Browser SDK.
- Gracefully handling poor call quality experiences in real-time by consuming Media Metrics call quality events emitted by Plivo Browser SDK during the call.
- Submitting call quality feedback to Plivo programmatically from the Browser SDK or through the Send Feedback REST API. Your feedback allows Plivo to learn and optimize its network by identifying patterns across calls.
Voice data on VoIP calls are transferred over UDP. Ensure that your network firewall allows the transmission of UDP packets between the client device and the public internet.
If your firewall requires whitelisting of external IP Addresses, ensure that Plivo’s SIP Signalling and Media Server IPs listed here are whitelisted on your network firewall.
The following device characteristics have a direct impact on the quality of VoIP calls.
Browser and OS
Plivo Browser SDK uses WebRTC for voice calls. WebRTC is supported on the following browsers:
- Chrome on Windows, Linux, macOS, and Android.
- Firefox on Windows, Linux, macOS, and Android.
- Safari 11+ on iOS and macOS.
- New Microsoft Edge (Based on Chromium) on Windows.
Please note that while WebRTC is supported on the above Browsers, the Plivo Browser SDK v2 is officially tested and supported on the following browser environments only:
- Chrome v55+ in Desktop Environments
- Firefox v51+ in Desktop Environments
- Microsoft Edge v79+ on Windows.
Plivo highly recommends using 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 do not have call interruption handling for cellular calls received while on a browser call. Both these features are well supported on Plivo iOS and Android SDKs.
While most modern PC and smartphone devices are more than capable of handling VoIP media, incompatibilities between hardware components like network drivers, audio cards and other firmware components can result in unexpected issues with media handling.
Attempting to reproduce issues on other devices should be a key step in your debugging process.
The Audio Input and Output Device
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 greatly 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/driver configuration issues which can lead to static or white noise on calls. We recommend testing with a different headset, or with the inbuilt mic/speaker when troubleshooting such issues.