Livepeer Agent · Fal Expansion · video · scripted presenter

Scripted Presenter Daily · Mirage Avatar X

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.

Format
Video · bundled voice
Caps
avatar-x-t2v · -ref2v
Cost
$0.315 per second
of speech
Speed
~316s p50

One call: 230 characters in, a presenter out

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:

{
  "script": "Good evening. Tonight on the Livepeer desk: three new capabilities went live on the network today, and the one everybody is asking about renders thirty seconds of video in a single pass. We will show you what that looks like.",
  "avatar": "Jasmine"
}

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.

Why one call matters: the usual route is chatterbox-ttstalking-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.
What you cannot control — read this before planning a shoot. You choose an actor from 21, and the actor's own setting comes with them. The stock library is UGC/selfie-framed rooms, not sets: there is no way to art-direct the background, the framing or the wardrobe, and there is no 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.

What we measured

CapabilityProbeResultWall clock
avatar-x-t2v230-char script · n=33/3p50 316.4s · p95 318.6s
avatar-x-ref2v~6s audio track · n=22/2p50 286.4s · p95 287.6s

The same probes were 0/3 the day before

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.

The honest limits

Open playbook → ← All playbooks All showcases →