Two Paths in Vision Agents
Turn detection works differently depending on your setup:1. Provider-built-in (STT output stream)
Many STT plugins emitTurnStarted 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 aTurnDetector plugin:
Turn Detection vs VAD
| VAD | Turn Detection | |
|---|---|---|
| Question | ”Is someone speaking?" | "Has the speaker finished?” |
| Output | Speech start/end timestamps | TurnStarted / TurnEnded turn signals |
| Intelligence | Simple audio analysis | Provider API or neural turn models |
| Best for | Detecting presence | Knowing when to respond |
STT Plugins with Built-in Turn Detection
| STT Plugin | Turn Detection |
|---|---|
| Deepgram | Always on; set eager_turn_detection=True for speculative early turns |
| ElevenLabs | Built-in via VAD commit strategy |
| Cartesia | Built-in; eager by default |
| AssemblyAI | Built-in |
| Sarvam | Built-in via VAD events |
External Turn Detection Plugins
| Plugin | Description |
|---|---|
| Smart Turn | Combines Silero VAD, Whisper features, and neural turn completion models |
| Vogent | Neural turn detection with high accuracy prediction |
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 flowTurnEnded(eager=True)— starts speculative LLM work for lower latencyTurnEnded(eager=False)— confirms the turn is complete- Pipeline signals (
TurnStarted/TurnEndedon 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