Mit Demucs die Tonspuren eines Musikstücks trennen

Es ist bereits fast ein Jahr her, das ich über die real-time stems separation in VirtualDJ geschrieben habe und das Thema die Tonspuren eines Musikstückes zu trennen ist nach wie vor aktuell.

Damals ging mehr oder weniger der Hype im Spleeter voraus. Weitere Tools, ganz gleich ob für’s Studio wie z.B. iZotope RX (ab Edition “Standard”, dort “Music Rebalance” genannt) oder für’s DJing wie Neural Mix Pro gibt es ebenfalls. Ganz neu war ist ist dieses Thema also nicht.

Eine weitere Alternative existiert mit dem Facebook-Projekt Demucs. Dieses ist wie Spleeter open source, setzt (wen wunderts) auf ein vorab trainiertes KI-Modell und läuft unter Python. Das Tool lässt sich auf alle gängigen Plattformen ausführen, Anleitungen hierzu findet man auf der Projektseite. Unter Windows installiert man zuerst Anaconda und klont zunächst das Git-Repository:

cd %HOMEPATH%
conda install git
git clone https://github.com/facebookresearch/demucs

Um nun den eigentlichen Vorgang durchzuführen benötigt man folgende Zeilen im Anaconda Prompt:

cd %HOMEPATH%
cd demucs
conda activate demucs
python.exe -m demucs.separate -d cpu --dl "PATH_TO_AUDIO_FILE_1"

Anbei ein Screenshot eines Versuchs:

Je nach Umfang des Musikstücks oder der Leistungsfähigkeit des Computers benötigt der Vorgang ein wenig. Das Ergebnis findet sich dann unter

%homepath%\demucs\separated\demucs\<Name der Audio-Datei>\

aufgeteilt in einzelne Dateien mit den Namen

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

Vor nicht all zu langer Zeit habe ich mal die Ergebnisse von VirtualDJ mit einer vorberechneten Stem-Datei, Spleeter und Demucs verglichen. Hörbar am besten bei diesen Kandidaten ist die Ausgabe von Demucs. Fairer-weise muss man sagen, das der Fokus bei VirtualDJ auf die Echtzeitfähigkeit liegt, schließlich soll ja live und direkt eingegriffen werden können. Bei Spleeter oder Demucs wird ja sozusagen in aller Ruhe berechnet. Die Ergebnisse können zudem je nach Ausgangsmaterial variieren.

Eine Idee für VirtualDJ könnte sein, das bei vorberechneten Stems ein besseres Verfahren angewendet wird.

2 Kommentare

  1. Dennis

    Hallo Andy, durch deinen Blog hier bin ich auf demucs gestoßen. Auch wenn sich mittlerweile die Befehlszeile zum trennen der Spuren wohl geändert hat ( der –dl Befehl führt bei mir zu einer Fehlermeldung, ohne diesen gehts) , funktionert das im Prinzip mehr oder weniger erstaunlich gut – je älter die Aufnahme, umso störanfälliger wird das System. Und hier hab ich ein Problem: Ich habe ein Soundfile, bei dem demucs beim trennen der Quelle in 2 der 4 Ausgabedateien und deutlich hörbares hochfrequentes Pfeifen erzeugt. Ich werd wahnsinnig. Ich hab mir bei Google einen Wolf gesucht, um irgendwie heraus zu bekommen, ob man mit spezielleren Befehlen eine Art “Finetuning” vornehmen kann. Aber vergebens. Ich weiss bis jetzt na nicht einmal, wozu eigentlich dieser –dl Befehl da ist, ist jetzt aber auch nciht so wichtig. . Ich finde keine deutsche Foren die sich überhaupt mit Anaconda/demucs beschäftigen, auch in einschlägigen Audio/Hifi/Sound Foren findet man nichts. Hast du irgendeine Idee, wieso bei diesem File dieses Pfeifen beim demix entsteht und wie man das evtl verhindern kann? Eigentlich ist das ein Bug, denn es kann ja nicht Sinn der Sache sein, ungewollte Töne beim trennen zu erzeugen die da nicht hin gehören. Da das erst mit dem eigentlichen Sound beginnt, kann man nichtmal im nachhinein ein Noise-Profile erstellen und das weeder rausfiltern. CIh wär dir für eine Kurze Antwort dankbar, bitte auch kurz mitteilen, falls du keine Zeit hast, dich damit zu beschäftigen. Danke und Grüße, Dennis

  2. Andy

    Hallo Dennis,

    da kann ich leider nichts zu sagen. Habe demucs seit dem Beitrag nicht mehr verwendet. Du kannst dein Anliegen auf der Projektseite als Bug melden. Den Befehl hatte ich aus der Doku übernommen. Alternativ kannst du dir Mal Acoustica anschauen:

    Acoustica 7, spleeter-dj VST3 und mehr um Stems zu erzeugen
    Acoustica 7.2 – Zwei Möglichkeiten Stems zu erzeugen bzw. Vocals zu entfernen
    Acoustica 7.2 und höher: Stems beim Laden eines Musikstücks erzeugen
    Acoustica 7.3 mit verbesserter Remix-Funktion

    Gruss, Andy

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

© 2024 Andy's Blog

Theme von Anders NorénHoch ↑