|
Download README.md from thepatch/htdemucs-GGUF: direct link, hf CLI and curl.
- Browser
- Download file 3.67 kB
-
https://huggingface.co/thepatch/htdemucs-GGUF/resolve/main/README.md
- Command line
-
hf download hf://thepatch/htdemucs-GGUF/README.md
-
curl -L -o README.md https://huggingface.co/thepatch/htdemucs-GGUF/resolve/main/README.md
3.67 kB
| license: mit | |
| pipeline_tag: audio-to-audio | |
| tags: | |
| - audio-source-separation | |
| - music-source-separation | |
| - htdemucs | |
| - demucs | |
| - gguf | |
| - stems.cpp | |
| # HTDemucs GGUF | |
| Meta's Hybrid Transformer Demucs (v4) converted to GGUF for | |
| [stems.cpp](https://github.com/betweentwomidnights/stems.cpp), a C++/ggml stem separator that runs | |
| on CPU, CUDA, Vulkan and Metal with no Python. The three published HTDemucs models are here: | |
| | model | stems | files | | |
| |---|---|---| | |
| | `htdemucs` | drums, bass, other, vocals | `htdemucs-42M-v1.0-{F32,F16}.gguf` | | |
| | `htdemucs_6s` | drums, bass, other, vocals, guitar, piano | `htdemucs_6s-27M-v1.0-{F32,F16}.gguf` | | |
| | `htdemucs_ft` | drums, bass, other, vocals (a bag of four fine-tuned models, one per stem) | `htdemucs_ft-4x42M-v1.0-{F32,F16}.gguf` | | |
| | file | size | | |
| |---|---:| | |
| | `htdemucs-42M-v1.0-F32.gguf` | 160 MiB | | |
| | `htdemucs-42M-v1.0-F16.gguf` | 100 MiB | | |
| | `htdemucs_6s-27M-v1.0-F32.gguf` | 104 MiB | | |
| | `htdemucs_6s-27M-v1.0-F16.gguf` | 70 MiB | | |
| | `htdemucs_ft-4x42M-v1.0-F32.gguf` | 640 MiB | | |
| | `htdemucs_ft-4x42M-v1.0-F16.gguf` | 400 MiB | | |
| ## Download and run | |
| ```sh | |
| git clone --recursive https://github.com/betweentwomidnights/stems.cpp && cd stems.cpp | |
| ./build.sh vulkan # or cpu | cuda | metal (Windows: build.cmd) | |
| ./models.sh htdemucs_6s # F32; --encoding f16 for the smaller files | |
| build-vulkan/bin/stems-split -m models/htdemucs_6s-27M-v1.0-F32.gguf -i song.wav -o stems/ | |
| ``` | |
| `stems-server` finds these files by model name (`"model": "htdemucs_6s"`); see the stems.cpp README. | |
| ## Parity with PyTorch | |
| Each figure is the SNR of the C++ output against `demucs 4.0.1` in float32, full separation of a | |
| 20 s clip (demucs' `test.mp3`), for the worst stem of each model. Every stem of every model passes | |
| stems.cpp's parity check (cosine 0.9999 or better). Measured 2026-10-02/03 on stems.cpp with ggml | |
| `f30f0cdc`. CPU, CUDA and Vulkan: Core Ultra 9 275HX / RTX 5070 Laptop. Metal: Apple M4, against | |
| torch refs dumped on the M4. | |
| | model | encoding | CPU | CUDA | Vulkan | Metal | | |
| |---|---|---:|---:|---:|---:| | |
| | htdemucs | F32 | 78.4 | 73.5 | 78.3 | 70.7 | | |
| | htdemucs | F16 | 56.9 | 73.5 | 56.4 | | | |
| | htdemucs_6s | F32 | 75.3 | 68.5 | 75.2 | 74.3 | | |
| | htdemucs_6s | F16 | 53.9 | 68.5 | 55.5 | | | |
| | htdemucs_ft | F32 | 70.7 | 69.5 | 70.6 | 67.1 | | |
| | htdemucs_ft | F16 | 63.5 | 69.5 | 64.4 | | | |
| **F32 is the reference.** F16 stores only the cross-transformer's matmul weights in half | |
| precision, with the convolutions kept F32. It costs about 20 dB on CPU and Vulkan and nothing | |
| measurable on CUDA (whose F32 matmuls already run as TF32), and stays more than 50 dB below every | |
| stem. It is about 40% smaller, not faster. The per-stem tables are in stems.cpp's `docs/PARITY.md`. | |
| ## Sources and license | |
| - Upstream: [facebookresearch/demucs](https://github.com/facebookresearch/demucs), `demucs 4.0.1`. | |
| Checkpoints: htdemucs `955717e8-8726e21a.th`; htdemucs_6s `5c90dfd2-34c22ccb.th`; htdemucs_ft | |
| `f7e0c4bc-ba3fe64a.th`, `d12395a8-e57c48e6.th`, `92cfc3b6-ef3bcb9c.th`, `04573f0d-f3cf25b2.th`. | |
| - Converted with stems.cpp's `tools/convert_htdemucs.py`. Tensors are renamed, packed attention | |
| projections are split into q/k/v, constants are folded into metadata, and the F16 files halve | |
| the transformer's matmul weights. The architecture and weights are otherwise unchanged; every | |
| GGUF records its upstream checkpoint in `general.source.file`. | |
| - Code and weights are MIT-licensed by Meta Platforms, Inc. and affiliates; see `LICENSE` and | |
| `NOTICE`. `SHA256SUMS` lists every GGUF. | |
| If you use HTDemucs, cite *Hybrid Transformers for Music Source Separation* (Rouard, Massa, | |
| Défossez, ICASSP 2023). | |