Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Generate ElevenLabs text-to-speech audio from scripts or inline text using local voice profiles. Use when the user asks for ElevenLabs, text-to-speech, TTS, narration, voiceover, speech audio, or voice generation; load voice names, voice ids, emails, owners, and account-specific defaults only from local config outside the skill.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 23% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -4% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 18% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-17 | ✗→✓ | ▲ Improved | -6% | 0% |
Use this skill for ElevenLabs text-to-speech generation. Keep the skill reusable and non-personal:
ELEVENLABS_API_KEY from the process environment or the nearest .env.Prefer one of these config sources, in order:
--config /path/to/profiles.jsonELEVENLABS_TTS_CONFIG=/path/to/profiles.jsonlocal/elevenlabs/profiles.jsonProject-local profile files are also fine when they are gitignored, for example config/local/elevenlabs-tts.json.
The helper script expects this shape:
json{ "default_profile": "default", "profiles": { "default": { "voice_name": "Voice name from the local account", "voice_id": "optional-direct-voice-id", "voice_id_env": "OPTIONAL_ENV_VAR_WITH_VOICE_ID", "model_id": "eleven_multilingual_v2", "output_format": "mp3_44100_128", "voice_settings": { "stability": 0.5, "similarity_boost": 1.0, "style": 0.0, "speed": 1.0, "use_speaker_boost": true }, "output_dir": "outputs/voiceovers", "emails": [] } } }
Fields like emails, owners, aliases, and notes are for local routing/context only. The script ignores unknown metadata fields.
--profile, ELEVENLABS_TTS_PROFILE, or default_profile.python3 <skill-root>/scripts/generate_voice.py --text-file script.txt --profile default --output output.mp3
voice_id, use it. If it has voice_id_env, read that env var. Otherwise search ElevenLabs by voice_name.model_id, output_format, and voice_settings unless the user overrides them for this generation.output_dir, then outputs/voiceovers/.The bundled script supports:
--text "..." for inline text--text-file path.txt for script files--text nor --text-file is provided--profile name to select a local profile--config path.json to select a local profile file--voice-id, --voice-name, --model-id, --output-format, and --settings-json for one-off overrides--output path.mp3 to choose the output file--dry-run to print the resolved request payload without calling the text-to-speech endpoint--list-voices to list matching ElevenLabs voices without generating audioUse the current ElevenLabs endpoints:
GET https://api.elevenlabs.io/v2/voicesPOST https://api.elevenlabs.io/v1/text-to-speech/:voice_id?output_format=...Send the API key as xi-api-key.
Other measured skills in the registry, with their headline benchmark lift.