Agent skill

Voice Changer

by elevenlabs in elevenlabs/skills

Transform the voice in an audio recording into a different target voice while preserving emotion, timing, and delivery using the ElevenLabs Voice Changer (speech-to-speech) API.

MITAuto-check passedMedia & Creative

Install Voice Changer

skills CLI
$ npx skills add elevenlabs/skills --skill voice-changer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install elevenlabs/skills voice-changer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/elevenlabs/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/voice-changer .claude/skills/voice-changer && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
voice-changer
GitHub stars
482
Token cost
~2.9k tokens
SKILL.md length
945 words
Files
2 (incl. references)
Skills in repo
8
Repo updated
First seen
Licence
MIT

At a glance

Transform the voice in an audio recording into a different target voice while preserving emotion, timing, and delivery using the ElevenLabs Voice Changer (speech-to-speech) API.

  • Converting one voice to another
  • SKILL.md covers Key Facts, Quick Start, Parameters and Models, plus 11 more sections
  • Reaches storage.googleapis.com
  • Changing the speaker/narrator of an existing recording

What it does

Voice Changer is an agent skill from elevenlabs/skills. Transform the voice in an audio recording into a different target voice while preserving emotion, timing, and delivery using the ElevenLabs Voice Changer (speech-to-speech) API. Use when converting one voice to another, changing the speaker/narrator of an existing recording, dubbing a voice-over in a different voice, creating character voices from a scratch performance, anonymizing a speaker, or any "voice conversion / voice transfer / speech-to-speech" task. Make sure to use this skill whenever the user mentions…

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/installation.md`). Compatibility notes: Requires internet access and an ElevenLabs API key (ELEVENLABSAPIKEY).

It sits in Media & Creative, covering Text to speech and voice. It works with ElevenLabs. The repository describes itself as: Collections of skills for building with ElevenLabs. The licence is MIT.

When your agent uses it

  • Converting one voice to another
  • Changing the speaker/narrator of an existing recording
  • Dubbing a voice-over in a different voice
  • Creating character voices from a scratch performance

Example prompts

  • “voice conversion / voice transfer / speech-to-speech”
  • “t explicitly say”
  • “/voice-changer”

Requirements

  • Python 3
  • A credential in ELEVENLABS_API_KEY
  • Compatibility (from SKILL.md): Requires internet access and an ElevenLabs API key (ELEVENLABS_API_KEY).

What it can do on your machine

Read from SKILL.md and the folder at commit 1d08a4a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python, javascript and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • storage.googleapis.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires internet access and an ElevenLabs API key (ELEVENLABS_API_KEY).

    From compatibility in the SKILL.md frontmatter.

Context cost

Voice Changer loads about 2.9k tokens when it runs, and up to ~3.5k if it reads all its reference files. Until then it costs about 235 tokens; SKILL.md has 945 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~235
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from elevenlabs/skills at commit 1d08a4a, republished under its MIT licence (© elevenlabs). 945 words, ~2,947 tokens.

Download SKILL.mdSave it as .claude/skills/voice-changer/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
voice-changer
description
Transform the voice in an audio recording into a different target voice while preserving emotion, timing, and delivery using the ElevenLabs Voice Changer (speech-to-speech) API. Use when converting one voice to another, changing the speaker/narrator of an existing recording, dubbing a voice-over in a different voice, creating character voices from a scratch performance, anonymizing a speaker, or any "voice conversion / voice transfer / speech-to-speech" task. Make sure to use this skill whenever the user mentions voice changing, voice conversion, speech-to-speech, swapping a voice in audio, re-voicing a clip, or applying a different voice to an existing recording — even if they don't explicitly say "voice changer". Do not use this skill to create or clone a new voice from a voice sample — that is voice cloning (IVC/PVC), a separate feature; this skill only converts an existing recording into an existing voice_id.
compatibility
Requires internet access and an ElevenLabs API key (ELEVENLABS_API_KEY).
license
MIT

ElevenLabs Voice Changer

Transform the voice in an audio recording into a different target voice. Voice Changer (previously called Speech-to-Speech — the API endpoint and SDK methods still use the speech_to_speech / speechToSpeech name) keeps the original performance — emotion, pacing, intonation, breaths, whispers, laughs, cries — and only swaps who is speaking.

Setup: See Installation Guide. For JavaScript, use @elevenlabs/* packages only.

Key Facts

  • Maximum input length: 5 minutes per request — split longer recordings into chunks and stitch the outputs.
  • Maximum file size: 50 MB per request — compress to MP3 if your source is larger.
  • Pricing: 1,000 characters per minute of audio processed (duration-based, not text-based).
  • Recommended model: eleven_multilingual_sts_v2 — often outperforms eleven_english_sts_v2 even for English-only content.

Quick Start

Python
python
from elevenlabs import ElevenLabs

client = ElevenLabs()

with open("source.mp3", "rb") as audio_file:
    audio_stream = client.speech_to_speech.convert(
        voice_id="JBFqnCBsd6RMkjVDRZzb",  # George
        audio=audio_file,
        model_id="eleven_multilingual_sts_v2",
        output_format="mp3_44100_128",
    )

with open("converted.mp3", "wb") as f:
    for chunk in audio_stream:
        f.write(chunk)
JavaScript
javascript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
import { createReadStream, createWriteStream } from "fs";

const client = new ElevenLabsClient();

const audioStream = await client.speechToSpeech.convert("JBFqnCBsd6RMkjVDRZzb", {
  audio: createReadStream("source.mp3"),
  modelId: "eleven_multilingual_sts_v2",
  outputFormat: "mp3_44100_128",
});

audioStream.pipe(createWriteStream("converted.mp3"));
CLI
bash
elevenlabs speech-to-speech convert \
  --voice-id JBFqnCBsd6RMkjVDRZzb \
  --audio source.mp3 \
  --model-id eleven_multilingual_sts_v2 \
  --output-format mp3_44100_128 \
  --output converted.mp3

Parameters

ParameterTypeDefaultDescription
voice_idstring (required)—Target voice to speak in. Use a pre-made voice ID, a cloned voice, or a voice from the library
audiofile (required)—Source audio whose performance (emotion, timing, delivery) will be preserved
model_idstringeleven_english_sts_v2eleven_multilingual_sts_v2 for 29 languages, eleven_english_sts_v2 for English-only
output_formatstringmp3_44100_128See output formats table below
voice_settingsJSON string—Override stored voice settings for this request only
seedinteger—Best-effort deterministic sampling (0 – 4294967295)
remove_background_noisebooleanfalseRun the isolation model on the input before conversion
file_formatstringotherother for any encoded audio, or pcm_s16le_16 for 16-bit PCM mono @ 16kHz little-endian (lower latency)
optimize_streaming_latencyint (query)—0–4. Trade quality for latency. 4 is fastest but disables the text normalizer
enable_loggingboolean (query)trueSet to false for zero-retention mode (enterprise only — disables history/stitching)

Models

Model IDLanguagesBest For
eleven_multilingual_sts_v229Recommended for everything — often outperforms the English model even on English audio
eleven_english_sts_v2EnglishAPI default — English-only fallback

Only models whose can_do_voice_conversion property is true can be used here. Voice Changer does not currently have a low-latency "flash/turbo" tier — if you need one, keep pcm_s16le_16 input, an opus_* / low-bitrate mp3_* output, and raise optimize_streaming_latency.

Languages (eleven_multilingual_sts_v2)

English (US, UK, AU, CA), Japanese, Chinese, German, Hindi, French (FR, CA), Korean, Portuguese (BR, PT), Italian, Spanish (ES, MX), Indonesian, Dutch, Turkish, Filipino, Polish, Swedish, Bulgarian, Romanian, Arabic (SA, AE), Czech, Greek, Finnish, Croatian, Malay, Slovak, Danish, Tamil, Ukrainian, Russian.

Target Voices

Use any voice ID from pre-made voices, your cloned voices, or the voice library.

Popular voices:

  • JBFqnCBsd6RMkjVDRZzb — George (male, narrative)
  • EXAVITQu4vr4xnSDxMaL — Sarah (female, soft)
  • onwK4e9ZLuTAKqWW03F9 — Daniel (male, authoritative)
  • XB0fDUnXU5powFXDhCwa — Charlotte (female, conversational)
python
voices = client.voices.get_all()
for voice in voices.voices:
    print(f"{voice.voice_id}: {voice.name}")

Converting from a URL

python
import requests
from io import BytesIO
from elevenlabs import ElevenLabs

client = ElevenLabs()

audio_url = "https://storage.googleapis.com/eleven-public-cdn/audio/marketing/nicole.mp3"
response = requests.get(audio_url)
audio_data = BytesIO(response.content)

audio_stream = client.speech_to_speech.convert(
    voice_id="JBFqnCBsd6RMkjVDRZzb",
    audio=audio_data,
    model_id="eleven_multilingual_sts_v2",
    output_format="mp3_44100_128",
)

with open("converted.mp3", "wb") as f:
    for chunk in audio_stream:
        f.write(chunk)

Voice Settings Override

Fine-tune the target voice for a single request without changing its stored defaults:

python
from elevenlabs import VoiceSettings

audio_stream = client.speech_to_speech.convert(
    voice_id="JBFqnCBsd6RMkjVDRZzb",
    audio=audio_file,
    model_id="eleven_multilingual_sts_v2",
    voice_settings=VoiceSettings(
        stability=0.5,
        similarity_boost=0.75,
        style=0.0,
        use_speaker_boost=True,
    ),
)
  • Stability: lower = more emotional range (follows the source more freely), higher = steadier delivery.
  • Similarity boost: higher = closer to the target voice's timbre, may amplify source artifacts.
  • Style: exaggerates the target voice's unique characteristics (v2+ models).
  • Speaker boost: post-processing to sharpen clarity of the target voice.

Cleaning Up Noisy Source Audio

If the input recording is noisy, either pre-process with the voice-isolator skill or pass remove_background_noise=True to do it in a single call:

python
audio_stream = client.speech_to_speech.convert(
    voice_id="JBFqnCBsd6RMkjVDRZzb",
    audio=audio_file,
    model_id="eleven_multilingual_sts_v2",
    remove_background_noise=True,
)

Cleaner input almost always produces better conversion — the model is trying to match phonemes and prosody, and background noise gets in the way.

Low-Latency PCM Input

If you already have raw 16-bit PCM mono @ 16kHz, passing file_format="pcm_s16le_16" skips decoding and reduces latency:

python
audio_stream = client.speech_to_speech.convert(
    voice_id="JBFqnCBsd6RMkjVDRZzb",
    audio=pcm_bytes,
    model_id="eleven_multilingual_sts_v2",
    file_format="pcm_s16le_16",
)

Pair this with optimize_streaming_latency (0–4) as a query param for further latency reductions at some quality cost.

Show full SKILL.md (401 more words)Show less

Output Formats

FormatDescription
mp3_44100_128MP3 44.1kHz 128kbps (default) — good for web/apps
mp3_44100_192MP3 44.1kHz 192kbps (Creator+) — higher quality
mp3_44100_64MP3 44.1kHz 64kbps — smaller files
mp3_22050_32MP3 22.05kHz 32kbps — smallest MP3
pcm_16000Raw PCM 16kHz — real-time pipelines
pcm_24000Raw PCM 24kHz — good streaming balance
pcm_44100Raw PCM 44.1kHz (Pro+) — CD quality
pcm_48000Raw PCM 48kHz (Pro+) — highest quality
ulaw_8000μ-law 8kHz — Twilio / telephony
alaw_8000A-law 8kHz — telephony
opus_48000_64Opus 48kHz 64kbps — efficient streaming

Deterministic Output

Pass a seed to make repeated conversions of the same input return (best-effort) identical audio — useful for testing and A/B comparisons.

python
audio_stream = client.speech_to_speech.convert(
    voice_id="JBFqnCBsd6RMkjVDRZzb",
    audio=audio_file,
    model_id="eleven_multilingual_sts_v2",
    seed=12345,
)

Input Audio Best Practices

The conversion quality is bounded by the input recording — the model can only swap the timbre, not rescue a bad source. A few practical rules:

  • Be expressive. Whisper, shout, laugh, cry — the model preserves all of it. Flat input gives you flat output.
  • Watch microphone gain. Too quiet and the model under-detects phonemes; too loud and clipping bleeds into the conversion. Aim for healthy peaks, no clipping.
  • Accent and cadence transfer from the source, not the target. If you read in an American accent and target the British "George" voice, you get George's timbre with an American accent. To dub into a different accent or language, record someone speaking in that target accent/language and convert into a cloned/library voice.
  • Clean up noise first. Either pass remove_background_noise=True or run the source through the voice-isolator skill before conversion. Noise hurts more here than in TTS.
  • Split long recordings. Anything over 5 minutes must be chunked. Cut at natural pauses, convert each piece, and concatenate the resulting audio.

Common Workflows

  • Re-voice a narration — keep the performance of a scratch recording, swap in a different narrator voice.
  • Localize / dub — convert a voice-over into the same speaker's cloned voice in another language (using eleven_multilingual_sts_v2).
  • Create character voices — act out a line yourself, convert into a distinctive character voice for games or animation.
  • Anonymize a speaker — replace a recognizable voice with a neutral pre-made voice while preserving what was said and how.
  • Pair with voice-isolator — isolate the source voice first (or set remove_background_noise=True) for noisy field recordings before conversion.
  • Pair with voice cloning — clone a target voice from a short sample, then use its voice_id here as the conversion target.

Error Handling

python
try:
    audio_stream = client.speech_to_speech.convert(
        voice_id="JBFqnCBsd6RMkjVDRZzb",
        audio=audio_file,
        model_id="eleven_multilingual_sts_v2",
    )
except Exception as e:
    print(f"Voice changer failed: {e}")

Common errors:

  • 401: Invalid API key
  • 422: Invalid parameters (check voice_id, model_id, or file_format vs the supplied audio)
  • 429: Rate limit exceeded

References

© elevenlabs, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in voice-changer of elevenlabs/skills.

  • SKILL.md
  • references/installation.md

Open the folder on GitHubat commit 1d08a4a

Compare with similar skills

Voice Changer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Voice Changer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Voice Changer this skillelevenlabs/skills482—~2.9kAutomated safety check: PassMIT
Musictadaspetra/loop2962 repos~827Automated safety check: PassMIT
Sound Effectstadaspetra/loop2962 repos~1.1kAutomated safety check: PassMIT
Elevenlabs Transcribeqdhenry/Claude-Command-Suite1.3k—~1.5kAutomated safety check: NotesNone
Sagtrpc-group/trpc-agent-go1.9k15 repos~574Automated safety check: PassApache-2.0
MusicbozhouDev/video-skills-toolkit150—~3.6kAutomated safety check: PassMIT

Similar skills

  • Music

    tadaspetra/loop

    Generate music using ElevenLabs Music API. An agent skill from tadaspetra/loop.

    296 GitHub starsUsed in 2 repos~827 tokens
    Media & CreativeAuto-check passed
  • Sound Effects

    tadaspetra/loop

    Generate sound effects from text descriptions using ElevenLabs.

    296 GitHub starsUsed in 2 repos~1.1k tokens
    Media & CreativeAuto-check passed
  • Elevenlabs Transcribe

    qdhenry/Claude-Command-Suite

    Transcribes audio/video files using ElevenLabs Scribe v2 API.

    1.3k GitHub stars~1.5k tokensUpdated 7 mo ago
    Media & CreativeAuto-check: notes
  • Sag

    trpc-group/trpc-agent-go

    ElevenLabs text-to-speech with mac-style say UX. An agent skill from trpc-group/trpc-agent-go.

    1.9k GitHub starsUsed in 15 repos~574 tokens
    Media & CreativeAuto-check passed
  • Music

    bozhouDev/video-skills-toolkit

    Generate music using ElevenLabs Music API. An agent skill from bozhouDev/video-skills-toolkit.

    150 GitHub stars~3.6k tokensUpdated 2 mo ago
    Media & CreativeAuto-check passed
  • Setup API Key

    calesthio/OpenMontage

    Guides users through setting up an ElevenLabs API key for ElevenLabs MCP tools.

    66k GitHub stars~717 tokensUpdated 7 days ago
    Media & CreativeAuto-check: notes

More from elevenlabs/skills

All 8 skills in this repo
  • Dubbing

    elevenlabs/skills

    Dub audio and video into other languages using the ElevenLabs Dubbing API (dubbingv2), preserving the original speakers' voices.

    482 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Text To Speech

    elevenlabs/skills

    Convert text to speech using ElevenLabs voice AI. An agent skill from elevenlabs/skills.

    482 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Voice Isolator

    elevenlabs/skills

    Remove background noise and isolate vocals/speech from audio using ElevenLabs Voice Isolator (audio isolation) API.

    482 GitHub stars~923 tokensUpdated yesterday
    Auto-check passed
  • Speech Engine

    elevenlabs/skills

    Add real-time voice conversations to a custom agent runtime with ElevenLabs Speech Engine.

    482 GitHub stars~2.5k tokensUpdated yesterday
    Auto-check: warnings
  • Agents

    elevenlabs/skills

    Build voice AI agents with ElevenLabs. An agent skill from elevenlabs/skills.

    482 GitHub stars~6.5k tokensUpdated yesterday
    Auto-check passed
  • Setup API Key

    elevenlabs/skills

    Guides users through setting up an ElevenLabs API key for REST API and SDK workflows.

    482 GitHub stars~954 tokensUpdated yesterday
    Auto-check: notes

Works with

Questions about Voice Changer

What does Voice Changer do?

Transform the voice in an audio recording into a different target voice while preserving emotion, timing, and delivery using the ElevenLabs Voice Changer (speech-to-speech) API. Voice Changer is an agent skill from elevenlabs/skills. Transform the voice in an audio recording into a different target voice while preserving emotion, timing, and delivery using the ElevenLabs Voice Changer (speech-to-speech) API.

When should I use Voice Changer?

Voice Changer fits situations like: converting one voice to another; changing the speaker/narrator of an existing recording; dubbing a voice-over in a different voice; creating character voices from a scratch performance.

How do I install Voice Changer in Claude Code?

Run `npx skills add elevenlabs/skills --skill voice-changer -a claude-code`. Or copy the skill folder (voice-changer in elevenlabs/skills) into .claude/skills/voice-changer in your project. Claude Code loads it when a task matches its description.

How do I install Voice Changer in Codex?

Run `npx skills add elevenlabs/skills --skill voice-changer -a codex`. Or copy the skill folder (voice-changer in elevenlabs/skills) into .agents/skills/voice-changer in your project. Codex loads it when a task matches its description.

Can I use Voice Changer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add elevenlabs/skills --skill voice-changer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/voice-changer, .gemini/skills/voice-changer, .github/skills/voice-changer and .opencode/skills/voice-changer in your project.

What does Voice Changer need to run?

SKILL.md names no scripts, command-line tools or credentials: Voice Changer is instructions for the agent only. Our summary lists: Python 3; A credential in ELEVENLABS_API_KEY. Compatibility (from SKILL.md): Requires internet access and an ElevenLabs API key (ELEVENLABS_API_KEY)..

Does Voice Changer access the network?

SKILL.md names 1 domain. In commands or code: storage.googleapis.com; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Voice Changer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Voice Changer use?

Voice Changer is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Voice Changer use?

About 2.9k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 518 tokens, read only when the agent opens those files.

What are the alternatives to Voice Changer?

Skills that share tags, products or a category with Voice Changer: Music (tadaspetra/loop, 296 stars), Sound Effects (tadaspetra/loop, 296 stars), Elevenlabs Transcribe (qdhenry/Claude-Command-Suite, 1.3k stars) and Sag (trpc-group/trpc-agent-go, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Voice Changer?

elevenlabs (a GitHub organization) maintains it in elevenlabs/skills, which has 482 GitHub stars. The repository holds 8 skills in this directory. The repository was last updated on October 9, 2026.

Source: elevenlabs/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.