A script goes in; a person saying it comes out. Voice and performance arrive together, so there is no separate TTS step and no lip-sync pass — the usual route needs two billable calls and an alignment you have to check.
avatar-x-t2v · avatar Jasmine · 13.48s · 720×1280 · rendered in 316s · $4.25
This is the entire input. No prompt, no reference image, no voice sample:
230 characters produced 13.48 seconds of speech — about 17 characters per second. That ratio is how you price a script before you render it.
chatterbox-tts → talking-head — generate the voice, then animate a still to it. Two billable steps, two failure points, and lip-sync only as good as the alignment. Here the performance is the model's output, not something assembled afterwards.aspect_ratio parameter (bare names are 9:16 portrait; each has a (16:9) variant). This makes creator-style pieces to camera. If your brief specifies a location, generate the scene and put a talking head on it with talking-head or veed-lipsync-v2 instead.| Capability | Probe | Result | Wall clock |
|---|---|---|---|
avatar-x-t2v | 230-char script · n=3 | 3/3 | p50 316.4s · p95 318.6s |
avatar-x-ref2v | ~6s audio track · n=2 | 2/2 | p50 286.4s · p95 287.6s |
This family lands just past 300 seconds — and Node's fetch capped a single request there, underneath every ceiling we had configured. The identical script measured 0/3, every probe dead at 301.5s, and each one was billed. It looked like a broken model; it was our HTTP client.
Long renders now travel over the SDK's heartbeat stream, so the same probes are 3/3 at 316s. Avatar X is usable because of a transport fix, not because anything changed upstream — a useful reminder that "the model is flaky" is a conclusion, not an observation.
veed-lipsync-v2 — roughly 4× cheaper, and built for exactly that.