Latency, buffers and audio stream interruptions

To understand the difficulties associated with VoIP over Internet read the Concept chapter. RemAud tries to achieve a low latency but one of the greatest difficulties are the buffers as you can read on the concept page.

RemAud uses very small sized buffers to capture the soundcard audio and a high number of small audio stream transmissions over the Internet to achieve minimum latency. The buffer sizes are currently at the lowest possible minimum. This works fine for my environment for a year now. But you might experience glitches or gaps or interruptions in the audio transfer sometimes. This can have several reasons. One can be a busy Internet line in the evenings when everybody is at home and on the Internet. One suggestion is to switch to a Codec setting with a lower sample rate (8 kHz) and a bit rate of 8 bps.

CPU monitor sample

The next advice is to open Windows Task Manager and to watch the CPU usage.

With several other applications open (e.g. Internet browser) and RemAud connected to the server the CPU usage should be around 9% (sample above for a XP computer with 4GB RAM). If you experience audio transfer interruptions watch the CPU usage again. If the CPU usage is 100% or almost 100% close other applications. Internet browsers for example can sometimes comsume many resources.

Most of the latency on the VoIP path from your radio to your ears is however generated on your own computer! One major source of latency is the soundcard. The audio stream arrives in many small chunks of data. The soundcard needs time to process the data and to convert it from digital to analogue. If the audio stream packets arrive in a higher frequency than the soundcard can process them, the audio stream is buffered and the sound output delayed. This can lead to delays of 500ms or even more than one second and that is unacceptable for remote radio audio.

The Soundcard Buffer Overrun (see Settings > Audio Buffers) can be limited and the latency reduced. This value can always be changed at runtime.

Another option to tune and optimize is the buffer length of the audio server as explained in the Server Audio Buffers.

Back to documentation