calesthio/audioshake-stem-separation
>- Operate AudioShake's cloud source-separation service (developer.audioshake.ai) to split a recording into stems. Use when a task involves isolating vocals, drums, bass, guitar, piano, keys, strings, or winds from music; separating dialogue / music / effects (DME) for film-TV post-production, localization, and dubbing; splitting a mixed recording into one stem per speaker; lyric transcription or word-level alignment; music detection/identification; or speech denoise/dereverb. Covers the Tasks API job lifecycle (assets, targets, formats, polling vs webhooks, credits, limits), choosing which stem targets a production actually needs, reviewing separated stems for bleed / artifacts / transient smearing / phase problems and repairing them, the rights and consent questions raised by separating copyrighted or third-party recordings, and the decision boundary for when a local open model such as Demucs is the better route than the API. Not for generating or synthesizing new audio, mixing, or mastering.
npx skills add https://github.com/calesthio/generative-media-skills --skill audioshake-stem-separation
AudioShake is a hosted audio source-separation service: it takes one mixed recording and returns isolated component tracks ("stems"). It does not generate, synthesize, mix, or master audio — it decomposes an existing mix. This skill covers driving its developer API, choosing the right separation targets for a production job, judging and repairing the resulting stems, the rights questions that separation raises, and when to reach for a local open model instead.
All API facts below were verified against developer.audioshake.ai on 2026-07-10. Endpoints, model names, credit rates, and limits are volatile — re-check the live models / billing / rate-limits reference pages and the OpenAPI spec (https://developer.audioshake.ai/api-reference/openapi.json) before relying on a specific number in production.
Use it when the job is to *pull apart* a recording:
Do not use it to write, generate, or synthesize audio, to compose music, to mix or master, or to add effects. Those are generative or engineering tasks, not separation. If the user already has clean stems and wants them combined or processed, that is out of scope.
Base URL: https://api.audioshake.ai (verified 2026-07-10).
Auth: every request carries the header x-api-key: <key>. Keys are created in the dashboard (dashboard.audioshake.ai). New accounts receive 10 free credits on signup (first-party claim, verified 2026-07-10).
> Note: AudioShake replaced its older Jobs API (/job, /upload, per-request callbackUrl) with the Tasks API. The Tasks API is the current interface: POST /assets instead of /upload, POST /tasks instead of /job, GET /tasks/{id} instead of /job/{id}, and webhooks registered once via POST /webhooks instead of a per-job callback. If you find code using /job, it is on the legacy path.
url (HTTPS) directly, or upload a local file with POST /assets and pass the returned assetId. url and assetId are mutually exclusive per task.POST /tasks, listing one or more targets. Each target is { "model": "<name>", "formats": ["<fmt>", ...] }. A single task takes 1–20 unique targets and runs them together — this is both cheaper in round-trips and the recommended way to avoid rate limits.GET /tasks/{id} or registering a webhook. Each target moves through processing → completed | error.output array. Download URLs are presigned and expire ~1 hour after the task completes — fetch and store them promptly, or write directly to your own bucket (see writeDestination).| Field | Type | Notes |
|---|---|---|
| url or assetId | string | Source media. Exactly one. |
| targets | array (1–20, unique) | Each item: model (2–255 chars) + formats array. |
| formats | array | Per target. wav / mp3 / flac / aiff for audio, mp4 for video, json / srt / txt for transcription & detection. Availability varies by model. |
| residual | boolean | Return *everything except* the target stem (the complement). Useful for "remove X" jobs and for catching energy a target misses. |
| language | string (ISO 639-1) | For transcription/alignment; auto-detected if omitted. |
| transcriptAssetId or transcriptUrl | string | Required only by the alignment model — the known transcript to align. |
| writeDestination | string | S3 URI prefix to write outputs to your own bucket instead of the expiring presigned URLs. |
| metadata | string (≤4096 chars) | Opaque client metadata echoed back. |
id, createdAt, completedAt (or null), cost (credits actually charged), targets[] (each with status, output files, and error), a top-level output[] of downloadable files, and error (code + message, null on success).
429, back off exponentially, and prefer batching many targets into one task and using webhooks over tight polling.multi_voice ≤ 1.5 hours; transcription and alignment ≤ 45 minutes. Other separation models have no documented cap but cost scales with length.Credits are charged per minute of source audio, per target model, rounded up to the next whole minute (verified 2026-07-10). So a 3:10 song billed for two targets is charged as 4 min × 2 targets. Rates below are the documented per-minute costs.
vocals (all sung voice, lead + backing) · vocals_lead (lead only) · vocals_backing (harmonies, ad-libs, choir) · instrumental (full mix minus vocals) · drums · bass · guitar (all guitar) · guitar_electric · guitar_acoustic · piano (acoustic piano) · keys (keyboard family, incl. electric/digital pianos) · strings · wind (woodwind + brass) · other (everything except vocals/drums/bass) · other-x-guitar (everything except vocals/drums/bass/guitar).
dialogue (clean speech stem) · effects (ambience + SFX bed, dialogue and music removed) · music_fx (music + effects, dialogue removed).
multi_voice (10.0 credits/min, ≤ 1.5 h) — one stem per detected speaker, keeping each speaker isolated even through overlap. speech_denoise (1.5/min) — remove background noise, hum, interference. speech_dereverb (2.0/min) — remove room reverb/echo for a drier, closer sound.
music_detection (0.5/min) — return time ranges where music is present. music_identification — identify music and return track metadata. music_removal — keep speech + effects, remove background music.
transcription — line-level timestamped lyric transcript (JSON; convertible to SRT/VTT). alignment — precise word-level *and* line-level timestamps; requires a supplied transcript (transcriptUrl/transcriptAssetId).
The single most common mistake is requesting the wrong granularity — either paying for stems nobody will use, or requesting a coarse stem when the job needs a fine one. Match targets to the deliverable:
vocals + instrumental covers it. If you also need on-screen timed lyrics, add transcription (or alignment if you already have accurate lyrics and only need timing). Requesting drums/bass/etc. as well wastes credits unless the product actually plays them separately.vocals_lead, drums, bass, guitar, keys…). Use other / other-x-guitar to sweep up the remaining energy so the sum reconstructs the mix — otherwise instruments you didn't request vanish.residual: true to get the complement in one target, rather than requesting all the other stems and re-summing.dialogue (translation reference) + music_fx (the bed to layer the new voiceover onto). Add effects separately only if the workflow needs music and effects independently (e.g. remixing the music but keeping SFX).multi_voice. If speech is buried in noise or a boomy room, chain speech_denoise and/or speech_dereverb first, then separate.music_detection to find where music appears, then music_identification on those ranges; music_removal if you must deliver a music-free version.Prefer the finest stem the deliverable justifies, and always include a residual/other target when the stems must re-sum to the original.
Separation is never perfect. The following are production heuristics for judging output, not documented guarantees.
Listen to each stem soloed, and also summed back together, checking for:
vocals and busy other stems, and on heavily-compressed source (MP3 at low bitrate).drums, bass, and plucked guitar.other/residual target) or a stem is phase-rotated.other; if you didn't request it they are simply gone.other/other-x-guitar target or use residual: true so no energy is silently dropped.speech_denoise/speech_dereverb *before* multi_voice when the recording is degraded; for music stems, separate first, then repair the isolated stem with a dedicated tool (e.g. iZotope RX spectral repair) rather than the source.vocals_lead + vocals_backing often leaves less bleed than a single vocals when only the lead is needed.dialogue is clean but effects has bleed, deriving effects as residual of dialogue+music can beat the direct effects model on some material — A/B them.Separating a recording does not create rights in it. These are legal/policy facts (verified against AudioShake's Terms and public statements on 2026-07-10) plus production caution, not legal advice — advise the user to confirm with counsel for consequential use.
AudioShake also ships a local inference SDK (verified 2026-07-10) that runs separation on-device — Linux, Windows, macOS, Android, iOS (x86_64 / ARM64), CPU or GPU (CUDA, DirectX 12, Apple Metal/Neural Engine, OpenGL ES), with a real-time streaming path (AudioShakeSeparator) and a file path (SourceSeparationTask). Access needs a Client ID/Secret from AudioShake (contact [email protected]). Choose the SDK over the cloud API when the workflow is real-time / low-latency (live music removal, in-app karaoke, game audio), offline, or privacy-constrained so audio must never leave the device. Choose the cloud Tasks API for batch/back-catalog processing, the full model catalog, transcription/alignment, and when you don't want to ship and update models.
This is a decision boundary only — not a guide to running Demucs. Demucs / HTDemucs (htdemucs, htdemucs_ft) from Meta, usable via UVR or StemRoller, is the strongest open-weight separator and runs free and locally, typically producing a 4-stem split (vocals / drums / bass / other).
Independent and first-party benchmarks agree AudioShake measures higher (AudioShake's first-party claim: vocals SDR ~2 dB above Demucs and ~1 dB better averaged across sources; it won the Sony Sound Demixing Challenge 2023 across both the music (MDX) and cinematic (CDX) tracks — treat the specific dB figures as first-party/secondary evidence, verified 2026-07-10). But the *right* choice depends on constraints, not just SDR:
Prefer a local model (Demucs) when: the budget for per-minute credits is effectively zero and volume is high; audio must never be uploaded (privacy/NDA); you need unlimited/bulk offline runs; or a plain 4-stem split at good-not-best quality is sufficient.
Prefer AudioShake when: you need top measured quality on hard material (dense mixes, backing vocals, low-level detail); you need capabilities Demucs doesn't offer at all — DME/dialogue separation, per-speaker multi_voice, lyric transcription/alignment, music detection/identification, and fine instrument stems like guitar_acoustic, keys, strings, wind; or you need a managed service with an SLA rather than maintaining models yourself.
A common production pattern: prototype and bulk-triage locally with Demucs, then send the shots that must be broadcast-clean, or that need DME/transcription, through AudioShake.
*This is a worked example, not a required template.*
Intent: produce an instrumental backing plus timed on-screen lyrics from a 3:20 master the user has licensed for karaoke.
Request (POST https://api.audioshake.ai/tasks, header x-api-key: …):
{
"assetId": "asset_9f3c...",
"targets": [
{ "model": "instrumental", "formats": ["wav"] },
{ "model": "vocals", "formats": ["wav"] },
{ "model": "transcription", "formats": ["json"] }
],
"metadata": "catalog:track-8842"
}
Why: instrumental is the deliverable; vocals is kept as a guide/quality check and is nearly free to add on the same task; transcription gives line-level timing for the lyric display. Billing ≈ ceil(3:20)=4 min × 3 targets, at 1.0/min each → ~12 credits.
Then: poll GET /tasks/{id} (or use a webhook) until each target is completed; download from output within the hour or set writeDestination to your bucket.
Likely failure modes: thin/watery instrumental if the source was a lossy MP3 (feed the WAV master); lyric timing drift on heavily reverbed vocals (switch to alignment with a hand-checked transcript for tighter sync).
Variation: for a *practice* app that mutes one instrument on demand, request that instrument with residual: true instead of instrumental.
*Worked example.*
Intent: prepare a 22-minute TV episode stereo mixdown for Spanish dubbing — a clean dialogue reference plus a music-and-effects bed to lay the new dub over.
Request:
{
"url": "https://assets.studio.example/ep204_stereo_mix.wav",
"targets": [
{ "model": "dialogue", "formats": ["wav"] },
{ "model": "music_fx", "formats": ["wav"] }
],
"language": "en"
}
Why: dialogue feeds translation/ADR; music_fx is the fill under the new voiceover, so no music/SFX is lost when English dialogue is removed. Billing ≈ 22 min × 2 targets × 1.5/min → ~66 credits.
Review: solo music_fx and listen under where dialogue used to sit — residual dialogue "mumble" bleed is the usual defect. If present, A/B against deriving the bed as the residual of dialogue, or request effects separately and rebuild the bed. Confirm the summed dialogue+bed nulls close to the original.
Rights note: confirm the studio holds M&E-creation rights and, if the mix is unreleased, secure a data/retention commitment or use the on-device SDK.
*Worked example of the review/repair loop, not a template.*
Situation: a 40-minute two-person interview recorded in a reverberant room; the user wants each speaker isolated for editing.
Approach: because the room is boomy, clean *before* separating —
POST /tasks with speech_dereverb (and speech_denoise if hiss is present) on the source;POST /tasks with multi_voice to get one stem per speaker.Why this order: multi_voice isolates voices but doesn't fix a bad room; feeding it a dereverbed input yields cleaner per-speaker stems than reverb-in-reverb-out. Billing note: multi_voice is the expensive model (10.0/min) — clean first so you only run it once. Watch the 1.5-hour cap (40 min is fine).
Review: solo each speaker stem for cross-talk (the other speaker leaking through during overlaps) and for dereverb over-processing (thin, phasey speech). If over-dry, back off to speech_denoise alone.
Consent: isolated identifiable voices — confirm both speakers consented to processing and reuse before distributing the stems.
All verified 2026-07-10:
https://developer.audioshake.ai/ and the *.md reference pages under it (site map at https://developer.audioshake.ai/llms.txt; schema at https://developer.audioshake.ai/api-reference/openapi.json).https://www.audioshake.ai/terms, https://www.audioshake.ai/privacy-policy; Copyright policy: https://www.audioshake.ai/copyright.https://www.audioshake.ai/post/audioshake-sony-demixing-2023, https://www.audioshake.ai/post/audioshake-voice-model-achieves-highest-quality-state-of-the-art-benchmark); Sound Demixing Challenge 2023 write-up (https://arxiv.org/html/2308.06979v4).https://github.com/facebookresearch/demucs.Take calesthio/audioshake-stem-separation from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.