Skip to main content
ElevenLabs provides real-time speech-to-text via Scribe v2 with ~150ms latency, 99 languages, and built-in VAD-based turn detection. No separate turn detection plugin is needed.
Vision Agents requires a Stream account for real-time transport. Most providers offer free tiers to get started.
ElevenLabs also provides highly realistic text-to-speech. You can use both in the same agent.

Installation

uv add "vision-agents[elevenlabs]"

Quick Start

from vision_agents.core import Agent, User
from vision_agents.plugins import elevenlabs, gemini, getstream

agent = Agent(
    edge=getstream.Edge(),
    agent_user=User(name="Assistant", id="agent"),
    instructions="You are a helpful assistant.",
    llm=gemini.LLM("gemini-3-flash-preview"),
    stt=elevenlabs.STT(),
    tts=elevenlabs.TTS(),
)
Set ELEVENLABS_API_KEY in your environment or pass api_key directly.

Parameters

stt = elevenlabs.STT(
    model_id="scribe_v2_realtime",
    language_code="en",
)
NameTypeDefaultDescription
model_idstr"scribe_v2_realtime"Scribe model
language_codestr"en"Language code
api_keystrNoneAPI key (defaults to ELEVENLABS_API_KEY env var)
vad_silence_threshold_secsfloat0.3Silence duration (seconds) before VAD commits
vad_thresholdfloat0.4VAD sensitivity threshold for speech detection
min_speech_duration_msint100Minimum speech duration in milliseconds
min_silence_duration_msint100Minimum silence duration in milliseconds
audio_chunk_duration_msint100Audio chunk size sent to the server (100-1000ms)
ElevenLabs STT includes built-in turn detection via VAD. When you use elevenlabs.STT, the Agent automatically ignores any external TurnDetector plugin to prevent conflicts. You do not need to add a separate turn detection plugin.

Next Steps

ElevenLabs TTS

Expressive text-to-speech

Build a Voice Agent

Get started with voice