On this page
On this page
Providers
ElevenLabs
OpenClaw uses ElevenLabs for text-to-speech, batch speech-to-text with Scribe
v2, and streaming STT with Scribe v2 Realtime. The plugin is bundled and
enabled by default; no plugins install step is needed.
| Capability | OpenClaw surface | Default |
|---|---|---|
| Text-to-speech | tts / talk |
eleven_multilingual_v2 |
| Batch speech-to-text | tools.media.audio |
scribe_v2 |
| Streaming speech-to-text | Voice Call streaming or Google Meet realtime.transcriptionProvider |
scribe_v2_realtime |
Authentication
Set ELEVENLABS_API_KEY in the environment. XI_API_KEY is also accepted for
compatibility with existing ElevenLabs tooling.
Text-to-speech
Set modelId to eleven_v3 to use ElevenLabs v3 TTS. OpenClaw keeps
eleven_multilingual_v2 as the default for existing installs.
Discord voice channels use ElevenLabs' streaming TTS endpoint when ElevenLabs
is the selected voice.tts/tts provider: playback starts from the
returned audio stream instead of waiting for OpenClaw to download the whole
audio file first. latencyTier maps to ElevenLabs' optimize_streaming_latency
query parameter for models that accept it; OpenClaw omits that parameter for
eleven_v3, which rejects it.
Speech-to-text
Use Scribe v2 for inbound audio attachments and short recorded voice segments:
OpenClaw sends multipart audio to ElevenLabs /v1/speech-to-text with
model_id: "scribe_v2". Language hints map to language_code when present.
Provider options
Set providerOptions.elevenlabs on tools.media.audio or a
tools.media.models[] audio entry to forward no_verbatim, tag_audio_events,
and diarize to POST /v1/speech-to-text. Other keys are ignored.
no_verbatim is only supported by scribe_v2; other models may ignore it.
diarize is forwarded, but OpenClaw currently uses only the transcript text,
so speaker labels are not shown in chat.
Streaming STT
The bundled elevenlabs plugin registers Scribe v2 Realtime for Voice Call and
Google Meet agent-mode streaming transcription.
| Setting | Config path | Default |
|---|---|---|
| API key | plugins.entries.voice-call.config.streaming.providers.elevenlabs.apiKey |
Falls back to ELEVENLABS_API_KEY / XI_API_KEY |
| Model | ...elevenlabs.modelId |
scribe_v2_realtime |
| Audio format | ...elevenlabs.audioFormat |
ulaw_8000 |
| Sample rate | ...elevenlabs.sampleRate |
8000 |
| Commit strategy | ...elevenlabs.commitStrategy |
vad |
| Language | ...elevenlabs.languageCode |
(unset) |
For Google Meet agent mode, set
plugins.entries.google-meet.config.realtime.transcriptionProvider to
"elevenlabs" and configure the same provider block under
plugins.entries.google-meet.config.realtime.providers.elevenlabs.