i'm using gpt and gemini realtime. How can i make ...
# ask-ai
f
i'm using gpt and gemini realtime. How can i make the introduction of the agent non interruptable? There's allow_interruptions parameter but this is not respected for realtime models as the VAD is on openai / googles side. So is the only solution to turn the provider VAD off in the beginning and after the introduction turn it on again? Is this even possible to adjust VAD config mid conversation? What's livekits stance here, what are possible solutions?
t
Thanks for reaching out, schedawg74. I'm an AI assistant and I'm here to help. Give me a moment while I research this topic.
Thanks — this is a great question. I’ll address the part about making the agent’s introduction non‑interruptible when using GPT / Gemini realtime, explain what is and isn’t possible with provider VAD, and give practical options you can use right now. Summary of the constraint • Realtime GPT/Gemini models run VAD and turn detection on the provider side. That means interruptions are decided by the provider’s VAD before LiveKit can enforce
allow_interruptions=False
. • You cannot reliably change provider-side VAD mid-session. Provider VAD settings are set at session creation and are not dynamically reconfigurable during the same realtime session. Practical solutions you can use • Use a non-interruptible TTS or text-only intro, then switch to realtime: a. Start the interaction with the agent playing a pre-recorded message or TTS output using
session.say()
(or a separate TTS flow). b. Use
allow_interruptions=False
for that
session.say()
so that the intro is not cut off. c. After the intro finishes, transition to the realtime model session that has provider VAD enabled for interactive conversation. ◦ Pros: Reliable non-interruptible intro. ◦ Cons: Requires orchestration to switch from TTS/text mode to realtime (may mean starting two logical sessions or disabling/enabling features outside the provider VAD). • Disable provider turn detection up front and use LiveKit’s turn detection / STT pipeline: ◦ Start the session with provider turn detection/VAD disabled, and run your own VAD/turn detector (LiveKit plugins or your own STT+VAD). That gives you full control over when the model starts listening/responding. ◦ Pros: Full control over interruptions and timing. ◦ Cons: Requires running/maintaining your own STT/VAD (increases complexity and cost). • Two-session approach: ◦ Session A: Play the non-interruptible intro (TTS or prerecorded). ◦ Session B: Start the realtime model session for user interaction afterward. ◦ Pros: Simple to reason about; reliable separation of intro vs interactive session. ◦ Cons: Extra session orchestration and switching logic. • Prompt/instruction workarounds (limited reliability): ◦ Add instructions to the model like “Do not respond until the user says ‘Go ahead’” or “Wait 5 seconds after speaking before accepting input.” This relies on the model following the instruction and does not prevent provider VAD from cutting in, so it’s not dependable for strict non-interruptibility. What LiveKit’s stance is • LiveKit treats provider-side VAD/turn-detection as a provider-controlled capability. Provider VAD is used because it’s efficient and avoids running a parallel STT pipeline. • For strict control (such as guaranteed non-interruptible intros), LiveKit supports disabling provider turn detection and using LiveKit’s own turn detection + STT/VAD plugins so you can manage interrupt behavior yourself. • LiveKit does not support dynamically toggling provider VAD mid-session; to move between non-interruptible intro and interactive realtime you should plan for either a TTS-first flow or session/switch orchestration. Questions to help me give a tailored recommendation • Which provider are you using primarily (OpenAI GPT realtime or Gemini)? • Do you already use LiveKit’s STT/VAD plugins, or are you relying solely on the provider for speech/turn detection? • Is it acceptable for you to orchestrate separate steps/sessions (TTS intro → realtime) or do you need a single continuous session? If you tell me your provider and current setup, I can give a concise, step‑by‑step approach (example code sketch) for either the TTS-first flow or the disable-provider-VAD + LiveKit VAD approach. Sources: OpenAI Realtime API plugin guide | LiveKit Documentation | Gemini Live API plugin | LiveKit Documentation | Turns overview | LiveKit Documentation | Agent speech and audio | LiveKit Documentation | Uninterruptable Agent | LiveKit Documentation