Skip to content

StemSplit/n8n-stemsplit

Repository files navigation

n8n-nodes-stemsplit

npm N8N Community Nodes License: MIT

Separate vocals, drums, bass, and other stems from any audio file — or remove background noise from voice recordings — directly inside N8N. n8n-nodes-stemsplit connects your workflows to the StemSplit API, letting you remove vocals from a song, isolate instrumentals, extract drum tracks, split full 6-stem mixes, and clean up noisy recordings using DeepFilterNet — without any ML infrastructure.

Submit audio via URL, binary upload, YouTube video URL, or SoundCloud track URL, wait for processing, and get presigned download URLs — all as native N8N nodes.


What It Does

Accepts audio via public URL, binary file upload, YouTube video URL, or SoundCloud track URL. Submits to the StemSplit API for processing. Returns presigned download URLs for each output.

Stem Separation

Operation When to use it
Separate Stems (Wait) You want vocals, drums, bass, etc. back immediately in the same workflow — submits and polls until complete
Separate Stems Fire-and-forget — submit many jobs in parallel and poll status later
Get Job Check status or retrieve output URLs for a previously submitted job
List Jobs Browse job history or filter by status

Outputs presigned download URLs for: vocals · instrumental · drums · bass · piano · guitar · other

Voice Cleaner (Noise Removal)

Operation When to use it
Clean Voice (Wait) Remove background noise, hum, hiss, or echo from a recording — submits and polls until complete
Clean Voice Fire-and-forget — submit a denoise job and poll status later
Get Voice Cleaner Job Check status or retrieve the download URL for a previously submitted denoise job
List Voice Cleaner Jobs Browse denoise job history or filter by status

Outputs a single presigned download URL for the cleaned audio file.

Account

Operation When to use it
Get Balance Check remaining credits before a batch run

Installation

Via the N8N Community Nodes UI

  1. Open Settings → Community Nodes
  2. Click Install a community node
  3. Enter n8n-nodes-stemsplit
  4. Click Install

Via npm (self-hosted N8N)

npm install n8n-nodes-stemsplit

Credentials

  1. Go to stemsplit.io/app/settings/api and generate an API key (format: sk_live_...).
  2. In N8N, add a new StemSplit API credential and paste your key.

The node sends Authorization: Bearer <key> on every request to https://stemsplit.io/api/v1.


Operations

Separate Stems

Submits audio for processing and returns immediately with a job ID. Use this when you want to submit many jobs in parallel and poll status later with Get Job.

Input source:

  • Binary File — pass audio as a binary N8N item (from an HTTP Request, Read Binary File, or any binary-capable node)
  • URL — provide a publicly accessible URL; StemSplit fetches it server-side
  • YouTube URL — paste any YouTube video URL; outputs vocals + instrumental (MP3, best quality)
  • SoundCloud URL — paste any SoundCloud track URL; outputs vocals + instrumental (MP3, best quality)

Note: For YouTube and SoundCloud inputs, Output Type, Quality, and Format options are fixed (Vocals + Instrumental, Best quality, MP3). The node ignores those fields if set.

Parameters:

Parameter Default Description
Output Type VOCALS + Instrumental Which stems to extract (see Output Types below)
Quality Best Processing quality: Fast, Balanced, or Best
Output Format MP3 Output file format: MP3, WAV, or FLAC
File Name (auto) Override the job's display name
Denoise Vocals false Run the extracted vocals stem through Voice Cleaner (DeepFilterNet) after separation
Metadata {} Custom JSON echoed back in all job responses

Output fields: id, status, progress, creditsRequired, estimatedSeconds, createdAt, options, input, metadata


Separate Stems (Wait for Completion)

Submits audio and polls until the job reaches COMPLETED — or throws on FAILED or timeout. Returns presigned download URLs for every stem.

Input source:

  • Binary File — pass audio as a binary N8N item (from an HTTP Request, Read Binary File, or any binary-capable node)
  • URL — provide a publicly accessible URL; StemSplit fetches it server-side
  • YouTube URL — paste any YouTube video URL; outputs vocals + instrumental (MP3, best quality)
  • SoundCloud URL — paste any SoundCloud track URL; outputs vocals + instrumental (MP3, best quality)

Note: For YouTube and SoundCloud inputs, Output Type, Quality, and Format options are fixed (Vocals + Instrumental, Best quality, MP3). The node ignores those fields if set.

Additional parameters:

Parameter Default Description
Timeout (Seconds) 600 Give up after this many seconds
Poll Interval (Seconds) 5 How often to check job status

Additional output fields:

  • vocalsUrl / vocalsExpiresAt
  • instrumentalUrl / instrumentalExpiresAt
  • drumsUrl, bassUrl, otherUrl, pianoUrl, guitarUrl (when applicable)

Note: Presigned URLs expire 1 hour after job completion. Output files are deleted 14 days after creation.


Get Job

Fetch a single stem separation job by ID. Returns the same fields as Separate Stems (Wait), including all available output URLs.


List Jobs

Returns a paginated list of stem separation jobs. Optional status filter (PENDING, PROCESSING, COMPLETED, FAILED) and pagination via limit/offset.


Clean Voice (Wait for Completion)

Submits audio for noise removal using StemSplit Voice Cleaner (powered by DeepFilterNet) and polls until complete. Ideal for cleaning podcast recordings, dialogue, vocals, or any audio with background noise, hum, hiss, or echo.

Input source: Binary File or URL (no YouTube/SoundCloud).

Parameters:

Parameter Default Description
Output Format MP3 Output file format: MP3, WAV, or FLAC
Timeout (Seconds) 600 Give up after this many seconds
Poll Interval (Seconds) 5 How often to check job status
File Name (auto) Override the job's display name

Output fields: id, status, creditsCharged, completedAt, input, options, audioUrl, audioExpiresAt


Clean Voice

Submits audio for noise removal and returns immediately with a job ID. Poll status later with Get Voice Cleaner Job.

Output fields: id, status, progress, creditsRequired, estimatedSeconds, createdAt, options, input


Get Voice Cleaner Job

Fetch a single voice cleaner job by ID. When status is COMPLETED, the response includes audioUrl — a presigned download link for the cleaned audio file (expires in 1 hour).


List Voice Cleaner Jobs

Returns a paginated list of voice cleaner jobs. Optional status filter and pagination via limit/offset.


Get Balance

Returns your current credit balance:

{
  "balanceSeconds": 3600,
  "balanceMinutes": 60,
  "balanceFormatted": "60 minutes",
  "updatedAt": "2026-05-21T00:00:00Z"
}

Credit model: 1 credit = 1 second of audio. Credits are deducted at job submission. If your balance is insufficient, the node throws a 402 INSUFFICIENT_CREDITS error.


Output Types

Value Stems produced
VOCALS Vocals only
INSTRUMENTAL Instrumental only
BOTH Vocals + Instrumental
FOUR_STEMS Vocals, Drums, Bass, Other
SIX_STEMS Vocals, Drums, Bass, Other, Piano, Guitar (requires Best quality)

Supported Audio Formats

Input: mp3, wav, flac, m4a, ogg, webm, aac, wma
Max file size: 50 MB


Example Workflows

Basic vocal remover pipeline

[HTTP Request: download audio]
  → [StemSplit: Separate Stems (Wait)]
  → [HTTP Request: download vocals URL]
  → [Write Binary File: save vocals.mp3]

Batch stem splitter from local files

[Read Binary File: song.mp3]
  → [StemSplit: Separate Stems (Wait), Output: SIX_STEMS]
  → [Split In Batches]
  → [HTTP Request: upload each stem to S3]

YouTube stem separator

[StemSplit: Separate Stems (Wait), Input: YouTube URL]
  → [HTTP Request: download vocals URL]
  → [Write Binary File: save vocals.mp3]

Clean up a podcast recording

[Read Binary File: episode.mp3]
  → [StemSplit: Clean Voice (Wait)]
  → [HTTP Request: download audioUrl]
  → [Write Binary File: save episode_denoised.mp3]

Separate stems and denoise vocals in one shot

[HTTP Request: download song]
  → [StemSplit: Separate Stems (Wait), Denoise Vocals: true]
  → [HTTP Request: download denoised vocalsUrl]

Fire-and-forget with webhook callback

[Webhook trigger]
  → [StemSplit: Separate Stems]      ← returns job ID instantly
  → [Set: store job ID in DB]
  → [Cron: poll every 30s via Get Job]
  → [IF: status === COMPLETED]
  → [HTTP Request: notify downstream service]

Why StemSplit?

StemSplit runs state-of-the-art source separation models (HTDemucs) and noise removal models (DeepFilterNet) on GPU infrastructure purpose-built for audio. If you need to separate vocals online or remove background noise without managing your own ML stack, StemSplit's API gives you:

  • Sub-minute turnaround on most tracks (Fast/Balanced quality)
  • High-fidelity six-stem output — vocals, drums, bass, piano, guitar, other
  • Voice Cleaner — remove noise, hum, hiss, echo, and ambient sound from any audio using DeepFilterNet
  • Simple credit model — pay per second of audio processed, no subscriptions required
  • No file hosting needed — pass a URL and StemSplit fetches it server-side
  • YouTube & SoundCloud support — separate stems directly from a video or track URL, no downloading required

Full API docs: stemsplit.io/docs/api
OpenAPI spec: GET https://stemsplit.io/api/v1/openapi


Requirements

  • N8N v0.200 or later
  • A StemSplit account with an API key — sign up at stemsplit.io
  • Sufficient credit balance for your audio files (check with Get Balance)

License

MIT © StemSplit

About

n8n community node (n8n-nodes-stemsplit) for StemSplit stem separation and voice cleaning

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors