Skip to content
~/smaje.net

We Shipped Cara 3

6 min read
anamcaraailaunchtechnical

Today we're releasing Cara 3, the third generation of Anam's real-time photorealistic avatar model. I want to talk about what it is, how we got here, and what it took.

What Cara 3 is

Cara 3 is a real-time photorealistic avatar generation model. Given audio input, it produces video of a human face speaking that audio, with accurate lip sync, natural expression, and consistent identity, at 30fps with sub-180ms end-to-end latency.

That sentence took two years of work.

<180ms

End-to-end latency

#1

Ranking on our evaluation benchmark

1,000+

Customers on the platform

The path from Cara 1

Some context on how we got here, because the journey matters.

Cara 1 was our proof of concept. It demonstrated that real-time photorealistic generation was possible in a browser. The quality was inconsistent, the latency was high, and it struggled with anything beyond simple conversational scenarios. But it worked, and that was enough to validate the approach.

Cara 2 was the engineering release. We rebuilt the inference pipeline, moved to multi-region deployment, and cut latency by 40%. Quality improved a lot, but we were still constrained by the underlying model architecture. There was a ceiling we couldn't push through without fundamental changes.

Cara 3 is the research release. We redesigned the model architecture from scratch, using everything we'd learned from two years of production data and customer feedback. It solves the same problem as Cara 2, much better, and shares almost nothing with it.

How it performs

We evaluate our models across four dimensions: visual quality, lip synchronisation accuracy, naturalness of expression, and responsiveness (inverse latency). Here's how Cara 3 compares:

Model Evaluation Scores (higher is better)

These scores come from our internal evaluation framework, which combines automated metrics with human evaluation panels. I'm biased, obviously, but the numbers are real and the methodology is consistent across all models tested.

The most meaningful improvement is in naturalness. Cara 2 could produce a face that looked real and moved its lips correctly, but there was something subtly off about the expressions. A flatness that was hard to articulate but easy to feel. Cara 3 has micro-expressions: the slight narrowing of eyes during a thoughtful pause, the asymmetric smile, the barely perceptible head tilt when listening. These details are what take it from "impressive technology" to "I forgot I was talking to an avatar."

The biggest quality gains in Cara 3 came from training on better data, not from making the model larger. We built a custom dataset of high-resolution conversational video with frame-level expression annotations. Better examples of natural conversation did more for the model than extra parameters would have.

The technical story

I want to share some of what went into this, partly because I think it's interesting, and partly because too many AI launches describe the result without talking about the engineering.

Architecture

Cara 3 uses a diffusion-based architecture conditioned on audio features, identity embeddings, and an expression state model. The expression state model is new: a lightweight recurrent network that maintains a representation of the avatar's emotional state across frames, which gives temporal coherence that per-frame generation can't achieve.

The key constraint was inference speed. Diffusion models are typically slow; they require multiple denoising steps, each of which is a full forward pass. We use a distilled model that produces acceptable quality in four steps, down from the fifty that a standard diffusion model would require. Those four steps need to complete in under 40ms to stay within our latency budget.

We tried several approaches to fast diffusion: consistency models, progressive distillation, adversarial distillation. The approach that worked best was task-specific distillation using our own production data. Generic distillation techniques didn't preserve the fine details that matter for face generation. Training the distilled model specifically on conversational face data, with loss terms for lip accuracy and expression consistency, gave us quality that the generic approaches couldn't match.

Streaming pipeline

The inference pipeline is fully streaming. Audio comes in, face frames come out, and every stage begins processing before the previous stage has completed: audio processing on the first chunk, TTS on the first sentence from the LLM, face generation on the first audio frames. I wrote about this in detail in my latency post, but the short version is that pipelining puts our total latency closer to the slowest single stage than to the sum of all stages.

Multi-region deployment

Cara 3 runs on GPUs across three regions, with the API orchestration layer deployed in three regions as well. We keep the model loaded in GPU memory permanently, which eliminates cold start latency. When a user connects, inference starts on the first audio frame. No loading, no warm-up.

Live Cara 3 avatar. Hit the microphone button and have a conversation. Best with headphones.

What it took

Cara 3 was built by four researchers backed by a dev team of five. During the development period, we maintained production for existing customers, onboarded new ones, and kept the company running. There were weeks where everyone was heads-down on model evaluation, and weeks where nobody touched the model because a customer issue took priority.

The research-to-production pipeline was the hardest part. We'd develop a promising approach in the research environment, get exciting results on our evaluation benchmarks, and then spend weeks making it work within the latency and memory constraints of production. More than once, a technique that worked well in the lab was completely impractical at production scale.

This was a team achievement. Shipping a new model while running a production system is hard, and the team held together under real pressure.

What's next

Cara 3 is a big step. Here's where I think we'll see the most progress over the coming year:

Multi-modal interaction. Cara 3 responds to audio. Future versions will respond to what they see: the user's facial expressions, gestures, and emotional state. Conversation is bidirectional, and our avatars should reflect that.

Personalisation. Every Cara 3 avatar uses the same expression model. We want to support avatars with distinct personalities. Not just different faces, but different conversational styles, expression tendencies, and response patterns.

Efficiency. We want Cara-quality avatars running on-device, without a GPU server. The model architecture supports this in principle. The engineering challenge is making it practical.

Try it

Cara 3 is available today through the Anam platform. If you're building something that needs a human-like AI interface, I'd like to hear about it.

I'm proud of the engineering, but the point was never the technical achievement. Interacting with AI should feel human, and Cara 3 is the closest we've come to that.

It isn't perfect. It's a third-generation model from a small team, and there are things we want to improve. But when I have a conversation with Cara 3 and momentarily forget it's generated, I know we're working on the right problem.

← All posts