Skip to main content
skill CX Codex

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.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add elevenlabs/skills --skill voice-isolator -a claude-code
Open on GitHub

What 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.mp3 and save the isolated voice as clean.mp3.
  • Isolate speech from interview.wav before passing it to speech_to_text.convert().
  • Process pcm_bytes with file_format="pcm_s16le_16".

How to install voice-isolator

1Skills CLI (Vercel)

npx skills add elevenlabs/skills --skill voice-isolator -a claude-code

2Manually: put the files in place

~/.claude/skills/voice-isolator/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/voice-isolator/

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

Similar skills

Everything for AI and ML →

From the same set10

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor