examples/provider-elevenlabs/isolation/README.md
Remove background noise from audio files to extract clean speech using ElevenLabs audio isolation.
npx promptfoo@latest init --example provider-elevenlabs/isolation
cd provider-elevenlabs/isolation
export ELEVENLABS_API_KEY=your_api_key_here
npx promptfoo@latest eval
Audio isolation takes a noisy audio file and returns a cleaned version with:
Input formats: MP3, WAV, FLAC, OGG, M4A, OPUS, WebM
Output formats:
mp3_44100_128 - Standard quality (128kbps)mp3_44100_192 - High quality (192kbps)pcm_44100 - Uncompressed PCMproviders:
- id: elevenlabs:isolation:basic
label: Audio Isolation (MP3)
config:
outputFormat: mp3_44100_128
tests:
- vars:
audioFile: path/to/noisy-audio.mp3
providers:
- id: elevenlabs:isolation:hq
label: Audio Isolation (HQ)
config:
outputFormat: mp3_44100_192
tests:
- description: Verify isolation succeeds
vars:
audioFile: examples/provider-elevenlabs/stt/audio/sample1.mp3
assert:
- type: javascript
value: output.includes('isolated successfully')
- type: not-contains
value: error
- type: cost
threshold: 1.00 # Max $1.00 per file
The response includes:
Isolation typically provides:
Audio isolation pricing is based on audio duration:
The provider automatically tracks costs in evaluation results.
Possible causes:
Solution: Check original audio quality - isolation works best with noisy recordings.
Solution: Increase timeout in config:
config:
timeout: 180000 # 3 minutes
Solution: Convert to supported format using ffmpeg:
ffmpeg -i input.video -vn -acodec mp3 output.mp3
# Step 1: Isolate noisy audio
providers:
- id: elevenlabs:isolation
# Step 2: Transcribe cleaned audio
providers:
- id: elevenlabs:stt
config:
audioFile: '{{previousOutput.audio}}'
# Step 1: Clean audio
providers:
- id: elevenlabs:isolation
# Step 2: Generate subtitles from clean audio
providers:
- id: elevenlabs:alignment
config:
audioFile: '{{previousOutput.audio}}'
transcript: "Your transcript here"