Changelog¶
The canonical changelog lives in CHANGELOG.md
at the repo root. Below is a copy of the most recent versions.
[0.3.1] — 2026-05-21¶
Documentation-only re-release of v0.3.0 with corrected README and CHANGELOG framing. Runtime is identical to v0.3.0.
[0.3.0] — 2026-05-21 — browser support, more models, docs site¶
v0.3.0 adds browser inference via onnxruntime-web, two new model
flavors (htdemucs and htdemucs_6s), a published documentation site,
and a session-pooling fix that eliminates CoreML graph re-compilation
across repeated separate() calls.
Added¶
htdemucsflavor — single-file 4-stem ONNX model. ~30% faster than the FT bag (1 session instead of 4), slightly lower SDR. New HF repo:StemSplitio/htdemucs-onnx. Use viaseparate(model="htdemucs").htdemucs_6sflavor — single-file 6-stem ONNX model with guitar and piano in addition to the standard 4 stems. The only ONNX export of the 6-stem variant on the Hub. New HF repo:StemSplitio/htdemucs-6s-onnx. Use viaseparate(model="htdemucs_6s")orseparate_stem("song.mp3", "guitar").demucs_onnx.browsermodule + CLI commands —demucs-onnx browser-config --bundler {vite|webpack|esbuild|next|rollup}prints copy-pasteableonnxruntime-webconfig snippets, anddemucs-onnx browser-demo PATH [--react]scaffolds the in-tree vanilla-HTML or Vite+React+TS demo into a directory so users can runpython -m http.serverand try it locally.examples/browser/andexamples/browser-react/in the GitHub repo with full working demos.prewarm(models=[...])— pre-download and pre-compile ORT sessions so the firstseparate()call doesn't pay the CoreML graph-compile or HF-download tax. Newdemucs-onnx prewarmCLI too.SessionPool+session_pool()— process-wide session cache so repeatedseparate*calls reuse compiled graphs (especially valuable for CoreML EP).- Docs site at stemsplit.github.io/demucs-onnx
with autogenerated API reference via
mkdocstrings[python], the canonical 4-blocker write-up, browser guide, model registry, and honest comparison vs spleeter / cloud APIs.
Changed¶
list_models()includeskindandsources— each entry now reports whether it's aspecialist_bag,single, orspecialistmodel and the comma-joined stem list. CLIlist-modelsupdated.separate_stem(..., "guitar")andseparate_stem(..., "piano")auto-route tohtdemucs_6sinstead of erroring on unknown stem.- CLI
--stemacceptsguitarandpiano(auto-routes). - Quiet
huggingface_hubHTTP logs in non-verbose mode and disable hf-hub progress bars when--quiet.
Fixed¶
- Specialist bag re-compilation on every call —
separate()now uses a process-wideSessionPoolso repeated calls reuse the loadedInferenceSession, fixing the multi-minute CoreML graph-compile tax on the second-through-Nth call toseparate(model="htdemucs_ft").
Polish¶
[project.urls]addsDocumentation = "https://stemsplit.github.io/demucs-onnx/".
[0.2.0] — 2026-05-21 — the UX bundle¶
Backwards-compatible UX overhaul. Four headline features, all opt-in or default-on:
providers="auto"(now default) picks CoreML on macOS arm64, CUDA on Linux+NVIDIA, DML on Windows DX12, CPU otherwise.precision="fp16weights"/--smalldownloads ~1.9× smaller model files with no runtime cost.--mp3output with--bitrate {32-320}kvia thelameencextra (no ffmpeg required).--mix-stems/--karaokewrite a single summed-stem file alongside the individual stems.tqdmprogress bar;--quiet/--verboseflags.- Auto-resample any sample rate (8 kHz – 192 kHz, mono or multi-channel).
See the full changelog in
CHANGELOG.md.
[0.1.0] — 2026-05-21 — initial release¶
- Pure numpy + onnxruntime inference path for
htdemucs_ftat fp32 parity to the original PyTorch model (max abs diff < 1.71 × 10⁻⁴). export_to_onnx(checkpoint, output)applies the four blocker patches and parity-checks before writing.- Five companion model repos under
StemSplitioon the Hugging Face Hub. - CLI:
demucs-onnx separate,demucs-onnx export,demucs-onnx list-models.