Código para o artigo Vande Veire, Len e De Bie, Tijl e De Boom, Cedric, "Sigmoidal NMFD: Convolutional NMF com Saturating Activations For Drum Loop Decomposition" .
# Baixe o repositóriogit clone https://github.com/aida-ugent/sigmoidal-nmfdcd sigmoidal-nmfd# Requisitos de instalação...# ... para usuários conda:conda create --name sigmoidnmfd --file requisitos.txt# ... alternativamente: pip install -r requisitos.txt
Você também precisará instalar o arquivo de som:
sudo apt-get install libsndfile1
O script run_nmfd_sigmoid.py
aplica NMFD sigmoidal ao arquivo de áudio fornecido. Por exemplo:
python -m scripts.run_nmfd_sigmoid recursos/moonkits-hiphop.wav 4 --plot
O algoritmo NMFD original pode ser executado da seguinte forma:
python -m scripts.run_nmfd_vanilla recursos/moonkits-hiphop.wav 4 --plot
A linha de base NMFD esparsa pode ser executada da seguinte forma:
python -m scripts.run_nmfd_sparsity resources/moonkits-hiphop.wav 4 --sparsity 0.1 --plot
Primeiro, baixe o conjunto de dados ENST.
Em seguida, execute o script experiment_nmfdsigmoid_on_enst.py
:
python -m scripts.experiment_nmfdsigmoid_on_enst --dir-enst /caminho/para/ENST-drums-public --dir-out /home/user/somedirectory --tracklist "recursos/tracklists/tracklist_enst_allphrases.csv"
Isso cortará automaticamente os arquivos de frases ENST conforme descrito no artigo, salvá-los-á em um novo diretório e aplicará todas as linhas de base e o modelo sigmoidal proposto a todas as frases cortadas no conjunto de dados. Os resultados são salvos em arquivos .npz (nota: isso requer cerca de 1 GB de espaço em disco). Em seguida, imprimirá os valores métricos agregados em todos os exemplos.
Os experimentos de ablação podem ser executados de forma análoga.
Para os experimentos de ablação em NMFD sigmoidal, incluindo a avaliação das diferentes estratégias de otimização:
python -m scripts.experiment_ablation_nmfdsigmoid_on_enst --dir-enst /caminho/para/ENST-drums-public --dir-out /home/user/somedirectory --tracklist "recursos/tracklists/tracklist_enst_allphrases.csv"
Para NMFD esparso com um estágio de aquecimento irrestrito:
python -m scripts.experiment_nmfdsparse_with_warmup.py --dir-enst /caminho/para/ENST-drums-public --dir-out /home/user/somedirectory --tracklist "recursos/tracklists/tracklist_enst_allphrases.csv"
Observe que o processamento paralelo é suportado pela adição de um sinalizador --parallel
nos comandos mencionados acima para os experimentos de ablação.
Os valores de inicialização para os modelos W
na estrutura NMFD podem ser recriados usando o script create_nmf_drum_templates_from_sample_library.py
.
Por exemplo, use esses samples de bateria do Producerspot, como fizemos neste artigo.
Em seguida, execute:
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 deste repositório é software livre: você pode redistribuí-lo e/ou modificá-lo sob os termos da Licença Pública Geral GNU conforme publicada pela Free Software Foundation, seja a versão 3 da Licença, ou (a seu critério) qualquer posterior versão.
Este programa é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; mesmo sem a garantia implícita de COMERCIALIZAÇÃO ou ADEQUAÇÃO A UM DETERMINADO FIM. Veja a Licença Pública Geral GNU para mais detalhes.
Você deverá ter recebido uma cópia da Licença Pública Geral GNU junto com este programa. Caso contrário, consulte https://www.gnu.org/licenses/.