Skip to main content
The realtime demo’s natural cadence comes from three things:
  1. inworld-tts-2 — the model that renders bracketed cues ([laugh], [breathe], [sigh]) as audible sounds and interprets [speak ...] steering tags.
  2. providerData.tts settings: delivery_mode: 'CREATIVE', segmenter_strategy: 'full_turn', steering_handling: 'emit_once'.
  3. A system prompt that tells the LLM to emit those tags.
Voice choice matters less than the three above. The demo uses Sarah.

session.update

Send this after the WebSocket opens. Replace SYSTEM_PROMPT with the prompt in the next section.
Notes:
  • delivery_mode: 'CREATIVE' is the most expressive of STABLE | BALANCED | CREATIVE.
  • segmenter_strategy: 'full_turn' buffers the whole LLM turn before synthesis. Highest quality, highest time-to-first-audio. Switch to fast_start or sentence if latency matters more.
  • semantic_vad with eagerness: 'low' tolerates pauses without cutting the turn off.
  • backchannel emits “uh-huh” while the user is still talking. responsiveness emits a short filler if the LLM is slow to reply.

System prompt

inworld-tts-2 only renders tags that appear in the text. The LLM has to be told to emit them. Use this as a starter:
Layer your own persona on top.

What each piece does

  • delivery_mode: 'CREATIVE'. STABLE and BALANCED flatten prosody. CREATIVE allows more expressive variation.
  • segmenter_strategy: 'full_turn'. Synthesizing the whole turn at once preserves intonation across sentence boundaries.
  • Prompting to output steering and non-verbals. Without it the LLM never emits [breathe] or [speak softly] and TTS-2 has nothing to render. This is the biggest single contributor.
  • backchannel + responsiveness. Optional. Fill dead air during user turns and slow LLM warmups respectively.

Tweaks

  • Latency-sensitive (mobile, WebRTC). Use segmenter_strategy: 'fast_start' or 'sentence'.
  • Voice cloning. Cloning gives you timbre. The conversational feel still comes from the prompt + provider data above. See voice cloning.
  • Non-English. Append a language directive to the system prompt. Keep [speak ...] and [laugh] / [breathe] tags in English. Set providerData.tts.language for the TTS accent.

See also