BlogVoice Engineering & Infrastructure

Why Voice AI Audio Gets Choppy: A Guide to RTP Playout Pacing

Yanitly EditorialOctober 18, 20267 min read

Editorial review

This article is reviewed by the Yanitly editorial team for product accuracy, privacy and security claims, and integration references. Technical claims are kept aligned with official documentation or observed Yanitly product behavior.

Updated: 2026-10-18

Why Voice AI Audio Gets Choppy: A Guide to RTP Playout Pacing
Image note: Editorial visual for "Why Voice AI Audio Gets Choppy: A Guide to RTP Playout Pacing". Yanitly editorial visual set prepared for this SEO guide.

One of the hardest problems teams face when they run phone calls on real-time voice models is the metallic breakup and clipped syllables that appear even when network measurements look clean. Many teams, out of VoIP habit, assume it is network jitter or packet loss and look for the fix in the wrong layer.

Measurements on live calls by the Yanitly voice team showed that choppy audio in real-time AI calls usually comes not from network jitter but from the gap between how fast the voice model sends audio and how fast the phone line consumes it. This article explains the cause, the pacing approach that closes the gap, and the design choices that speed up call setup, at a conceptual level. This infrastructure runs underneath our AI call center solution.

In real-time voice AI, dropping audible speech to shrink a buffer clips syllables; corrections should only ever happen during silence.

Diagnosis: Why Choppy Audio Is Usually Not Jitter

In a classic phone call, the devices at both ends produce small audio packets at regular intervals, about every 20 milliseconds, and the other side plays them back at the same pace. Real-time voice models instead produce audio in computation chunks rather than on a fixed clock:

  • Audio arrives in chunks: The model sends audio in larger groups instead of small, regular packets.
  • Slightly slower than real time: During long sentences, audio can arrive a little more slowly than the phone line consumes it.
  • Silence when the queue is empty: The phone side expects one packet per time slot; if the queue is empty at that moment, no packet goes out.

Every packet that cannot be sent is heard as a short gap or break on the caller's phone. The problem is not the network but two different rhythms meeting.

Why a Classic Jitter Buffer Is Not Enough

Jitter buffers in traditional phones are designed to smooth out packets whose average rate is correct but whose arrival times fluctuate. When the audio source is on average slower than real time, the problem is not packet order but that there is less audio than is being consumed. A passive buffer will sooner or later run dry. What is needed is an application layer that understands speech, silent moments, and feedback about how full the phone side is.

How the Pacer Works

Instead of pushing the model's audio straight onto the line, Yanitly passes it through a pacer. The pacer applies a few principles together on every turn:

  1. 1.A small, adaptive pre-buffer: When a new reply starts, playback begins with a very short pre-buffer. If starvation is seen during the call, this buffer grows in a controlled way.
  2. 2.Lead packets that feed the line: At the start of the stream, a few packets are handed to the phone side in advance so the first time slots never meet an empty queue.
  3. 3.Bridging short gaps: If the next chunk from the model is late, a limited number of silent bridge packets keep the line's rhythm intact.
  4. 4.Corrections only during silence: When the buffer builds up more than needed, latency is reduced only through silent packets; audible speech is never dropped.
  5. 5.Small corrections from feedback: Limited adjustments are made based on how full the phone side reports it is, and audio that arrives before the call is answered is not counted.

Audible Speech Is Never Cut

The most important design rule is that packets containing speech are never thrown away to reduce latency. Clipped syllables are far more annoying to a listener than a little delay, so corrections happen in the silent moments between sentences.

Waiting Audio Is Cleared When You Interrupt

When the caller starts speaking while the assistant is talking, the audio waiting in the queue has to be cleared at once. The pacer drops the waiting audio and makes a clean start for the next reply, so the assistant can quickly switch to listening.

Balancing Latency and Choppiness

Buffer design always involves a trade-off. A large buffer reduces choppiness but delays the moment the assistant starts to answer; after a short silence, the caller tries to speak again and the two voices overlap. A very small buffer reduces delay but stays exposed to gaps when the audio source slows down.

Yanitly's approach is to start small and grow only when needed instead of using a fixed large buffer. Calls without problems keep a natural conversational pace, while calls where the audio source slows down are protected against choppiness first. The naturalness of a phone conversation comes from this adaptive behavior rather than from a single setting.

Starting Calls Without Waiting

In real-time voice, the opening moments of the call matter as much as the pacing of the stream. If the system waits for the recording system to be ready before answering, a momentary slowdown in storage delays the opening.

Recording and Connection Start in Parallel

On lines where recording is enabled, Yanitly starts recording preparation and the audio connection in parallel. It waits only a short, bounded time for the recording decision. If the recording system is not ready in that time, the late recording is marked and skipped, and the customer's conversation starts without waiting. The live conversation always comes first.

Processing Audio on a Nearby Node

In a voice infrastructure that runs on more than one server, the distance between the edge node that answers the call and the media worker that processes the audio also affects latency. Yanitly therefore prefers the local media workers on the node where the call arrived. If the local node is accepting calls and its load is below a set limit, the audio is processed on the same server; when the limit is exceeded or the node is in maintenance, the call is routed to the least-loaded node. This decision is recorded for every call. Under rising load, calls are balanced across nodes; when a node is drained for planned maintenance, new calls are sent to the other node while ongoing calls are allowed to finish naturally. Capacity is managed without turning into an interruption the caller would notice.

You Cannot Improve What You Do Not Measure

To track audio quality objectively, a short quality summary is kept at the end of every call. The summary contains no free text or personal data; it carries numeric indicators such as buffer adjustments, bridge packets, and media node selection. A new audio setting is shipped as a release, and if needed the previous behavior is restored with another release, so it is always clear which setting is running in production.

A Practical Checklist for Call Audio Quality

When you evaluate audio quality on your own lines, these steps help:

  1. 1.Make test calls: Place a few test calls from different carriers and at different times of day and listen carefully.
  2. 2.Tell the symptoms apart: Constant delay, occasional lost syllables, and complete drops point to different causes; note your observations with that distinction.
  3. 3.Test the line and transfers together: Try after-hours routing and callback scenarios for inbound calls and the Web Call Desk and mobile outbound calling flow for team calls, and share the results with us.
Related solution

AI Call Center

Use Yanitly voice AI to answer phone requests, automate appointment and information workflows, and connect call summaries to your support team.

Topic cluster

Enterprise SIP trunking, Web Call Desk, and real-time voice engineering

Netgsm, Verimor, and business SIP trunk connections, outbound calling with the Web Call Desk and mobile app, after-hours team routing, and RTP playout pacing in real-time voice.

Frequently Asked Questions

Why is choppy audio in real-time voice AI calls usually not caused by network jitter?

Real-time voice models produce audio in groups rather than small regular packets and may send it slightly slower than real time during long sentences. Because the phone side expects one packet in every time slot, no audio goes out when the queue runs empty, and this gap is heard as choppiness.

How does the Yanitly pacer balance starvation and buffer build-up?

The pacer starts each reply with a short pre-buffer that can grow when needed, feeds the line with a few lead packets at the start, and uses a limited number of silent bridge packets during short delays. When the buffer builds up, it corrects only during silent moments, so audible speech is never dropped.

Does a slow start of call recording affect the live call?

No. On lines where recording is enabled, recording preparation and the audio connection start in parallel, and the system waits only a short, bounded time for the recording decision. If recording is not ready in time, the late recording is marked and skipped, and the call starts without waiting.

How is the media node chosen in a multi-server voice infrastructure?

The local media workers on the node where the call arrived are preferred first. If that node is accepting calls and its load is below a set limit, the audio is processed on the same server; when the limit is exceeded or the node is in maintenance, the call goes to the least-loaded node.

Try Yanıtly for free

Discover AI-powered customer service with a 14-day free trial.

Start Free