ElevenLabs speech on VoiceThere
ElevenLabs Scribe v2 Realtime STT and streaming TTS on VoiceThere cloud with AGENT_ELEVENLABS_API_KEY.
Overview of all vendors: STT & TTS vendors.
What it is
ElevenLabs Scribe v2 Realtime covers STT; ElevenLabs HTTP or WebSocket APIs cover TTS.
Home: ElevenLabs docs
Set up on VoiceThere
- Dashboard: Project Settings → Voice (STT / TTS). Pick
elevenlabson the leg this vendor supports. Add project secrets from the list below, then Deploy to cloud. - Secrets: Store keys as
AGENT_*project secrets (see Agent environment & secrets). - API: Patch
stt_provider/tts_provideron the project before deploy. See Control plane API.
Project secrets for this vendor
AGENT_ELEVENLABS_API_KEY: ElevenLabs API key. Scribe STT and TTS synthesis on the runner.
Optional env fields
AGENT_ELEVENLABS_VOICE_ID: Voice id. ElevenLabs voice id (defaults to Rachel if unset).
CLI (after secrets exist):
voicethere projects voice set --project YOUR_PROJECT_ID \ --stt-provider elevenlabs --tts-provider elevenlabs \ --stt-model scribe_v2_realtime --tts-model eleven_multilingual_v2
Models and voices you can pick
Project Voice settings in the dashboard lists every model and voice id VoiceThere accepts for this vendor. The same allowlists ship in the npm package @node-webrtc-rust/voice-catalog (pinned on your platform release).
STT examples: scribe_v2_realtime
TTS model examples: eleven_multilingual_v2, eleven_v3
Optional AGENT_ELEVENLABS_VOICE_ID overrides the default Rachel voice id.
What the implementation does
- STT uses the Scribe v2 Realtime WebSocket. File-based Scribe uploads are rejected.
- TTS streams over HTTP or the WebSocket stream-input path except for eleven_v3, which uses a full-body response.
- Partials are available on the Scribe realtime stream.
Limitations
eleven_v3does not use the WebSocket stream-input TTS path.- Billed by ElevenLabs.