Código del artículo Vande Veire, Len y De Bie, Tijl y De Boom, Cedric, "Sigmoidal NMFD: Convolutional NMF with Saturating Activations For Drum Loop Decomposition" .
# Descargue el repositoriogit clone https://github.com/aida-ugent/sigmoidal-nmfdcd sigmoidal-nmfd# Requisitos de instalación...# ... para usuarios de conda:conda create --name sigmoidnmfd --file requisitos.txt# ... alternativamente: pip install -r requisitos.txt
También necesitarás instalar el archivo de sonido:
sudo apt-get install libsndfile1
El script run_nmfd_sigmoid.py
aplica NMFD sigmoide al archivo de audio proporcionado. Por ejemplo:
python -m scripts.run_nmfd_sigmoid resources/moonkits-hiphop.wav 4 --plot
El algoritmo NMFD original se puede ejecutar de la siguiente manera:
python -m scripts.run_nmfd_vanilla resources/moonkits-hiphop.wav 4 --plot
La línea base dispersa de NMFD se puede ejecutar de la siguiente manera:
python -m scripts.run_nmfd_sparsity resources/moonkits-hiphop.wav 4 --sparsity 0.1 --plot
Primero, descargue el conjunto de datos ENST.
Luego, ejecute el 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"
Esto recortará automáticamente los archivos de frases ENST como se describe en el documento, los guardará en un nuevo directorio y aplicará todas las líneas de base y el modelo sigmoidal propuesto a todas las frases recortadas en el conjunto de datos. Los resultados se guardan en archivos .npz (nota: esto requiere aproximadamente 1 GB de espacio en disco). Luego imprimirá los valores métricos agregados en todos los ejemplos.
Los experimentos de ablación se pueden realizar de forma análoga.
Para los experimentos de ablación en NMFD sigmoidal, incluida la evaluación de las diferentes estrategias de optimización:
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"
Para NMFD escaso con una etapa de calentamiento sin restricciones:
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"
Tenga en cuenta que el procesamiento paralelo se admite agregando un indicador --parallel
en los comandos antes mencionados para los experimentos de ablación.
Los valores de inicialización para las plantillas W
en el marco NMFD se pueden recrear usando el script create_nmf_drum_templates_from_sample_library.py
.
Por ejemplo, utilice estas muestras de batería de Producerspot, como hicimos para este artículo.
Luego ejecuta:
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.
Este código dentro de este repositorio es software libre: puede redistribuirlo y/o modificarlo según los términos de la Licencia Pública General GNU publicada por la Free Software Foundation, ya sea la versión 3 de la Licencia o (a su elección) cualquier versión posterior. versión.
Este programa se distribuye con la esperanza de que sea de utilidad, pero SIN NINGUNA GARANTÍA; sin siquiera la garantía implícita de COMERCIABILIDAD o IDONEIDAD PARA UN PROPÓSITO PARTICULAR. Consulte la Licencia pública general de GNU para obtener más detalles.
Debería haber recibido una copia de la Licencia Pública General GNU junto con este programa. De lo contrario, consulte https://www.gnu.org/licenses/.