Skip to content

ElevenLabs

OpenClaw uses ElevenLabs for text-to-speech, batch speech-to-text with Scribe v2, and streaming STT with Scribe v2 Realtime.

CapabilityOpenClaw surfaceDefault
Text-to-speechmessages.tts / talkeleven_multilingual_v2
Batch speech-to-texttools.media.audioscribe_v2
Streaming speech-to-textVoice Call streaming or Google Meet realtime.transcriptionProviderscribe_v2_realtime

Set ELEVENLABS_API_KEY in the environment. XI_API_KEY is also accepted for compatibility with existing ElevenLabs tooling.

Terminal window
export ELEVENLABS_API_KEY="..."
{
messages: {
tts: {
providers: {
elevenlabs: {
apiKey: "${ELEVENLABS_API_KEY}",
voiceId: "pMsXgVXv3BLzUgSXRplE",
modelId: "eleven_multilingual_v2",
},
},
},
},
}

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/messages.tts provider. Playback starts from the returned audio stream instead of waiting for OpenClaw to download and write 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.

Use Scribe v2 for inbound audio attachments and short recorded voice segments:

{
tools: {
media: {
audio: {
enabled: true,
models: [{ provider: "elevenlabs", model: "scribe_v2" }],
},
},
},
}

OpenClaw sends multipart audio to ElevenLabs /v1/speech-to-text with model_id: "scribe_v2". Language hints map to language_code when present.

The bundled elevenlabs plugin registers Scribe v2 Realtime for Voice Call and Google Meet agent-mode streaming transcription.

SettingConfig pathDefault
API keyplugins.entries.voice-call.config.streaming.providers.elevenlabs.apiKeyFalls back to ELEVENLABS_API_KEY / XI_API_KEY
Model...elevenlabs.modelIdscribe_v2_realtime
Audio format...elevenlabs.audioFormatulaw_8000
Sample rate...elevenlabs.sampleRate8000
Commit strategy...elevenlabs.commitStrategyvad
Language...elevenlabs.languageCode(unset)
{
plugins: {
entries: {
"voice-call": {
config: {
streaming: {
enabled: true,
provider: "elevenlabs",
providers: {
elevenlabs: {
apiKey: "${ELEVENLABS_API_KEY}",
audioFormat: "ulaw_8000",
commitStrategy: "vad",
languageCode: "en",
},
},
},
},
},
},
},
}

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.