elevenlabs-voice
$
npx mdskill add vellum-ai/vellum-assistant/elevenlabs-voiceElevenLabs provides text-to-speech voices for both **in-app TTS** and **phone calls**. The config key `services.tts.providers.elevenlabs.voiceId` controls the voice across all channels. Use the `voice_config_update` tool to change the voice - it writes to the config file and pushes to the macOS app via SSE in one call.
SKILL.md
.github/skills/elevenlabs-voiceView on GitHub ↗
---
name: elevenlabs-voice
description: Select and tune an ElevenLabs TTS voice - curated voice list, custom/cloned voices via API key, and tuning parameters
compatibility: "Designed for Vellum personal assistants"
metadata:
icon: assets/icon.svg
emoji: "🗣️"
vellum:
category: "voice"
display-name: "ElevenLabs Voice"
---
## Overview
ElevenLabs provides text-to-speech voices for both **in-app TTS** and **phone calls**. The config key `services.tts.providers.elevenlabs.voiceId` controls the voice across all channels. Use the `voice_config_update` tool to change the voice - it writes to the config file and pushes to the macOS app via SSE in one call.
## Choose a Voice
Pick a voice that matches the your identity and the user's preferences. Offer to show the full list if they want to choose themselves.
### Female voices
| Voice | Style | Voice ID |
| --------- | --------------------------------- | ---------------------- |
| Amelia | Expressive, enthusiastic, British | `ZF6FPAbjXT4488VcRRnw` |
| Sarah | Soft, young, approachable | `EXAVITQu4vr4xnSDxMaL` |
| Charlotte | Warm, Swedish-accented | `XB0fDUnXU5powFXDhCwa` |
| Alice | Confident, British | `Xb7hH8MSUJpSbSDYk0k2` |
| Matilda | Warm, friendly, young | `XrExE9yKIg1WjnnlVkGX` |
| Lily | Warm, British | `pFZP5JQG7iQjIQuC4Bku` |
### Male voices
| Voice | Style | Voice ID |
| ------- | ------------------------------- | ---------------------- |
| Antoni | Warm, well-rounded | `ErXwobaYiN019PkySvjV` |
| Josh | Deep, young, clear | `TxGEqnHWrfWFTfGW9XjX` |
| Arnold | Crisp, narrative | `VR6AewLTigWG4xSOukaG` |
| Adam | Deep, middle-aged, professional | `pNInz6obpgDQGcFmaJgB` |
| Bill | Trustworthy, American | `pqHfZKP75CvOlQylNhV4` |
| George | Warm, British, distinguished | `JBFqnCBsd6RMkjVDRZzb` |
| Daniel | Authoritative, British | `onwK4e9ZLuTAKqWW03F9` |
| Charlie | Casual, Australian | `IKne3meq5aSn9XLyUdCD` |
| Liam | Young, articulate | `TX3LPaxmHKxFdv7VOQHJ` |
### Setting the voice
To set the chosen voice, use `voice_config_update`. This writes to the config file (`services.tts.providers.elevenlabs.voiceId`) for phone calls **and** pushes to the macOS app via SSE (`ttsVoiceId`) for in-app TTS in one call:
```
voice_config_update setting="tts_voice_id" value="<selected-voice-id>"
```
Verify it worked:
```bash
assistant config get services.tts.providers.elevenlabs.voiceId
```
Tell the user what voice you chose and why, but also offer to show all available voices so they can choose for themselves.
## ElevenLabs API Key Setup
For advanced voice selection (browsing the full library, custom/cloned voices), the user needs an ElevenLabs API key. A free tier is available at https://elevenlabs.io.
To collect the API key securely:
```
credential_store action="prompt" service="elevenlabs" field="api_key"
```
## Advanced Voice Selection (with API key)
Users with an ElevenLabs API key can go beyond the curated list above.
### Check for an existing key
```bash
assistant credentials inspect --service elevenlabs --field api_key --json
```
### Browse the voice library
```bash
curl -s "https://api.elevenlabs.io/v2/voices?category=premade&page_size=50" \
-H "xi-api-key: $(assistant credentials reveal --service elevenlabs --field api_key)" | python3 -m json.tool
```
### Search for a specific style
```bash
curl -s "https://api.elevenlabs.io/v2/voices?search=warm+female&page_size=10" \
-H "xi-api-key: $(assistant credentials reveal --service elevenlabs --field api_key)" | python3 -m json.tool
```
### Custom and cloned voices
If the user has created a custom voice or voice clone in their ElevenLabs account, they can use its voice ID directly. These voices work in both in-app TTS and Twilio ConversationRelay.
### Preview voices
Each voice in the API response includes a `preview_url` with an audio sample the user can listen to before deciding.
### Set the chosen voice
After the user picks a voice from the library:
```
voice_config_update setting="tts_voice_id" value="<selected-voice-id>"
```
## Voice Tuning
Fine-tune how the selected voice sounds. These parameters apply to all ElevenLabs modes (in-app TTS and phone calls):
```bash
# Playback speed (0.7 = slower, 1.0 = normal, 1.2 = faster)
assistant config set services.tts.providers.elevenlabs.speed 1.0
# Stability (0.0 = more expressive/variable, 1.0 = more consistent/monotone)
assistant config set services.tts.providers.elevenlabs.stability 0.5
# Similarity boost (0.0 = more creative, 1.0 = closer to original voice)
assistant config set services.tts.providers.elevenlabs.similarityBoost 0.75
```
Lower stability makes the voice more expressive but less predictable - good for conversational calls. Higher stability is better for scripted or formal contexts.
## Voice Model Tuning
By default, the system sends a **bare** `voiceId` to Twilio ConversationRelay (no model/tuning suffix). This is the safest default across voice IDs.
To optionally force Twilio's extended voice spec, set a model ID:
```bash
assistant config set services.tts.providers.elevenlabs.voiceModelId "flash_v2_5"
```
When `voiceModelId` is set, the emitted voice string becomes: `voiceId-model-speed_stability_similarity`.
To clear and revert to the bare voiceId default:
```bash
assistant config set services.tts.providers.elevenlabs.voiceModelId ""
```
More from vellum-ai/vellum-assistant
- acpSpawn external coding agents via the Agent Client Protocol (ACP)
- amazonShop on Amazon and Amazon Fresh through your browser
- api-mappingRecord and analyze API surfaces of web services
- app-builderBuild and edit small, personal visual tools and artifacts — dashboards, trackers, calculators, data visualizations, charts, simple landing pages, and slide decks the user wants for THEMSELVES. This is the right skill whenever the user asks to "visualize this," "make a chart," or "build an artifact" for their own use, or to edit an app they already built here. Do NOT reach for a ui_show dynamic_page to fake an artifact — build a real persistent app here. NOT for complex, multi-user, or shippable products — those go to a real project folder with a coding agent (see Scope below).
- app-controlDrive a specific named macOS app via raw input bypassing the Accessibility tree
- assistant-migrationMigrate from ChatGPT, Claude, OpenClaw, Hermes, Manus, and other AI assistants into Vellum by inspecting their data exports, conversation archives, files, prompts, custom instructions, memory, saved memories, tools, GPTs, workflows, integrations, and relationships, then mapping as much as safely possible into Vellum primitives. Handles single-source and multi-source migrations with a unified, deduplicated inventory.
- chatgpt-importImport conversation history from ChatGPT into Vellum
- cli-discoverDiscover which CLI tools are installed, their versions, and authentication status
- computer-useControl the macOS desktop
- contactsManage contacts, communication channels, access control, and invite links