Skip to content
~/smaje.net

Cara-4.1 Express: shipping Anam's new avatar model

Anam's Cara-4.1 Express is out today. Here's what the model brings and the product work I did around it, from Director Notes to wider framing and share links.

6 min read

Tags: anam · cara · ai · launch · product

On this page

Today we're releasing Cara-4.1 Express, Anam's latest real-time avatar model. It brings more expressive animation, better lip sync and closer control over how an avatar performs. Avatars also connect and reply faster, and custom avatars can use a much wider frame. Ben's launch article covers the model and the evaluations behind it, and my Cara 3 post explains how a model like this turns audio into a speaking face.

In a blind study on 16 October, 60 people held conversations with avatars from Anam, Tavus, HeyGen and LemonSlice without knowing which was which. Based on each person's average scores across four conversations with each provider, 51 of the 60 scored Anam higher than HeyGen, 53 higher than Tavus and 55 higher than LemonSlice. The evaluation code is public, so you can run the study yourself.

I'm Anam's Founding Product Engineer, responsible for the product experience across Lab and the SDK. The research team built the model. My part of this release was the product around it: the Director Notes controls, the framing work that led to wider avatars, still images that match the call, the page you see when someone shares an avatar with you, and the defaults a new persona starts with.

Directing the performance

Director Notes come out of beta with this release. A style sets how the avatar behaves across a conversation: you can pick a preset such as warm or supportive, or write a short prompt about emotion, expression, gaze and head movement. Cues such as [curious] or [concerned] change the delivery for part of a reply, and an expressivity setting controls how strongly the avatar follows them. Cara-4.1 Express sticks to that direction more closely than cara-4 did, and a custom style can now give separate instructions for speaking and listening.

Director Notes first appeared in beta with cara-4, which I wrote about in July. Before that launch, in June, I built the Director Notes panel in Lab's Prompt tab, along with the API validation behind it. In July I added cue guidance to the persona templates we generate, so personas made from them write cues into their replies, as Build's Dynamic switch does.

The notes guide the overall performance and won't place a particular gesture on a particular word. You'll get better results from a source photo with a neutral expression, a short custom style and an expressive voice, such as Cartesia Sonic 3.6 or ElevenLabs v3 Conversational, which can follow the same cues as the face. Through the API, it's a few lines in the persona configuration:

personaConfig: {
  // ...your avatarId, voiceId and other settings
  avatarModel: "cara-4.1-express",
  directorNotes: {
    customStylePrompt: "Lively, with energetic head nodding and smiling.",
    expressivity: 0.5,
  },
},

Making room for wider framing

When you create a custom avatar in Lab, you can now choose a framing up to 40% wider than standard, which shows more of the person and the room around them. Where the photo doesn't reach far enough, the rest of the scene is generated. That helps in app and kiosk layouts, where the avatar sits alongside other content.

My part of this started in July. Some customers' photos were still framed too tightly after our automatic crop, and widening the default for everyone risked drift and other artefacts. I added a framing slider for our team, with a live estimate of the crop drawn from the photo and the detected face. It warned when a wider frame needed generated pixels, so we could check the result before creating the avatar.

In September I changed the model that generates those extra pixels, after an evaluation found the previous one left pale borders and unfinished clothing at the edges. I then made wider framing an allowance we could raise for individual organisations, and gave those customers the slider. They could try wider shots while we worked on keeping them steady as the avatar talks. For the launch, we rebuilt avatar creation around a single framing step that marks which parts of the scene will be generated. The custom avatars guide explains what makes a good source photo.

Matching the still to the call

Framing has to agree everywhere an avatar appears. Our avatars are created from a square image, but their preview clips and landscape calls show a 3:2 crop of it. Wherever an interface showed the square and then played a clip or started a call, the face moved. It grew by half in a square card when a preview played, and dropped when a call started in a widescreen frame.

I found one of these while adding a Preview video switch to our embeddable widget. A customer had asked for a still image instead of the looping idle video before a call, and with the video off, the still sat higher in the frame than the call that followed. I fixed it there and in the remaining places in Lab, wrote down the framing rules for the team and added a lint rule that catches the mistake before it ships. The API follows the same rule: an avatar's imageUrl is the still framed like its videos and landscape sessions, and sourceImageUrl is the original square.

A share page built around the face

Share links let anyone talk to a persona in their browser, without an account. I redesigned the share page to match anam.ai and built the call around the avatar's face. Nothing sits on the video: captions are off by default and appear below it when you turn them on, and the controls fade after a few idle seconds.

The page explains why it needs your microphone before the browser asks, and it doesn't request your camera, which the avatar never receives. Phones get a portrait stream when the persona's model supports one, and the AI avatar label stays visible on small screens.

Faster replies

1.24s

Median reply time, from the end of your speech to the start of the avatar's reply

1.42s

Median connection time, from pressing Start to the first avatar frame

The timing results come from the same study, measured in each rater's browser across several regions. Anam had the fastest median reply and connection times of the four providers, and 95% of Anam sessions connected within 2.97 seconds. The latency benchmark has the full distributions.

Reply time covers the whole pipeline: speech recognition, the language model, the voice, the avatar and the network between them. Last year I wrote about where those milliseconds go. Speech recognition decides when you've finished talking, which is when the reply can begin. I set the Default speech recognition for English personas to Ink-2 from Cartesia, using the setting that ends turns soonest, and Lab suggests that setting whenever you choose Ink-2. The trade-off is that the avatar will occasionally start replying during a pause.

I also made Qwen 3.8 27b, which we host ourselves, the default language model for new personas and the first one Lab recommends. With Ink-2, a new English persona uses the same speech recognition and language model as our benchmark.

Try Cara-4.1 Express

Cara-4.1 Express is available now in Lab and through the API, and it's the default for new personas. To use it in an existing integration, set avatarModel: "cara-4.1-express". The models guide compares it with the earlier versions.

You can talk to example avatars on the launch page, or create a persona in Lab, give it a wider frame and a style of its own, and send someone the share link.

← All posts