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 elevenlabs on 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_provider on 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_v3 does not use the WebSocket stream-input TTS path.
  • Billed by ElevenLabs.

Official docs

← All documentation