OpenClaw TTS Voice Switch
Use this skill when you need to change the ElevenLabs voice used by OpenClaw Gateway built-in TTS.
Version scope:
- Verified against
OpenClaw v2026.3.13 - Newer OpenClaw versions may change config keys, behavior, or restart flow, so this skill may not work without updates
Scope:
- This skill only targets Gateway built-in TTS under
messages.tts - It does not target other speech systems, external plugins, call-specific overrides, or unrelated TTS integrations
Read references/tts-parameters.md when you need parameter meanings, file paths, or language/model guidance.
Use scripts/list_voices.sh when you need the actual voices and languages available in the current ElevenLabs account.
It updates:
~/.openclaw/openclaw.jsonmessages.tts.elevenlabs.voiceId
It keeps these defaults unless the user explicitly wants something else:
messages.tts.provider = "elevenlabs"messages.tts.elevenlabs.modelId = "eleven_multilingual_v2"messages.tts.elevenlabs.languageCode = "zh"
Workflow
- If the user asks which voices or languages are supported, run:
bash scripts/list_voices.sh
bash scripts/list_voices.sh zh
- Confirm the target voice name or
voiceId. - If only a voice name is given, resolve it to a
voiceIdfrom the script output. - Run:
bash scripts/switch_tts_voice.sh "<voiceId>"
bash scripts/switch_tts_voice.sh "<voiceId>" "<languageCode>"
bash scripts/switch_tts_voice.sh "<voiceId>" "<languageCode>" "<modelId>"
bash scripts/switch_tts_voice.sh "<voiceId>" "<languageCode>" "<modelId>" "<apiKey>"
- Tell the user which file and parameter changed.
- Suggest a quick verification command:
/tts audio 今天天气不错,我们下午三点开会。
Supported Inputs
- Direct
voiceId - Existing known Chinese-capable ElevenLabs
voiceId - Optional
languageCode - Optional
modelId - Optional
apiKey
If the user only gives a voice name, resolve it to a voiceId first.