Scribe v2 Realtime is a low-latency speech-to-text model with 90+ languages support and low error rate in different languages. In our YouTube preview, Scribe v2 Realtime transcribes both user speech and the agent's own voice output for real-time note-taking:
Here's how to build the same speech-to-text experience yourself in Python under 5 minutes.
Components of the Voice System
- Gemini for agent orcherstration.
- ElevenLabs: To generate voice output.
- ElevenLabs Scribe v2 Realtime: Realtime transcription model.
- WebRTC-Powered audio and video transport.
- Vision Agents: For creating the voice system in Python.
Prepare Your Environment
Save these credentials in the .env of your Python project or permanently on your machine in for example, .zprofile on the Mac.
12345ELEVENLABS_API_KEY=... GOOGLE_API_KEY=... STREAM_API_KEY=... STREAM_API_SECRET=... EXAMPLE_BASE_URL=https://demo.visionagents.ai/
Create a New Project With uv
12345uv init scribe-realtime-agent cd scribe-realtime-agent uv add vision-agents uv add "vision-agents[getstream, gemini, elevenlabs, smart-turn]"
In your uv-powered project, you should install Vision Agents and the required plugins as shown in the command above.
Create and Run the Voice Agent
Replace the content of your project's main.py with this sample code.
123456789101112131415161718192021from vision_agents.core import Agent, AgentLauncher, User, Runner from vision_agents.plugins import getstream, gemini, elevenlabs async def create_agent(**kwargs) -> Agent: return Agent( edge=getstream.Edge(), agent_user=User(name="Assistant", id="agent"), instructions="You're a helpful voice assistant. Be concise.", llm=gemini.LLM("gemini-2.5-flash"), stt=elevenlabs.STT(model_id="scribe_v2_realtime"), tts=elevenlabs.TTS(), ) async def join_call(agent: Agent, call_type: str, call_id: str, **kwargs) -> None: call = await agent.create_call(call_type, call_id) async with agent.join(call): await agent.simple_response("Greet the user") await agent.finish() if __name__ == "__main__": Runner(AgentLauncher(create_agent=create_agent, join_call=join_call)).cli()
The Python script will launch the voice agent in your browser when you run it. The Scribe v2 Realtime model will transcribe the agent's voice and yours in while speaking.
