RostoMake your own

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.

idle
A support conversation — tap any line to replay it
    Now read a line as something else

    Same words, same voice — only the intent changes. Each intent is a complete performance, so it looks the same whatever came before it.

    Say something (lip-synced)

    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")

    Same words. Any intent.

    The oldest exercise in acting: one line, read many ways. Tap an intent — the words and the voice actor never change, only what your app said the line is.

    idle

    So, about your order.

    Every reading below is the same recording session — same voice, same words. Watch the timing change: surprised waits a beat before it speaks.

    rig.direct({ intent: "greet", say: "So, about your order." })
    The same face ships as a sticker pack
    greet reaction stickerdelight reaction stickerlaugh reaction stickeragree reaction stickerempathize reaction stickerthinking reaction stickersurprised reaction stickerwink reaction sticker

    Eight looping reactions, rendered from your avatar at no extra cost, in both GIF and sticker-tray formats — with an optional caption that types out in sync. See them move →

    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.