New feature for LiveKit Cloud: you just need to upgrade your cloud-hosted agents to >= 1.5.x
Which STT, TTS and LLM are being used here in this demo?
Is it possible to have it on self-hosted deployments?
Is it possible to have it on self-hosted deployments?
See
Quota and limits
Adaptive interruption handling is included at no extra cost for all agents deployed to LiveKit Cloud.
For self-hosted agents, we include 40,000 inference requests per month across all plans - enough to experiment and develop locally without restrictions.
For large-scale self-hosted use cases, please contact us to discuss options and pricing.
—
stt=inference.STT(model="deepgram/nova-3", language="en"),
llm=inference.LLM(model="openai/gpt-4.1-nano"),
tts=inference.TTS(
model="cartesia/sonic-3", voice="9626c31c-bec5-4cca-baa8-f8ba9e84c8bc"
),
Is livekits new dynamic turn handling in v1.5.x also working for realtime? My first tests with gemini 2.5 live were subpar. I disabled the realtimes built in vad like this:
in agent session:
```
session = AgentSession\[CallRuntime\](
userdata=runtime,
preemptive_generation=True,
vad=ctx.proc.userdata\["vad"\],
turn_handling=TurnHandlingOptions(
turn_detection=MultilingualModel(),
interruption={
"mode": "adaptive",
"resume_false_interruption": True,
"false_interruption_timeout": 1.0,
},
),
)
```
in gemini realtime
```
return google.realtime.RealtimeModel(
model=config.model,
thinking_config=types.ThinkingConfig(
thinking_budget=0,
),
realtime_input_config=types.RealtimeInputConfig(
automatic_activity_detection=types.AutomaticActivityDetection(
disabled=True,
),
),
modalities=\[Modality.AUDIO\],
voice=voice,
)
```
With this gemini is unable to have a natural conversation, it stops mid sentence, so something seems very much broken.
Is this feature just not supported or recommended for realtime or did I misconfigure sth?
The new adaptive interrupt handling does not work with realtime models, please see here: Adaptive interruption handling | LiveKit Documentation.
realtime_input_config=types.RealtimeInputConfig(
automatic_activity_detection=types.AutomaticActivityDetection( disabled=True, ), ),
You are disabling turn detection entirely with this line, as detailed here: Gemini Live API plugin | LiveKit Documentation (you would then also need to specify a separate STT to use LiveKit’s turn detection). The reason you see stopping mid-sentence is because it is misconfigured - at the end of the day, adaptive interrupt handling is not designed to work with realtime models, and you would need to adopt a pipeline architecture to take advantage of it.