Audio processing, voice isolation & stems
Isolate clean vocals from noise and music, separate songs into stems, or trim, loop, fade, normalize loudness, and convert audio.
Isolate clean speech or singing vocals from noisy recordings, split songs into stems, or apply deterministic audio utilities — trimming, seamless looping, fades, EBU R128 loudness normalization, and format conversion.
Primary agent path
Use the Universal Skill with the MCP tool beatra.audio.process. One tool
covers all three capability families via the operation discriminator, and
every call returns an asynchronous billable task:
operation | Capability | Model | Symmetrical REST endpoint |
|---|---|---|---|
isolate_voice | audio_voice_isolation | elevenlabs-audio-isolation | POST /v1/audio/isolation |
separate_stems | audio_stem_separation | beatra-stems-v1 | POST /v1/audio/stems |
trim, loop, fade, normalize_loudness, convert_format | audio_process | beatra-audio-v1 | POST /v1/audio/process |
- Upload local audio with
beatra.assets.uploadand pass itsartifact_idassource(oraudio, accepted interchangeably across MCPbeatra.audio.processand REST; anhttps_urlis also accepted). Tokens authorized with eitherspeech:generateormusic:generatecan invokebeatra.audio.process. - Call
beatra.models.listwith the matchingcapabilitywhen limits, formats, or live prices matter. - Create one opaque
client_request_id, submit once, and pollbeatra.tasks.getuntil terminal.
AI guide
MCP integration guide for AI
For custom API integrations, copy this guide into Claude, Codex, or another coding assistant.
Voice isolation
operation: "isolate_voice" (elevenlabs-audio-isolation, REST
POST /v1/audio/isolation) extracts clean speech or singing vocals while
removing background music, room reverb, wind, traffic, and crowd noise. Use it
to clean noisy field recordings before
voice clone,
speech to text, or
speech to speech.
- Input limits: duration must be
4.6seconds to300.0seconds (5 minutes), and file size at most100 MB. Clips shorter than4.6seconds or longer than300.0seconds are rejected before billing with422 invalid_request(details.reason: "audio_too_short"or"audio_too_long", zero credit charge). Both MCPbeatra.audio.processand RESTPOST /v1/audio/isolationaccept eithersourceoraudiofor the input media reference (and normalize the legacy model alias"beatra-voice-isolate-v1"to"elevenlabs-audio-isolation"). - Optional output formatting:
isolate_voiceaccepts onlyformat("wav"default,"mp3","ogg","flac","m4a", or"ulaw_8k_wav"),sample_rate(8000,16000,22050,24000,32000,44100,48000Hz),bitrate_kbps(64,128,192,256,320for lossy"mp3","ogg","m4a", with"m4a"up to256), andchannels(1or2). Do not passfade_in_ms,fade_out_ms,loudness_lufs, ortrue_peak_dbonisolate_voice— apply those afterward with the deterministic audio utilities below. - Cost & output: prepaid by started input minute at
721 creditsper started minute (<= 60s=721 credits,5 min=3,605 credits). Returnsoutputs: [{"role": "voice", ...}]containing pure isolated vocals without accompaniment stems.
Stem separation
operation: "separate_stems" (beatra-stems-v1, REST POST /v1/audio/stems)
splits a mixed music track (up to 600 seconds / 10 minutes, <= 100 MB)
into individual instrument and vocal stems.
mode: "two_stem"(default,180 creditsper task): returnsvocalsandinstrumental(outputs[].role:"vocals","instrumental").mode: "multi_stem"(360 creditsper task): splits into 6 stems (vocals,drums,bass,guitar,piano,other, returned asoutputs[].role:"stem:vocals","stem:drums","stem:bass","stem:guitar","stem:piano","stem:other").- Output format is determined by the stem separation model;
separate_stemsdoes not acceptformator local finishing parameters.
Deterministic audio utilities
beatra-audio-v1 (REST POST /v1/audio/process) performs deterministic audio
post-processing on inputs up to 3,600 seconds (60 minutes, <= 300 MB) at
a flat 60 credits per task:
trim: cut a segment usingstart_ms(>= 0, default0) plus exactly one ofend_ms(> start_ms) ortarget_duration_ms.loop: repeat the clip or a sub-range (loop_start_msdefault0,loop_end_ms; loop window at least4,000ms) using exactly one oftarget_duration_ms(1,000–3,600,000ms) orloop_count(2–100), withcrossfade_ms(50–3,000ms, default500ms) andend_with_fade(boolean, defaulttrue).fade: applyfade_in_msand/orfade_out_ms(0–30,000ms, at least one provided) usingfade_curve("tri"default,"exp","log", or"qsin").normalize_loudness: two-pass EBU R128 loudness normalization toloudness_lufs(-30.0to-9.0LUFS, default-14.0) andtrue_peak_db(-9.0to0.0dBTP, default-1.0).convert_format: transcode or resample toformat(required:"mp3","wav","ogg","flac","m4a", or"ulaw_8k_wav"for 8 kHz mono telephony), with optionalsample_rate,bitrate_kbps, andchannels(1or2).- Every deterministic operation above can also include optional finishing fields
(
fade_in_ms,fade_out_ms,fade_curve,loudness_lufs,true_peak_db,format,sample_rate,bitrate_kbps,channels) in the same task.
Result
Every operation returns "type": "audio_process", "operation", and
"outputs" (separate_stems adds "mode", and deterministic utilities add
"metrics" and "steps"). Each outputs[] item carries role ("voice" for
isolate_voice, "vocals" / "instrumental" for two_stem, "stem:<kind>"
for multi_stem, and "main" for deterministic utilities), artifact_id, CDN
url, mime_type, and duration_seconds; "role": "main" also includes
measured loudness_lufs and true_peak_db:
Task status and recovery
queued and running are not failures. Keep polling the same task_id; never
submit a replacement because work is still running. On a lost create response,
retry the identical arguments with the same client_request_id. If any input
changes, use a new ID. Failed tasks automatically refund the reserved credits.
Artifact URLs are CDN addresses — copy them to your own storage promptly.
REST API
Direct protocol integrations may call POST /v1/audio/isolation,
POST /v1/audio/stems, or POST /v1/audio/process with a stable
Idempotency-Key header, plus the shared task endpoints. Follow the generated
API reference. Skill + MCP is the recommended
integration; use REST for custom, non-agent applications.
Last updated