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.