initial_wait_timeout_ms to emit its first token, the server speaks a short filler (“let me think”, “good question, one moment”) via TTS, then transparently hands off to the main response when it lands.
Enabling responsiveness
All fields are optional pointers — sending
null or omitting a field leaves the server-side default in place.
Interaction with TTS
The filler is spoken through the same TTS pipeline as the main response — the same voice, the samedelivery_mode, the same language. Filler audio is delivered on your transport’s normal assistant-audio path: on WebSocket sessions it arrives on the regular response.output_audio.delta stream, and on WebRTC sessions it plays on the inbound RTP audio track (the same track that carries main-response audio — see WebRTC). There is no dedicated filler event type or separate media track. This means:
- Voice / language / accent flips made via
session.updateapply to fillers immediately. - If you have configured
providerData.tts.conversational = true, fillers participate in the shared TTS context just like main responses. pause_text, when set, is synthesized through the same TTS call after the filler — useful for a softer transition from “let me think” into the actual answer.
Example: Japanese fillers
The compiled-in filler prompt biases the small LLM toward English, so a Japanese session needs both a Japanese TTS language pin and aprompt_template override that tells the filler LLM to reply in Japanese. The TTS voice and delivery_mode come from your normal audio.output and providerData.tts settings, so the filler is spoken in the Japanese voice you’ve already configured.
prompt_templateis the single most important setting for non-English fillers. The compiled-in default is English-biased; without the override, the filler LLM emits English (“let me think”) even mid-Japanese conversation. Keep the prompt short and example-driven — the filler LLM is small and benefits from concrete examples in the target language.providerData.tts.language: 'ja-JP'anchors the TTS accent so the synthesized filler audio is rendered in Japanese, not transliterated through an English voice.max_tokens: 12caps filler length. Japanese fillers are typically short (ちょっと待ってくださいis 5 tokens-ish); keep this low so the filler doesn’t outrun the main LLM warmup.- Voice selection (e.g.
Hiroshi) anddelivery_modeare inherited from your TTS config — no responsiveness-specific override needed.
Tuning tips
- Start with
enabled: trueand the server defaults. Measure end-to-end perceived latency before tuning anything else. - If fillers fire too often (the user notices a filler before every response), raise
initial_wait_timeout_ms. Fillers should mask only the slowest tail of main-LLM responses. - If fillers fire too rarely (long awkward silences), lower
initial_wait_timeout_ms. - For multilingual sessions, append a language directive to
prompt_template. The compiled-in default biases the filler LLM toward English; without the override the agent will speak English fillers mid-Spanish or mid-French conversation. - Pair with
enable_filler_on_first_assistant_reply: false(the default) so the opening greeting plays cleanly — fillers on the very first turn tend to feel awkward.