Skip to main content

VoxSplit

voxsplit.borck.dev — hear real separation output, then self-host.

Local-first AI stem separation with a modern web UI. Drop in a song, get back vocals, instrumental, or full 4-stem splits — everything runs on your own machine, no accounts, no uploads to the cloud.

VoxSplit is a greenfield web app built on proven open-source separation engines. It is inspired by Ultimate Vocal Remover GUI and stands on the shoulders of that project and its model authors.

Status

Working proof of concept: upload → separate with per-job progress → play/download stems. Models auto-use the best available accelerator: CUDA on Linux/NVIDIA, MPS on Apple Silicon (torch-based models), CPU everywhere.

Models

Weights are fetched on demand (first use of each model) into data/models/ from the community model repos maintained by the UVR and python-audio-separator projects. No manual downloads needed.

Model Family Stems Notes
Mel-Band RoFormer (aufr33/viperx) RoFormer 2 SOTA karaoke quality
Mel-Band RoFormer (becruily) RoFormer 2 SOTA karaoke alt
Mel-Band RoFormer (KimberleyJSN) RoFormer 2 SOTA vocals
UVR-MDX-NET-Inst HQ 3 MDX-Net 2 Fast, high quality
Kim Vocal 2 MDX-Net 2 Vocals, male-leaning
UVR MDXNET Kara 2 MDX-Net 2 Karaoke-optimized
htdemucs_4s Demucs 4 Vocals/drums/bass/other

Accelerator notes: RoFormer and Demucs run on CUDA/MPS automatically. MDX-Net runs via onnxruntime — CPU on macOS, CUDA on Linux with audio-separator[gpu].

Quickstart

Requires Python 3.10+ and uv (or plain pip — see note below).

git clone https://github.com/michael-borck/voxsplit
cd voxsplit
uv venv
source .venv/bin/activate
uv pip install -e .
voxsplit

Without uv: python3 -m venv .venv && source .venv/bin/activate && pip install -e .

Open http://127.0.0.1:8399, drop a .wav/.mp3/.flac, pick a model, hit Split. The first run downloads the selected model (~60 MB) to data/models/.

Architecture

browser (vanilla JS) ──► FastAPI (backend/main.py)
                            ├── jobs.py     thread-safe job store, 1-worker queue
                            ├── engine.py   python-audio-separator wrapper (lazy import)
                            └── data/       uploads, outputs, model weights
  • REST API: POST /api/jobs (upload + model), GET /api/jobs/{id} (status), GET /api/jobs/{id}/files/{name} (stream stem), DELETE /api/jobs/{id}.
  • Engines: models run via python-audio-separator, which supports UVR's MDX-Net/VR models, Demucs, and Mel-Band RoFormers.

Credits

This project exists because of the people who built the models and the original app:

  • Anjok07 & aufr33 — Ultimate Vocal Remover GUI, the project that made high-quality local stem separation accessible.
  • nomadkaraoke — python-audio-separator, the maintained headless engine VoxSplit wraps.
  • ZFTurbo — MDX23C weights and Music-Source-Separation-Training.
  • Kuielab & Woosung Choi — original MDX-Net AI code.
  • tsurumeso — original VR architecture code.
  • Alexandre Défossez & Meta (Demucs) — Demucs AI code.
  • Bas Curtiz — original UVR logo/icon design.

Deployment (NVIDIA)

On a Linux box with NVIDIA GPUs and Docker + nvidia-container-toolkit:

cd deploy
docker compose up -d --build

Then browse to http://<box-ip>:8399. Model weights persist in deploy/data/.

Roadmap

  • Per-job progress reporting (tqdm hooks on torch models)
  • Mel-Band RoFormer models (current SOTA)
  • Apple Silicon MPS acceleration (automatic for torch models)
  • Ensemble mode + post-processing (from UVR's playbook)
  • Optional Tauri desktop wrapper

License

MIT — see LICENSE.

Metadata

Release files for voxsplit 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for voxsplit 0.1.0
File Size Uploaded
voxsplit-0.1.0.tar.gz 15.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for voxsplit 0.1.0
File Interpreter ABI Platform
voxsplit-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 29.9 kB

Release files / voxsplit-0.1.0.tar.gz

Download URL voxsplit-0.1.0.tar.gz
Size 15.8 kB
Tags Source
SHA-256 checksum
How to use checksums
b8b3057d4fd92c2c40dd0f5b15e46a7b8e057efcdb30c26b7a91ac74ec7f313e
BLAKE2b-256 checksum
How to use checksums
6da0a604a3d4c7ad4201f30b9b7fdaa9ae40e0b6bd5f91e7e714bc51a09ec4f9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release files / voxsplit-0.1.0-py3-none-any.whl

Download URL voxsplit-0.1.0-py3-none-any.whl
Size 14.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
9a0f26f382ea99eff8cfdc1241085151d971099819ba18fd1fc9d9488cfb3241
BLAKE2b-256 checksum
How to use checksums
c416f479397ec21167f6151a38077109149f4a6577f4a8c218551ea8e1122ddb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page