Skip to main content
Turn Detection identifies when a speaker has finished their conversational turn and it’s appropriate for an AI to respond. It solves a critical problem in voice AI: respond too early and you interrupt the speaker; wait too long and the conversation feels awkward.

Two Paths in Vision Agents

Turn detection works differently depending on your setup:

1. Provider-built-in (STT output stream)

Many STT plugins emit TurnStarted and TurnEnded signals on their output stream. Turn detection happens inside the provider API — no separate plugin needed.

2. External plugin

When your STT plugin has no built-in turn detection, add a TurnDetector plugin:
External plugins use Silero VAD plus neural models to predict turn completion — see Smart Turn and Vogent.

Turn Detection vs VAD

STT Plugins with Built-in Turn Detection

STT plugins without turn detection (Fast-Whisper, Wizper, Fish, Mistral, AWS) need an external plugin or fall back to using the final transcript as the end-of-turn signal.

External Turn Detection Plugins

For Realtime APIs (OpenAI, Gemini, AWS Bedrock, Qwen, xAI, Inworld), turn detection is built-in at the model level — no separate plugin needed. See Voice Agents — Realtime Mode.
When an STT plugin provides built-in turn detection (stt.turn_detection is True), the Agent automatically ignores any external TurnDetector plugin to prevent conflicts.

SDK Behavior

  • TurnStarted — triggers barge-in interrupt in the transcribing flow
  • TurnEnded(eager=True) — starts speculative LLM work for lower latency
  • TurnEnded(eager=False) — confirms the turn is complete
  • Pipeline signals (TurnStarted/TurnEnded on the STT output stream) are distinct from agent events (UserTurnStartedEvent, UserTurnEndedEvent)

Next Steps

Interruption Handling

Setup, tuning, and troubleshooting

Voice Agents

Wire turn detection into a pipeline

Smart Turn

Configure the Smart Turn plugin

Vogent

Alternative turn detection option