Skip to content

Latest commit

 

History

4 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

title Stem Studio
emoji 🎛️
colorFrom purple
colorTo pink
sdk gradio
sdk_version 6.25.0
python_version 3.12.12
app_file app.py
pinned false
suggested_hardware zero-a10g
short_description Separate songs into synchronized, mixable instrument tracks.

Stem Studio

Turn a finished song into a working mix. Stem Studio separates uploaded audio into vocal and instrument layers, keeps every result aligned on a shared timeline, and makes each stem available for auditioning or download.

Try the live demo on Hugging Face Spaces

Stem Studio upload and separation controls

Stem Studio synchronized six-stem mixer

What it does

  • Separates a track into 2, 4, 6, or 53 stems using BS-RoFormer models.
  • Provides synchronized playback, scrubbing, and per-stem or per-group mute controls in the browser.
  • Groups detailed stems into vocals, rhythm, guitars & keys, orchestral & winds, and other instruments to keep a large session approachable.
  • Keeps broad, overlapping predictions muted by default in 53-stem mode, so detailed individual sources remain the starting point for a clean mix.
  • Exports individual WAV files and a ZIP archive for use in a DAW or other audio workflow.

Design notes

The interface is deliberately built around the moment after inference rather than treating separation as a download-only operation. Every rendered stem is loaded into a Web Audio mixer, allowing a listener to compare layers without losing their place in the song.

The runtime selects MLX on Apple Silicon and Torch elsewhere. Input is normalized to stereo 44.1 kHz float WAV before inference, and output files are staged per job so that the UI can reliably serve previews and downloads. On MLX, model chunk sizes are aligned to the STFT hop length when a published configuration needs that adjustment.

Run locally

Python 3.12 is recommended. Apple Silicon machines use the MLX extra automatically; other platforms use the standard Torch backend.

git clone https://github.com/<your-username>/stem-studio.git
cd stem-studio
python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
python app.py

Open the address printed in the terminal (by default, http://127.0.0.1:7860). The first run may download model assets.

Separation modes

Mode Intended use
Voice + music A quick vocal/accompaniment split
Core instruments Vocals, drums, bass, and other
Full band Adds guitar and piano to the core mix
Every detail A 53-stem session for closer inspection and remixing

Project layout

app.py           Gradio UI, audio staging, inference orchestration, and Web Audio mixer
requirements.txt Platform-aware runtime dependencies

Built with

  • Gradio for the application interface
  • BS-RoFormer Infer for source separation
  • MLX on Apple Silicon and PyTorch on other platforms
  • FFmpeg, via imageio-ffmpeg, for reliable audio normalization

Notes

Results depend on the source material and selected model. Use only audio you are permitted to process, share, or remix.

About

Interactive music source separation with a synchronized stem mixer

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages