A real-time AI avatar gives a voice agent a face, and it also puts a third-party media service between your text-to-speech and the user. In a Pipecat pipeline, the avatar service receives your synthesized speech, renders the face, and sends back the audio the user hears. When the user interrupts, Pipecat tells that service to stop, but speech already in flight still plays.
We tested four avatar APIs in avatar-only mode, all through their Pipecat integrations: HeyGen’s LiveAvatar, Tavus, Simli, and Anam. A scripted user interrupted each one mid-answer with a new request, and we measured how long the old answer kept playing and how long the corrected reply took to start. With no avatar, the old answer stopped about 0.6 s after the user spoke. With an avatar, it stopped 1.0 to 1.4 s after. Setting aside the LLM’s own reply time, the corrected reply started 0.46 to 1.10 s later than baseline. Time to first video frame ranged from 3.5 to 9.8 s.
Below we compare integration, startup, interruptions, video, and pricing, then match each vendor to a use case. The post builds on our earlier pieces on the avatar versus the voice AI system behind it, shipping a production avatar system, and AI agent interruption handling.
How we tested the avatars with Pipecat
Every provider plugs into Pipecat 1.12.0 as a video service that sits after text-to-speech, and the media path has the same shape for all four (Figure 1). Pipecat sends the synthesized speech to the vendor over a socket. The vendor renders the face and sends audio and video back to the bot over WebRTC. The bot then re-encodes both for the browser over a second WebRTC connection. That is two network hops and two video encodes, and the user hears audio that made a round trip through the vendor.
Figure 1. The two-hop media path shared by all four providers.
Everything else stayed fixed: Deepgram speech-to-text, OpenAI Gpt-6 Luna Model evaluated at zero temperature with non-reasoning configuration, one Cartesia voice, Silero VAD and Pipecat’s SmallWebRTC transport. Each vendor ran in its avatar-only mode, so it rendered our audio instead of running its own agent. A scripted browser user asked “Explain WebRTC to a nontechnical product manager in two sentences.” 1.5 s after the answer became audible, it said “Stop, actually explain it in five words.” We ran three sessions per provider, plus three with no avatar as a baseline.
LiveAvatar vs Tavus vs Simli vs Anam at a glance
Each number is the range across three runs from one machine, one location and one day, so treat them as exploratory, not as a ranking. With no avatar, the old answer stopped 0.56 to 0.61 s after the user started speaking, and the corrected reply took 3.02 s (median) to begin, 0.90 s of it outside the LLM.
| Dimension | LiveAvatar (LITE) | Tavus (echo persona) | Simli | Anam (audio passthrough) |
| Provider integration path | Built-in HeyGenVideoService in LiveAvatar mode. Media returns over a LiveKit room | Built-in TavusVideoService. The bot joins a Tavus Daily room as a hidden participant | Built-in SimliVideoService. Audio goes up a WebSocket, media returns over a peer connection | Community pipecat-anam package, pre-release 0.2.0a7. Media returns over a peer connection |
| Setup effort and flexibility | Low. Set the service type and LITE mode explicitly. Large stock library, many on green screen | Low. One-time persona in echo mode. Large stock replica library | Lowest. Pick a non-Trinity face to avoid extra buffering | Medium. Separate package, pin the version, set API version, model and passthrough |
| Session startup (first frame, from click) | 4.5 to 6.1 s | 8.1 to 9.8 s | 8.0 to 8.3 s, no video before the first speech | 3.5 to 4.1 s |
| Interruption and correction (old answer stops / correction vs no avatar) | 1.20 to 1.37 s / +0.77 to +0.86 s | 1.32 to 1.41 s / +0.82 to +1.10 s | 1.00 to 1.07 s / +0.46 to +0.72 s | 1.03 to 1.04 s / +0.62 to +0.65 s |
| Video experience | 1280×720 at 25 fps. Lively idle motion between turns | 1280×720 at 25 fps. Real backgrounds. Watermark on our test account | 512×512 at 25 fps. Mouth stops with the audio | 1152×768 at 25 fps. Plain background |
| Pricing model and main caveat | Monthly credits, 1 credit per minute in Avatar Only mode. Caveat: our plan rejected sessions over 120 s | Monthly plan plus per-minute overage, 30 s minimum per conversation. Caveat: Pipecat sets no call limit, so end every conversation | $10 signup credit, then pay as you go, rate to verify. Caveat: user hears 16 kHz audio | Monthly plan, billed per second, $0.11 to $0.16 per extra minute by plan. Caveat: pre-release package |
Across the four providers, the table shows three patterns:
- Every avatar roughly doubled how long the old answer kept playing. The bot detected the interruption about 0.5 s after “Stop” began in 14 of 15 runs, so the extra time is speech already in flight in the avatar path.
- Corrections started 0.46 to 1.10 s later than without an avatar, once the LLM’s own reply time is taken out, mostly explained by the 0.61 to 1.43 s avatar round trip from our speech entering the avatar to its audio coming back.
- Startup varied most, from under 4 s to almost 10 s before the first frame.
Interruption and lip sync results by provider
LiveAvatar
HeyGen’s real-time API runs in Pipecat through HeyGenVideoService. Our audio goes up a WebSocket as 24 kHz PCM, and the avatar returns over a LiveKit room. The old answer stopped 1.20 to 1.37 s after “Stop”, with 710 to 910 ms heard past the 300 ms mark, and corrections arrived +0.77 to +0.86 s later than baseline. The idle animation keeps the head moving between turns, which our frame-difference method could not separate from speech motion, so we report no mouth-lag number. Two of the three corrections came back as six words, as did most replies with the other avatars and with no avatar. That wording comes from the LLM, not the avatar.
Tavus
Tavus ran with an echo persona, so the replica spoke our Cartesia audio. The bot joins a Tavus-owned Daily room as a hidden participant. The old answer stopped 1.32 to 1.41 s after “Stop”, with 745 to 1050 ms heard past the 300 ms mark, and corrections arrived +0.82 to +1.10 s later than baseline. The mouth stopped within about 0.1 s of the audio. Pipecat’s Tavus service sets no maximum call duration, so end every conversation explicitly or it keeps billing.
Simli
Simli takes our audio over a WebSocket at 16 kHz and returns audio and video together on one peer connection. That shared path shows: the mouth stopped with the audio in every run. The old answer stopped 1.00 to 1.07 s after “Stop” and corrections arrived +0.46 to +0.72 s later than baseline. The cost is at the start. The service connects during pipeline setup, so the greeting began 3.4 to 3.6 s after the browser connected, with no video before it. The user also hears the 16 kHz audio Simli returns, and Pipecat’s bot-stopped-speaking event fires only after a fallback of about 3 s.
Anam
Anam joins Pipecat through a community package that is still a pre-release. With audio passthrough on, it renders our audio. First frames arrived 3.5 to 4.1 s after the click. The old answer stopped 1.03 to 1.04 s after “Stop”. Corrections arrived +0.62 to +0.65 s later than baseline, the narrowest spread we saw, and mouth motion continued up to about 0.1 s after the audio stopped. We confirmed that last figure by stepping through the clips frame by frame.
Video quality after Pipecat’s re-encode
All four arrived in the browser as VP8 at about 400 kbps and 25 fps, because the pipecat bot re-encodes the second hop. Figure 2 shows frames captured before that re-encode. Only Tavus showed a watermark on our test accounts.

Which real-time AI avatar to try first
Start from the requirement that matters most for your product.
- If your users interrupt often, as in sales or support calls: Start with Simli or Anam. Their old answers stopped about 1.0 s after the user spoke, against 1.2 to 1.4 s for the others.
- If startup is visible, as on a kiosk or a page that opens straight into the avatar: Look at Anam and LiveAvatar, and preload a session or show a placeholder either way.
- If your avatar should sit in a scene:Tavus replicas come with real backgrounds. Many LiveAvatar stock avatars use a green screen, which suits compositing the avatar over your own background.
- If realism matters most. This one is my subjective opinion. Tavus looks the most human to me and was the easiest to set up, followed by Anam. LiveAvatar comes next for developer experience.
- If your stack already runs on LiveKit or Daily. LiveAvatar uses a LiveKit room and Tavus a Daily room underneath. Your Pipecat code stays the same with either. Picking the one that matches your infrastructure means your team debugs media routing on a platform it already knows.
- If cost is a leading factor: Compare how each vendor bills, since the rate alone won’t tell you what a session costs. Per-second billing, 30-second minimums and credits per minute add up differently for short sessions.
Test setup and limitations
We ran the test on October 19, 2026 from one Apple M4 Pro laptop, with headless Chromium 145 as the scripted user and the bot on the same machine, so the second hop ran over localhost. Versions: pipecat-ai 1.12.0, pipecat-anam 0.2.0a7, daily-python 0.34.0, livekit 1.1.20 and simli-ai 2.0.3.
We used stock avatars only. Sessions lasted 34 to 42. Shorter than a real conversation, to stay within trial credits, and every measurement falls inside that window. Three runs per provider make this exploratory, and as in our call recovery benchmarking post, check the method before trusting the number.
LiveAvatar and Anam consented in writing to this testing, and Tavus and Simli terms allow it. Pricing comes from each vendor’s page on 2026-10-15 and can change. The harness, raw numbers and clips are in our repository.
Choosing a real-time AI avatar for your Pipecat agent
An avatar changes the media path of a voice agent. The avatar service sits after text-to-speech, holds speech the user has not heard yet, and returns the audio the user hears. In our tests, an interrupted answer kept playing 1.0 to 1.4 s after the user spoke, against about 0.6 s with no avatar, and the first video frame took up to 9.8 s to appear. These numbers depend on the provider and on how it connects to your pipeline, so measure them in your own setup before you commit.
Before a trial, answer three questions:
- How often will your users interrupt? If often, start with the providers that stopped fastest in our tests.
- Can you accept a third party owning the audio your users hear? Its buffering and audio quality become part of your product.
- How many sessions must run at once on the plan you can afford? We did not test concurrency, so ask each vendor for its limit per plan.
WebRTC.ventures builds real-time audio and video applications and integrates voice AI agents into them. An avatar adds a third-party service to that media path: two WebRTC connections, two video encodes, and a vendor that controls the audio your users hear. We can help you choose a provider, integrate the avatar and agent into your application, and run these interruption and startup tests on your setup before launch. Contact us to talk through your real-time AI avatar project.
Further Reading:
