| 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. |
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
- 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.
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.
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.pyOpen the address printed in the terminal (by default, http://127.0.0.1:7860). The first run may download model assets.
| 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 |
app.py Gradio UI, audio staging, inference orchestration, and Web Audio mixer
requirements.txt Platform-aware runtime dependencies
- 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
Results depend on the source material and selected model. Use only audio you are permitted to process, share, or remix.

