voice-isolator — Claude Code skill: what it does, install
Removes background noise and isolates speech or vocals through the ElevenLabs API. Use it to clean recordings, pull dialogue from mixed audio, or prepare files for transcription.
npx skills add elevenlabs/skills --skill voice-isolator -a claude-codeWhat voice-isolator does
The skill sends an audio file to the ElevenLabs Voice Isolator API and returns a streamed MP3 with speech or vocals isolated. It accepts common encoded audio and video containers, including MP3, WAV, M4A, FLAC, OGG, WebM and MP4. It can clean an interview, separate dialogue from music, or prepare a recording for speech_to_text.convert().
Python uses the ElevenLabs client with client.audio_isolation.convert(). JavaScript uses @elevenlabs/elevenlabs-js, while the CLI route is elevenlabs audio-isolation convert. The file_format parameter defaults to other; raw 16-bit mono PCM at 16kHz can use pcm_s16le_16 to skip decoding.
Internet access and ELEVENLABS_API_KEY are required. Check the project setup before running it: an invalid key returns 401, an invalid parameter such as a mismatched format returns 422, and rate limiting returns 429.
What it helps with
- clean background noise from an interview recording
- extract dialogue from a track with music
- prepare noisy audio for transcription
- isolate vocals from an audio file
- send raw PCM without decoding
Example prompts for the agent
- Clean background noise from
noisy.mp3and save the isolated voice asclean.mp3. - Isolate speech from
interview.wavbefore passing it tospeech_to_text.convert(). - Process
pcm_byteswithfile_format="pcm_s16le_16".
How to install voice-isolator
1Skills CLI (Vercel)
npx skills add elevenlabs/skills --skill voice-isolator -a claude-code2Manually: put the files in place
~/.claude/skills/voice-isolator/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/voice-isolator/
1Skills CLI (Vercel)
npx skills add elevenlabs/skills --skill voice-isolator -a codex2Manually: put the files in place
.agents/skills/voice-isolator/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add elevenlabs/skills --skill voice-isolator -a cursor2Manually: put the files in place
.cursor/skills/voice-isolator/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install elevenlabs/skills voice-isolator2Manually: put the files in place
.github/skills/voice-isolator/SKILL.md1Skills CLI (Vercel)
npx skills add elevenlabs/skills --skill voice-isolator -a gemini-cli2Platform CLI
gemini skills install https://github.com/elevenlabs/skills --path voice-isolatorManually: put the files in place
.devin/skills/voice-isolator/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add elevenlabs/skills --skill voice-isolator -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about voice-isolator
How do I install voice-isolator in Claude Code?
Run npx skills add elevenlabs/skills --skill voice-isolator -a claude-code from the app folder.
What does voice-isolator do?
It removes background noise and isolates speech or vocals through the ElevenLabs Voice Isolator API. The response is a streamed MP3 by default.
What does voice-isolator need to run?
It requires internet access and ELEVENLABS_API_KEY. If the project has no key set up, run npx -y @elevenlabs/cli@latest onboard init from the app folder and follow its prompts.
Source text
SKILL.md · MIT
---
name: voice-isolator
description: Remove background noise and isolate vocals/speech from audio using ElevenLabs Voice Isolator (audio isolation) API. Use when cleaning up noisy recordings, removing music or background ambience from dialogue, isolating speech from field recordings, preparing audio for transcription, extracting vocals, or any "denoise / clean up / isolate voice" task.
license: MIT
compatibility: Requires internet access and an ElevenLabs API key (ELEVENLABS_API_KEY).
metadata: {"openclaw": {"requires": {"env": ["ELEVENLABS_API_KEY"]}, "primaryEnv": "ELEVENLABS_API_KEY"}}
---
# ElevenLabs Voice Isolator
Removes background noise from audio and isolates vocals/speech — useful for cleaning up noisy recordings, prepping audio for transcription, or pulling dialogue out of a mixed track.
> **Setup, before writing any code:** if `ELEVENLABS_API_KEY` isn't set for this project, run `npx -y @elevenlabs/cli@latest onboard init` from the app's folder first and follow what it prints: it signs the user in and stores a key for the project, so nobody copies one by hand. Otherwise see the [Installation Guide](references/installation.md). For JavaScript, use `@elevenlabs/*` packages only.
## Quick Start
### Python
```python
from elevenlabs import ElevenLabs
client = ElevenLabs()
with open("noisy.mp3", "rb") as audio_file:
audio_stream = client.audio_isolation.convert(audio=audio_file)
with open("clean.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.audioIsolation.convert({
audio: createReadStream("noisy.mp3"),
});
audioStream.pipe(createWriteStream("clean.mp3"));
```
### CLI
```bash
elevenlabs audio-isolation convert --audio noisy.mp3 --output clean.mp3
```
## Parameters
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `audio` | file (required) | — | Audio file with vocals/speech to isolate |
| `file_format` | string | `other` | `other` for any encoded audio, or `pcm_s16le_16` for 16-bit PCM mono @ 16kHz little-endian (lower latency) |
## Isolating from a URL
```python
import requests
from io import BytesIO
from elevenlabs import ElevenLabs
client = ElevenLabs()
audio_url = "https://example.com/noisy.mp3"
response = requests.get(audio_url)
audio_data = BytesIO(response.content)
audio_stream = client.audio_isolation.convert(audio=audio_data)
with open("clean.mp3", "wb") as f:
for chunk in audio_stream:
f.write(chunk)
```
## 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.audio_isolation.convert(
audio=pcm_bytes,
file_format="pcm_s16le_16",
)
```
## Supported Formats
Any common encoded audio/video container works as input (MP3, WAV, M4A, FLAC, OGG, WebM, MP4, etc.). Response is a streamed MP3 by default.
## Common Workflows
- **Clean up interview/podcast recordings** — strip room tone, HVAC, traffic before editing.
- **Prep noisy audio for Speech-to-Text** — isolate voice first, then pass through `speech_to_text.convert()` for better transcription accuracy.
- **Extract dialogue from mixed tracks** — pull vocals out of a track with music/SFX.
- **Pre-processing for Voice Changer** — isolate the source voice before applying voice transformation.
## Error Handling
```python
try:
audio_stream = client.audio_isolation.convert(audio=audio_file)
except Exception as e:
print(f"Voice isolation failed: {e}")
```
Common errors:
- **401**: Invalid API key
- **422**: Invalid parameters (e.g. wrong `file_format` for the supplied audio)
- **429**: Rate limit exceeded
## References
- [Installation Guide](references/installation.md)
© elevenlabs · MIT · elevenlabs/skills