Zeli AvatarDeveloper docs
v0.1.0

Concepts / Voices

Voices

The voice is the timbre the avatar speaks with. It's set once on the avatar persona, alongside the language and (for conversational turns) the model that generates the words.

Selecting a voice

Set voice_id on AvatarConfig:

from zeli import AvatarConfig
 
AvatarConfig(
    avatar_id="presenter-male-1080",
    voice_id="your-voice-id",
    language_code="en",
)
voice_idstrOptional

The voice the avatar speaks with.

language_codestrOptional

BCP-47 language, e.g. "en".

Text-to-speech vs. the model

How the words are chosen depends on how you drive the avatar:

  • talk(text) speaks your exact text directly through TTS in the configured voice — the conversational model is not involved.
  • send_message(text) runs the server's conversational model (llm_id), and the avatar speaks the generated reply in the configured voice.
# Exact words, straight to the voice
await session.talk("Reading this verbatim.")
 
# Model generates the words, the voice speaks them
await session.send_message("Introduce yourself in one sentence.")

The conversational model

For send_message, set llm_id (and optionally system_prompt) on the persona:

llm_idstrOptional

Conversational model id used by send_message.

system_promptstrOptional

System prompt priming the model's replies.

Use talk when you already have the words (your own model, a script, or fixed copy) and send_message when you want the server's model to generate them. See Driving the avatar.

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