Audio Isolation¶
Extract vocals and speech from audio, removing background noise and music.
v0.13.0 API Change
As of v0.13.0, Audio Isolation methods are accessed via client.Audio() instead of client.AudioIsolation().
Basic Usage¶
file, _ := os.Open("mixed_audio.mp3")
defer file.Close()
isolated, err := client.Audio().IsolateFile(ctx, file, "mixed_audio.mp3")
if err != nil {
log.Fatal(err)
}
// Save isolated vocals
output, _ := os.Create("vocals_only.mp3")
io.Copy(output, isolated)
Streaming Isolation¶
For real-time processing:
import "github.com/plexusone/elevenlabs-go/audio"
isolated, err := client.Audio().IsolateStream(ctx, &audio.IsolationRequest{
Audio: audioReader,
Filename: "audio.mp3",
})
Full Options¶
isolated, err := client.Audio().Isolate(ctx, &audio.IsolationRequest{
Audio: audioFile,
Filename: "podcast_with_music.mp3",
})
Use Cases¶
Podcast Cleanup¶
Remove background music and enhance speech clarity:
// Original podcast has background music
podcastFile, _ := os.Open("podcast_episode.mp3")
// Extract just the voices
cleanAudio, err := client.Audio().IsolateFile(ctx,
podcastFile, "podcast_episode.mp3")
// Save clean version
output, _ := os.Create("podcast_clean.mp3")
io.Copy(output, cleanAudio)
Interview Processing¶
Extract speech from noisy interview recordings:
// Field interview with ambient noise
interviewFile, _ := os.Open("street_interview.mp3")
// Isolate speaker voices
voices, err := client.Audio().IsolateFile(ctx,
interviewFile, "street_interview.mp3")
// Use clean audio for transcription
result, _ := client.STT().Transcribe(ctx, &stt.Request{
File: voices,
Filename: "clean_interview.mp3",
})
Music Vocal Extraction¶
Extract vocals from songs:
songFile, _ := os.Open("song.mp3")
vocals, err := client.Audio().IsolateFile(ctx, songFile, "song.mp3")
// Save isolated vocals
vocalFile, _ := os.Create("vocals.mp3")
io.Copy(vocalFile, vocals)
Video Audio Cleanup¶
Clean up audio tracks from video:
// Extract audio from video (using ffmpeg externally)
// ffmpeg -i video.mp4 -vn audio.mp3
audioFile, _ := os.Open("audio.mp3")
cleanAudio, err := client.Audio().IsolateFile(ctx, audioFile, "audio.mp3")
// Save and remix back into video
cleanFile, _ := os.Create("clean_audio.mp3")
io.Copy(cleanFile, cleanAudio)
Pre-processing for Voice Cloning¶
Get clean voice samples for cloning:
// Sample may have background noise
sampleFile, _ := os.Open("voice_sample.mp3")
// Clean it up
cleanSample, err := client.Audio().IsolateFile(ctx,
sampleFile, "voice_sample.mp3")
// Use clean sample for voice training
// (Professional Voice Cloning API)
Pipeline Example¶
Combine with other services:
// 1. Isolate vocals from noisy audio
file, _ := os.Open("noisy_recording.mp3")
clean, _ := client.Audio().IsolateFile(ctx, file, "noisy_recording.mp3")
// 2. Save to temp file for transcription
tmpFile, _ := os.CreateTemp("", "clean-*.mp3")
io.Copy(tmpFile, clean)
tmpFile.Seek(0, 0)
// 3. Transcribe the clean audio
transcript, _ := client.STT().Transcribe(ctx, &stt.Request{
File: tmpFile,
Filename: "clean.mp3",
})
// 4. Get word-level timestamps
tmpFile.Seek(0, 0)
alignment, _ := client.Audio().AlignFile(ctx, tmpFile, "clean.mp3", transcript.Text)
Supported Audio Formats¶
- MP3
- WAV
- M4A
- FLAC
- OGG
- WEBM
Best Practices¶
- Use for noisy recordings - Most effective when there's clear separation between voice and background
- Chain with transcription - Clean audio produces better transcription results
- Save original files - Keep originals as isolation is lossy
- Test on samples first - Results vary based on audio content