Speaking Bots

Conversation tuning

Choose the model, the voice speed and how eagerly the bot takes its turn

Every knob below is optional and per bot; leave it out and the server default applies.

The model

{
  "meeting_url": "...",
  "prompt": "...",
  "llm_provider": "anthropic",
  "llm_model": "claude-opus-4-7"
}
FieldValuesDefault
llm_provideropenai, anthropic, zaithe server's LLM_PROVIDER (Anthropic on the hosted API)
llm_modelany model name the provider acceptsthe server's model for that provider (claude-haiku-4-5 on the hosted API)

The provider must have a key: the server's own, or one you pass in credentials. Asking for a provider the server has no key for returns a 400 that names the missing one.

The defaults are the fast models on purpose: a spoken reply of a sentence or two gains little from a frontier model and waits seconds longer for it. Reasoning is turned off in whatever way the chosen model accepts, so picking a bigger llm_model costs latency but never a failed turn; on models whose reasoning is always on (Claude Fable, Opus 5.5 and newer) the bot runs at the lowest effort instead.

Speech

Text-to-speech is Cartesia; the voice comes from the persona (cartesia_voice_id in its metadata) or the server default. speech_speed is a multiplier between 0.6 and 1.5:

{ "speech_speed": 1.15 }

A prompt bot that should sound brisk benefits from both a higher speech_speed and an instruction like "answer in two sentences" — the LLM decides how much is said, the speed only how fast.

Turn-taking

The bot decides that someone has finished talking with voice-activity detection. turn_config tunes it:

{
  "turn_config": {
    "confidence": 0.5,
    "start_secs": 0.25,
    "stop_secs": 0.8,
    "min_volume": 0.6
  }
}
FieldWhat it doesDefault
confidenceHow sure the detector must be that it hears speech (0–1)0.5
start_secsSustained speech before a turn registers0.25
stop_secsSilence before the bot considers the speaker done and replies0.8
min_volumeMinimum input level counted as speech (0–1)0.6

Two patterns cover most needs:

  • Humans talking to a bot: keep the defaults, or lower stop_secs to 0.5 for snappier replies.
  • Bots talking to bots: raise stop_secs to 1.2–1.5 and start_secs to 0.4 so they stop barging in on each other, and read Multiple bots.

Re-engagement when the room is quiet

Once admitted, a bot that hears no new conversation for 15 seconds says something on its own, at most three times, then waits. This is what lets two reactive bots start a conversation without a human, and it stops a bot alone in a room from monologuing. On a self-hosted server the timing is BOT_IDLE_REENGAGE_SECS and the cap BOT_MAX_REENGAGE.

Built-in tools

enable_tools (default true) gives the LLM two small functions, current weather and current time, plus the ability to save a short call summary. Set it to false for a pure conversation; it has no effect on MCP tools, which are configured separately.

On this page