Drive the face.
Every control here maps to one direct() call — the same call your app
makes. Replay a scene, re-read a line as a different intent, or type your own.
The scene.
Every control here maps to one direct()
call. Type your own line, pick a tone and a voice, and watch the call that produced it.
Same words, same voice — only the intent changes. Each intent is a complete performance, so it looks the same whatever came before it.
This demo uses a real neural voice where enabled (your browser otherwise). Rosto animates the face; you bring the voice. Adding voice →
rig.setState("idle")
Now make it your face.
That was a demo avatar. Yours is the same engine with your own face — or a wholly fictional one, if you would rather not upload a photo.
One avatar is free to make. It then runs in any browser at no cost, forever — and you can download it and host it yourself.
Looking for the motion instrument (A/B against the legacy engine, the frame-true page timeline)? That is an engineering tool, not a demo: /motion-lab.