---
name: elevenlabs-voice-cloner
description: "Generate voice-overs and clone voices with ElevenLabs. Includes SSML, prosody, multi-lang. Wraps the ElevenLabs API with smart chunking for long-form, SSML control, voice cloning workflow, and multi-language synthesis. Good for podcasts, video VO, and accessibility."
license: MIT
---

# ElevenLabs Voice Cloner

Generate natural-sounding voice-overs and clone voices through the ElevenLabs API, directly from your agent workflow. This skill handles the awkward parts of production TTS — splitting long scripts into model-safe chunks, applying SSML and prosody control, and stitching audio back together — so you can go from a script file to a finished MP3 without hand-managing requests. Built for video editors scoring VO, podcasters producing episodes, and developers adding spoken output for accessibility.

## When to use it

- You have a multi-paragraph script (blog post, episode, documentary narration) that exceeds a single TTS request and needs seamless concatenation.
- You want a consistent narrator across a series and need to clone a voice from reference samples.
- You're localizing content and need the same script rendered in multiple languages with one model.
- You need fine control over pauses, emphasis, and pacing rather than flat read-through audio.

## How it works

The skill wraps ElevenLabs' Text-to-Speech endpoints. Core synthesis uses `POST /v1/text-to-speech/{voice_id}` (and the `/stream` variant for low-latency playback), passing `model_id` (e.g. `eleven_multilingual_v2` for 29-language output, or `eleven_turbo_v2_5` when speed matters) plus a `voice_settings` block for `stability`, `similarity_boost`, `style`, and `use_speaker_boost`.

Voice cloning calls `POST /v1/voices/add` (instant cloning from uploaded samples), returning a `voice_id` you reference in later syntheses. Available voices come from `GET /v1/voices`. Long-form text is segmented on sentence boundaries under the per-request character cap, with `previous_text`/`next_text` passed between chunks so prosody stays continuous across the seams. SSML-style tags and `<break time="..."/>` markers control pacing.

## Usage example

```bash
curl -fsSL --create-dirs -o ~/.claude/skills/elevenlabs-voice-cloner/SKILL.md https://claudeskil.com/skills/elevenlabs-voice-cloner/SKILL.md

export ELEVENLABS_API_KEY=sk_...

# Clone a narrator from samples, then render a long script
clone "Narrator" --samples ./samples/*.mp3
voiceover ./script.md \
  --voice "Narrator" \
  --model eleven_multilingual_v2 \
  --stability 0.45 --similarity 0.85 \
  --out episode.mp3
```

Inline SSML in the script:

```
Welcome back. <break time="0.8s"/> Today we cover <emphasis level="moderate">three</emphasis> ideas.
```

## Tips & gotchas

- **Stability vs. expressiveness trade-off:** lower `stability` (~0.3–0.5) gives livelier delivery but more take-to-take variance; raise it for consistent corporate VO.
- **Cloning needs clean input:** use 1–3 minutes of dry, single-speaker audio with no background music. Noisy samples bake artifacts into every render.
- **`<break>` caps out:** breaks longer than a few seconds get ignored or clipped — insert multiple tags or trailing punctuation instead.
- **Chunk boundaries matter:** keep the `previous_text` context window populated, or you'll hear pitch jumps where segments join.

## FAQ

**Which model for non-English?** Use `eleven_multilingual_v2`; it auto-detects language from the text, so no language flag is required.

**Are cloned voices private?** Instant-cloned voices live in your workspace and aren't shared. Honor consent — only clone voices you're authorized to use.

**Can I stream instead of saving a file?** Yes — the `/stream` endpoint returns audio progressively for real-time playback or piping into a player.
