Categorieën bekijken

AI Music Seperation (demucs)

Demucs is open source en oorspronkelijk ontwikkeld door onderzoekers van Meta/Facebook Research.

Github: https://github.com/facebookresearch/demucs


Wat is Demucs? #

Demucs is een geavanceerd AI-model dat complete muzieknummers automatisch kan opsplitsen in losse onderdelen, ook wel stems genoemd.

Denk bijvoorbeeld aan:

  • zang (vocals)
  • drums
  • bas
  • piano
  • gitaar
  • overige instrumenten

Waar vroeger dure studio-software en handmatig werk nodig waren, kan Demucs dit volledig automatisch doen met behulp van kunstmatige intelligentie.

Hoe werkt het? #

Een normaal muziekbestand zoals een MP3 bevat alle geluiden samengevoegd tot één stereospoor.

Demucs analyseert het volledige audiosignaal en probeert vervolgens te bepalen:

  • welke frequenties bij elkaar horen
  • welke geluiden waarschijnlijk drums zijn
  • welke patronen zang vormen
  • welke tonen bij een baslijn horen
  • enzovoort

Het model is getraind op enorme hoeveelheden muziek en leert daardoor instrumenten en patronen herkennen.

Waarom is Demucs bijzonder? #

Demucs gebruikt niet alleen een spectrogram-analyse zoals veel oudere systemen deden.

De moderne versies gebruiken een combinatie van:

  • waveform analyse
  • spectrogram analyse
  • Transformer-netwerken
  • deep learning
  • hybride AI architecturen

Hierdoor zijn de resultaten vaak verrassend goed.

Zelfs complexe muziek met:

  • galm
  • overlappingen
  • meerdere instrumenten
  • drukke mixen

kan redelijk goed gescheiden worden.

Typische output #

Een nummer zoals:

song.mp3

kan automatisch worden opgesplitst naar:

vocals.wav
drums.wav
bass.wav
other.wav

Of bij uitgebreidere modellen zelfs:

vocals.wav
drums.wav
bass.wav
guitar.wav
piano.wav
other.wav

Waarom gebruiken mensen Demucs? #

Muzikanten

  • karaoke tracks maken
  • remixes maken
  • instrumenten isoleren
  • muziek analyseren


DJ’s & producers

  • live remixes
  • mashups
  • stems voor optredens


Developers & AI projecten

  • muziekdetectie
  • beat analyse
  • MIDI extractie
  • visualisaties
  • lichtshows
  • automatische synchronisatie

Draait Demucs op GPU? #

Ja, demucs draait op:

  • CPU
  • NVIDIA CUDA GPU’s
  • PyTorch

Het model is gebouwd op PyTorch.

Een GPU versnelt het proces enorm, maar CPU-only gebruik is ook prima mogelijk voor offline analyse.

BackendOndersteund
CUDA (NVIDIA)
CPU
ROCm AMD⚠️ theoretisch
DirectML
Metal Mac⚠️
ONNX❌ standaard

Demucs installeren (WSL) #

WSL #

Tip: Voor de beste compatibiliteit op Windows wordt WSL2 aanbevolen, vooral bij moderne AI/Python pakketten.

Handleiding WSL2: https://domoticx.net/docs/windows-subsystem-voor-windows-wsl2/

VENV #

Tip: Maak een venv aan om compatibiliteitsproblemen met packages te voorkomen

Ga naar je home folder:

cd ~/

Maak de VENV:

python3 -m venv demucs_env

Activeer de VENV:

source demucs_env/bin/activate

Installeren van demucs #

Eenmaal in de VENV, installeer deze packages met de PIP manager:

pip install demucs torchcodec sounddevice soundfile pydub

Voorbeeld output:

...
Successfully built demucs julius dora-search antlr4-python3-runtime
Installing collected packages: torchaudio, pydub, nvidia-cusparselt-cu13, mpmath, lameenc, cuda-toolkit, antlr4-python3-runtime, typing-extensions, triton, treetable, tqdm, torchcodec, sympy, setuptools, retrying, pyyaml, pycparser, nvidia-nvtx, nvidia-nvshmem-cu13, nvidia-nvjitlink, nvidia-nccl-cu13, nvidia-curand, nvidia-cufile, nvidia-cuda-runtime, nvidia-cuda-nvrtc, nvidia-cuda-cupti, numpy, networkx, MarkupSafe, fsspec, filelock, einops, cuda-pathfinder, cloudpickle, submitit, omegaconf, nvidia-cusparse, nvidia-cufft, nvidia-cublas, jinja2, cuda-bindings, cffi, soundfile, sounddevice, nvidia-cusolver, nvidia-cudnn-cu13, torch, openunmix, julius, dora-search, demucs
Successfully installed MarkupSafe-3.0.3 antlr4-python3-runtime-4.9.3 cffi-2.0.0 cloudpickle-3.1.2 cuda-bindings-13.2.0 cuda-pathfinder-1.5.4 cuda-toolkit-13.0.2 demucs-4.0.1 dora-search-0.1.12 einops-0.8.2 filelock-3.29.0 fsspec-2026.4.0 jinja2-3.1.6 julius-0.2.7 lameenc-1.8.2 mpmath-1.3.0 networkx-3.6.1 numpy-2.4.4 nvidia-cublas-13.1.1.3 nvidia-cuda-cupti-13.0.85 nvidia-cuda-nvrtc-13.0.88 nvidia-cuda-runtime-13.0.96 nvidia-cudnn-cu13-9.20.0.48 nvidia-cufft-12.0.0.61 nvidia-cufile-1.15.1.6 nvidia-curand-10.4.0.35 nvidia-cusolver-12.0.4.66 nvidia-cusparse-12.6.3.3 nvidia-cusparselt-cu13-0.8.1 nvidia-nccl-cu13-2.29.7 nvidia-nvjitlink-13.0.88 nvidia-nvshmem-cu13-3.4.5 nvidia-nvtx-13.0.85 omegaconf-2.3.0 openunmix-1.3.0 pycparser-3.0 pydub-0.25.1 pyyaml-6.0.3 retrying-1.4.2 setuptools-81.0.0 sounddevice-0.5.5 soundfile-0.13.1 submitit-1.5.4 sympy-1.14.0 torch-2.12.0 torchaudio-2.11.0 torchcodec-0.11.1 tqdm-4.67.3 treetable-0.2.6 triton-3.7.0 typing-extensions-4.15.0

Ps na de installatie is de VENV ca. 5-6 GB groot geworden, houd hier rekening mee ivm voldoende schijfruimte.

Demucs gebruiken #

Bestand splijten / stems maken #

Plaats een mp3 bestand bijvoorbeeld test.mp3 in de folder en voer het volgende commando uit:

demucs test.mp3

Voorbeeld output (1e run):

Important: the default model was recently changed to `htdemucs` the latest Hybrid Transformer Demucs model. In some cases, this model can actually perform worse than previous models. To get back the old default model use `-n mdx_extra_q`.
Downloading: "https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/955717e8-8726e21a.th" to /home/username/.cache/torch/hub/checkpoints/955717e8-8726e21a.th
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 80.2M/80.2M [00:03<00:00, 24.9MB/s]
Selected model is a bag of 1 models. You will see that many progress bars per track.
Separated tracks will be stored in /home/username/separated/htdemucs
Separating track test.mp3
100%|████████████████████████████████████████████████████████████████████████| 292.5/292.5 [00:43<00:00,  6.69seconds/s]
/home/orka2/demucs_env/lib/python3.12/site-packages/torchaudio/__init__.py:178: UserWarning: The 'encoding' parameter is not fully supported by TorchCodec AudioEncoder.
  return save_with_torchcodec(
/home/orka2/demucs_env/lib/python3.12/site-packages/torchaudio/__init__.py:178: UserWarning: The 'bits_per_sample' parameter is not directly supported by TorchCodec AudioEncoder.
  return save_with_torchcodec(
(demucs_env)

Je ziet dat het “standaard” model ook meteen gedownload wordt:

https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/955717e8-8726e21a.th

naar:

/home/username/.cache/torch/hub/checkpoints/955717e8-8726e21a.th

Op de CPU duurt het even, de bestanden worden neergezet in:

/separated/htdemucs/test/bass.wav
/separated/htdemucs/test/drums.wav
/separated/htdemucs/test/other.wav
/separated/htdemucs/test/vocals.wav

Demucs plaats bestanden standaard altijd in:

output/modelnaam/songnaam/

Wil je dat beperken of aanpassen gebruik dan de -o parameter:

demucs -o . test.mp3

Dan krijg je de output in:

./htdemucs/test/

Wil je ook MP3 output ipv wav geef dit op met de volgende parameters:

 demucs --mp3 --mp3-bitrate 320 -o . test.mp3


Dan worden deze bestanden gegenereerd:

/htdemucs/test/bass.mp3
/htdemucs/test/drums.mp3
/htdemucs/test/other.mp3
/htdemucs/test/vocals.mp3

Beter getrained model gebruiken #

Gebruik het _ft (fine tuned) model voor een betere kwaliteit splitsing, het converteren duurt wel 4-8x langer:

demucs -n htdemucs_ft --mp3 --mp3-bitrate 320 -o . test.mp3

Voorbeeld output:

Downloading: "https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/f7e0c4bc-ba3fe64a.th" to /home/username/.cache/torch/hub/checkpoints/f7e0c4bc-ba3fe64a.th
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 80.2M/80.2M [00:03<00:00, 24.4MB/s]
Downloading: "https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/d12395a8-e57c48e6.th" to /home/username/.cache/torch/hub/checkpoints/d12395a8-e57c48e6.th
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 80.2M/80.2M [00:03<00:00, 24.4MB/s]
Downloading: "https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/92cfc3b6-ef3bcb9c.th" to /home/username/.cache/torch/hub/checkpoints/92cfc3b6-ef3bcb9c.th
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 80.2M/80.2M [00:03<00:00, 23.2MB/s]
Downloading: "https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/04573f0d-f3cf25b2.th" to /home/username/.cache/torch/hub/checkpoints/04573f0d-f3cf25b2.th
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 80.2M/80.2M [00:02<00:00, 35.4MB/s]
Selected model is a bag of 4 models. You will see that many progress bars per track.
Separated tracks will be stored in /home/username/htdemucs_ft
Separating track test.mp3
100%|████████████████████████████████████████████████████████████████████████| 292.5/292.5 [00:45<00:00,  6.48seconds/s]
100%|████████████████████████████████████████████████████████████████████████| 292.5/292.5 [00:44<00:00,  6.60seconds/s]
100%|████████████████████████████████████████████████████████████████████████| 292.5/292.5 [00:43<00:00,  6.76seconds/s]
100%|████████████████████████████████████████████████████████████████████████| 292.5/292.5 [00:43<00:00,  6.68seconds/s]

Er worden namelijk 4 demucs AI bestanden gedownload en deze worden 1-voor-1 losgelaten op het mp3 bestand:

Splijten naar meer stems #

Er is ook een _6s model dat 6 stems genereert, let er wel op dat de kwaliteit van de gegenereerde stems kan afnemen.

 demucs -n htdemucs_6s --mp3 --mp3-bitrate 320 -o . test.mp3

Voorbeeld output:

Downloading: "https://dl.fbaipublicfiles.com/demucs/hybrid_transformer/5c90dfd2-34c22ccb.th" to /home/username/.cache/torch/hub/checkpoints/5c90dfd2-34c22ccb.th
100%|████████████████████████████████████████████████████████████████████████████████████████████████| 52.4M/52.4M [00:02<00:00, 24.5MB/s]
Selected model is a bag of 1 models. You will see that many progress bars per track.
Separated tracks will be stored in /home/username/htdemucs_6s
Separating track test.mp3
100%|████████████████████████████████████████████████████████████████████████| 292.5/292.5 [00:41<00:00,  6.98seconds/s]

Dit genereert de volgende bestanden:

/htdemucs/test/bass.mp3
/htdemucs/test/drums.mp3
/htdemucs/test/guitar.mp3
/htdemucs/test/other.mp3
/htdemucs/test/piano.mp3
/htdemucs/test/vocals.mp3