Tutorial · Python · ~10 min

Make a Karaoke Version of a Song

The instrumental track, minus the vocal, with the timing you need to sync lyrics.

PythonKaraokeAPI

Why this matters

Karaoke needs the instrumental plus timed lyrics. Source separation gives you the instrumental cleanly; OCR/speech timing (or manual sync) handles the lyrics.

Model-based separation beats old center-channel tricks — the backing track keeps its bass and stereo image.

How it works

Submit the song with stems=[vocals, instrumental]; the API returns both stems, and you build the karaoke session around the instrumental.

Submit a job with an input URL (S3, GCS or HTTPS), poll the job URL, and download the rendered output. No GPU, no queues, no ffmpeg builds to babysit.

Code

Python
import requests, time

API = "https://api.mlslabs.io/v1/source-separation/jobs"
headers = {"X-API-Key": "YOUR_API_KEY"}
payload = {"input": "s3://bucket/song.wav", "stems": ["vocals", "instrumental"]}

resp = requests.post(API, json=payload, headers=headers)
job = resp.json()
while job["status"] not in ("succeeded", "failed"):
    time.sleep(3)
    job = requests.get(job["url"], headers=headers).json()

print("Output:", job["output_url"])

Pro tips

  • Use the acapella stem to auto-generate lyric timing if your tool supports it.
  • Normalize the instrumental to -14 LUFS for club/bar playback.
  • For party use, export MP3 320kbps — WAV is for the editor, MP3 for the room.

Pricing note

Usage is metered per minute of media processed; the first tier is free each month. Volume discounts kick in automatically.

FAQ

Common questions

Can I get just the instrumental?

Yes — request stems=[instrumental] only; it is cheaper than requesting both.

Will the instrumental sound full?

Yes — the bass and drums survive; that is the difference from center-channel removal.

What if the song has backing vocals?

Backing vocals split with the vocal stem by default; options exist to isolate the lead only.