Code pour l'article Vande Veire, Len et De Bie, Tijl et De Boom, Cédric, "Sigmoidal NMFD : Convolutional NMF with Saturating Activations For Drum Loop Decomposition" .
# Téléchargez le clone du référentiel git https://github.com/aida-ugent/sigmoidal-nmfdcd sigmoidal-nmfd# Exigences d'installation...# ... pour les utilisateurs de conda :conda create --name sigmoidnmfd --file conditions.txt# ... alternativement : pip install -r exigences.txt
Vous devrez également installer le fichier son :
sudo apt-get install libsndfile1
Le script run_nmfd_sigmoid.py
applique le NMFD sigmoïdal au fichier audio fourni. Par exemple:
python -m scripts.run_nmfd_sigmoid resources/moonkits-hiphop.wav 4 --plot
L'algorithme NMFD original peut être exécuté comme suit :
python -m scripts.run_nmfd_vanilla resources/moonkits-hiphop.wav 4 --plot
La ligne de base clairsemée du NMFD peut être exécutée comme suit :
python -m scripts.run_nmfd_sparsity resources/moonkits-hiphop.wav 4 --sparsity 0.1 --plot
Tout d’abord, téléchargez l’ensemble de données ENST.
Ensuite, exécutez le script experiment_nmfdsigmoid_on_enst.py
:
python -m scripts.experiment_nmfdsigmoid_on_enst --dir-enst /path/to/ENST-drums-public --dir-out /home/user/somedirectory --tracklist "resources/tracklists/tracklist_enst_allphrases.csv"
Cela recadrera automatiquement les fichiers de phrases ENST comme décrit dans l'article, les enregistrera dans un nouveau répertoire et appliquera toutes les lignes de base et le modèle sigmoïdal proposé à toutes les phrases recadrées de l'ensemble de données. Les résultats sont enregistrés dans des archives .npz (attention : cela nécessite environ 1 Go d'espace disque). Il imprimera ensuite les valeurs métriques agrégées sur tous les exemples.
Les expériences d'ablation peuvent être exécutées de manière analogue.
Pour les expériences d'ablation sur le NMFD sigmoïdal, y compris l'évaluation des différentes stratégies d'optimisation :
python -m scripts.experiment_ablation_nmfdsigmoid_on_enst --dir-enst /path/to/ENST-drums-public --dir-out /home/user/somedirectory --tracklist "resources/tracklists/tracklist_enst_allphrases.csv"
Pour un NMFD clairsemé avec une étape de préchauffage sans contrainte :
python -m scripts.experiment_nmfdsparse_with_warmup.py --dir-enst /path/to/ENST-drums-public --dir-out /home/user/somedirectory --tracklist "resources/tracklists/tracklist_enst_allphrases.csv"
Notez que le traitement parallèle est pris en charge en ajoutant un indicateur --parallel
dans les commandes susmentionnées pour les expériences d'ablation.
Les valeurs d'initialisation des modèles W
dans le framework NMFD peuvent être recréées à l'aide du script create_nmf_drum_templates_from_sample_library.py
.
Par exemple, utilisez ces échantillons de batterie de Producerspot, comme nous l'avons fait pour cet article.
Exécutez ensuite :
python create_nmf_drum_templates_from_sample_library.py --samples-list-file resources/tracklist/templates/samples_kick.csv --output-file resources/templates/kick.npy python create_nmf_drum_templates_from_sample_library.py --samples-list-file resources/tracklist/templates/samples_snare.csv --output-file resources/templates/snare.npy python create_nmf_drum_templates_from_sample_library.py --samples-list-file resources/tracklist/templates/samples_hihat.csv --output-file resources/templates/hihat.npy python create_nmf_drum_templates_from_sample_library.py --samples-list-file resources/tracklist/templates/samples_crash.csv --output-file resources/templates/crash.npy
Copyright 2020 Len Vande Veire.
Ce code dans ce référentiel est un logiciel libre : vous pouvez le redistribuer et/ou le modifier selon les termes de la licence publique générale GNU telle que publiée par la Free Software Foundation, soit la version 3 de la licence, soit (à votre choix) toute version ultérieure. version.
Ce programme est distribué dans l'espoir qu'il sera utile, mais SANS AUCUNE GARANTIE ; sans même la garantie implicite de QUALITÉ MARCHANDE ou d’ADAPTATION À UN USAGE PARTICULIER. Voir la licence publique générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la licence publique générale GNU avec ce programme. Sinon, consultez https://www.gnu.org/licenses/.