====== Stemspleet ====== ===== Demucs ===== * https://github.com/sevagh/freemusicdemixer.com ; utilise https://github.com/sevagh/demucs.cpp qui peut être utilisé à part ; meilleur que Spleeter sur les voix. La version de sevagh est en C++ ; l'originale est en python ( https://github.com/adefossez/demucs ). La version python offre plus de doc et plus d'options. Mais c'est du python. Pour l'installer, les instructions sont correctes. J'ai eu une erreur au début sur la version de CMake ; il suffit de corriger CmakeLists.txt Pour résumer, on clone le dépôt comme c'est dit, on compile (et si on a Arch en théorie on a depuis longtemps installé tout ce qu'il faut pour), on télécharge les modèles (ils ne sont pas lourds), puis on sépare les pistes. Je compile en sollicitant moins le cpu de mon côté, je n'ai pas un foudre de guerre. Pour savoir combien de cœur sont dispo, on fait la commande ''nproc''. Ou ''lscpu'', les lignes "Thread(s) par cœur" et ""Cœur(s) par socket" indiquent plus de détail. Mais ce que dit nproc suffit. git clone --recurse-submodules https://github.com/sevagh/demucs.cpp mkdir -p build && cd build && cmake .. && make -j4 # les modèles git clone https://huggingface.co/datasets/Retrobear/demucs.cpp La commande : lien vers le soft, lien vers le modèle, liens vers la zik, lien vers le dossier où envoyer l'unmixage, nombre de thread à mettre au travail ./demucs_mt.cpp.main ./models.cpp/ggml-model-htdemucs-4s-f16.bin /lienvers/machin.wav ./demucs-out-cpp/ 8 À noter que si la version de base demande qu'on lui indique le chemin complet vers le modèle, la version ft attent le dossier où sont les modèles. ==== Bon format en entrée ==== Si on n'a pas un wav échantilloné à 44100 Hz, ça râle. Hop, un coup de ffmpeg : ffmpeg -i musik.mp3 -ar 44100 -ac 2 -acodec pcm_s16le sortie.wav ==== Choix du modèle ==== De base, sans autre précision, les modèles séparent en 4 pistes (basse, batterie, voix, autres). "4s" ou "6s" indiquent précisément si on va avoir 4 ou 6 pistes (stem). * ggml-model-hdemucs_mmi-v3-f16.bin : le plus rapide * ggml-model-htdemucs-4s-f16.bin : devrait être plus précis que le précédent mais plus lent * ggml-model-htdemucs-6s-f16.bin : sépare en 6 pistes (basse, batterie, guitare, piano, voix, autres), forcément encore plus lent. * ggml-model-htdemucs_ft* : version affinée, la séparation prendra 4 fois plus de temps mais pourrait être un peu meilleure. ==== Et choix du binaire ==== Lors de la compilation, on obtient plusieurs binaires. * demucs.cpp.main : version de base, mono-thread * demucs_mt.cpp.main : Multi-threaded * demucs_v3.cpp.main : Version optimisée pour le modèle hdemucs_mmi-v3, à utiliser spécifiquement avec ce modèle * demucs_v3_mt.cpp.main : idem en multi-threaded * demucs.cpp.test : Implémentation du pipeline de fine-tuning d’un stem * demucs_ft.cpp.main : idem en multi-threaded ==== Raccourci via script bash ==== Je me suis fait un alias dans mes raccourcis, il suffit ensuite de rentrer ''demuc fichier.mp3'' pour que : - Ça crée un dossier (dans celui où est le mp3) - Ça me convertisse dans le bon format de wav - Ça transforme ça avec demuc, en n'utilisant pas tous mes cœurs. #!/bin/bash # Variables DEMUCSEXEC="/home/zatalyz/Documents/demucs.cpp/build/demucs_mt.cpp.main" MODEL="/home/zatalyz/Documents/demucs.cpp/build/models.cpp/ggml-model-htdemucs-4s-f16.bin" # Vérification du fichier d'entrée if [ $# -ne 1 ]; then echo "Usage : $0 chemin/vers/fichier.mp3" exit 1 fi INPUT="$1" if [ ! -f "$INPUT" ]; then echo "Erreur : fichier introuvable." exit 1 fi # Création du dossier de sortie BASENAME=$(basename "$INPUT") NAME="${BASENAME%.*}" INPUTDIR=$(dirname "$INPUT") OUTDIR="${INPUTDIR}/${NAME}_stem" mkdir -p "$OUTDIR" # Conversion en wav 44.1 kHz si nécessaire WAVFILE="${OUTDIR}/${NAME}_44100.wav" echo "Conversion de l'entrée en WAV 44.1kHz..." ffmpeg -i "$INPUT" -ar 44100 -ac 2 -acodec pcm_s16le "$WAVFILE" # Appel de demucs echo "Séparation avec Demucs..." "$DEMUCSEXEC" "$MODEL" "$WAVFILE" "$OUTDIR" 8 echo "Séparation terminée. Résultats dans : $OUTDIR" L'alias étant (dans .aliases mais ça dépend des paramétrages de chacun) : alias demuc="/home/zatalyz/Documents/scripts/demuc/demuc.sh" ===== Autres soft ===== * https://github.com/deezer/spleeter : MIT avec TensorFlow, créé par Deezer * https://github.com/stemrollerapp/stemroller : pas testé * Utimate Vocal Remover : GUI embarquant (entre autre) demuc. Une plaie à compiler (plein de soucis de dépendances, c'est python quoi), tout ça pour une interface qui ne conviendra qu'aux gens ayant l'habitude des OS foireux. Franchement ça vaut pas le coup... {{tag>Audio}} [[https://creativecommons.org/publicdomain/zero/1.0/deed.fr|{{ https://liev.re/imagesweb/licences/cc-zero.png?100 | Ce texte est placé sous licence CC0}}]]