Zeli AvatarDeveloper docs
v0.1.0

Concepts / Avatars & tones

Avatars & tones

An avatar is the visual persona the server renders; a tone colours how a given line is delivered. You pick the avatar once in configuration and can steer the tone per utterance.

Choosing an avatar

Set avatar_id on AvatarConfig to select a prepared avatar. Uploaded avatar files are keyed by their filename stem, so presenter-male-1080.mp4 is addressed as presenter-male-1080. Omit avatar_id to use the server default.

from zeli import AvatarConfig
 
AvatarConfig(avatar_id="presenter-male-1080")

You can also override the avatar for a single conversational turn:

await session.send_message("Say that again, but excited!", avatar="presenter-male-1080")

Tones

talk() and create_talk_stream() accept an optional tone that colours the delivery of that line — for example "confident" or "happy".

await session.talk("This line lands with a little attitude.", tone="confident")
 
async with session.create_talk_stream(tone="happy") as talk:
    await talk.send("Great to see you!", end_of_speech=True)
Tones need the control gateway

Tones ride on talk and talk streams, which require the server's control gateway. See the control gateway.

Idle loop & sharpness

Two AvatarConfig fields shape the rendered look:

loop_mode"boomerang" | "forward"Optional

How the idle loop repeats while the avatar is between utterances.

enhanceboolOptionaldefault: False

Region-limited mouth restoration for sharper lips and teeth.

enhance_strengthfloatOptional

Blend factor for enhance, in [0, 1].

Emotion-responsive tone

Set emotion_responsive=True to let the server switch tone clips to match the emotion of the reply. See Emotions.

avatar_id and voice_id are honored today. The remaining persona fields are applied where the target server supports them.

Zeli Avatar · real-time avatars over WebRTC · self-hostable · AU data residency · source