# Solving unwanted interruptions with Adaptive Interruption Handling

**URL:** <https://community.livekit.io/t/solving-unwanted-interruptions-with-adaptive-interruption-handling/620>\
**Category:** Getting Started\
**Created:** [March 19, 2026, 6:25pm UTC](https://community.livekit.io/t/solving-unwanted-interruptions-with-adaptive-interruption-handling/620 "2026-03-19T18:25:21Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![CWilson](https://sea1.discourse-cdn.com/flex001/user_avatar/community.livekit.io/cwilson/32/135_2.png) [@CWilson](https://community.livekit.io/u/CWilson)\
**Post date:** [March 19, 2026, 6:25pm UTC](https://community.livekit.io/t/solving-unwanted-interruptions-with-adaptive-interruption-handling/620/1 "2026-03-19T18:25:21Z")

</div>

New feature for LiveKit Cloud: you just need to upgrade your cloud-hosted agents to \>= 1.5.x

> **[Solving unwanted interruptions with Adaptive Interruption Handling](https://livekit.com/blog/adaptive-interruption-handling)**
>
> VAD is insufficient for detecting user barge-ins, because many sounds can trigger it: brief backchannels (“mm-hmm”, “yeah”), user noises like sighs or coughs, or background sounds like typing, music or chatter.

[![](https://us1.discourse-cdn.com/flex001/uploads/livekit2/original/1X/20ef02998d5ba616fce5326aa0eca03aeb054260.jpeg "Adaptive Interruption Handling with LiveKit Agents") ](https://www.youtube.com/watch?v=DSXCE7D4Kvs)

---

<div class="post-metadata">

**Author:** ![Venky](https://sea1.discourse-cdn.com/flex001/user_avatar/community.livekit.io/venky/32/758_2.png) [@Venky](https://community.livekit.io/u/Venky)\
**Post date:** [March 19, 2026, 7:14pm UTC](https://community.livekit.io/t/solving-unwanted-interruptions-with-adaptive-interruption-handling/620/2 "2026-03-19T19:14:21Z")

</div>

Which STT, TTS and LLM are being used here in this demo?

---

<div class="post-metadata">

**Author:** ![Mahimai\_Raja](https://sea1.discourse-cdn.com/flex001/user_avatar/community.livekit.io/mahimai_raja/32/543_2.png) [@Mahimai\_Raja](https://community.livekit.io/u/Mahimai_Raja)\
**Post date:** [March 19, 2026, 7:38pm UTC](https://community.livekit.io/t/solving-unwanted-interruptions-with-adaptive-interruption-handling/620/3 "2026-03-19T19:38:06Z")

</div>

Is it possible to have it on self-hosted deployments?

---

<div class="post-metadata">

**Author:** ![CWilson](https://sea1.discourse-cdn.com/flex001/user_avatar/community.livekit.io/cwilson/32/135_2.png) [@CWilson](https://community.livekit.io/u/CWilson)\
**Post date:** [March 19, 2026, 7:53pm UTC](https://community.livekit.io/t/solving-unwanted-interruptions-with-adaptive-interruption-handling/620/4 "2026-03-19T19:53:19Z")

</div>

> 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](https://livekit.com/contact-sales) to discuss options and pricing.  
—

> **[Quota and limits - Adaptive interruption handling | LiveKit Documentation](https://docs.livekit.io/agents/logic/turns/adaptive-interruption-handling/#quota-and-limits)**
>
> Adaptive interruption handling allows an agent to respond naturally when users speak mid-response. Instead of relying on fixed timing or volume thresholds, the model analyzes the acoustic signals to identify intentional interruptions (barge-ins) from...

---

<div class="post-metadata">

**Author:** ![CWilson](https://sea1.discourse-cdn.com/flex001/user_avatar/community.livekit.io/cwilson/32/135_2.png) [@CWilson](https://community.livekit.io/u/CWilson)\
**Post date:** [March 19, 2026, 8:00pm UTC](https://community.livekit.io/t/solving-unwanted-interruptions-with-adaptive-interruption-handling/620/5 "2026-03-19T20:00:00Z")

</div>

> [@Venky](#):
>
> Which STT, TTS and LLM are being used here in this demo?

```python

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"
        ),

```

---

<div class="post-metadata">

**Author:** ![schedawg74](https://sea1.discourse-cdn.com/flex001/user_avatar/community.livekit.io/schedawg74/32/863_2.png) [@schedawg74](https://community.livekit.io/u/schedawg74)\
**Post date:** [March 27, 2026, 1:01pm UTC](https://community.livekit.io/t/solving-unwanted-interruptions-with-adaptive-interruption-handling/620/6 "2026-03-27T13:01:49Z")

</div>

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?

---

<div class="post-metadata">

**Author:** ![darryncampbell](https://sea1.discourse-cdn.com/flex001/user_avatar/community.livekit.io/darryncampbell/32/20_2.png) [@darryncampbell](https://community.livekit.io/u/darryncampbell)\
**Post date:** [March 30, 2026, 8:30am UTC](https://community.livekit.io/t/solving-unwanted-interruptions-with-adaptive-interruption-handling/620/7 "2026-03-30T08:30:07Z")

</div>

The new adaptive interrupt handling does not work with realtime models, please see here: [Adaptive interruption handling | LiveKit Documentation](https://docs.livekit.io/agents/logic/turns/adaptive-interruption-handling/#how-to-use).

> 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](https://docs.livekit.io/agents/models/realtime/plugins/gemini/#turn-detection) (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.**
