Introdução geral
O MuseGAN é um projeto de geração de música baseado em Redes Adversárias Generativas (GANs) projetado para gerar músicas com várias faixas (vários instrumentos). O projeto é capaz de gerar músicas do zero ou acompanhadas por faixas fornecidas pelo usuário. O MuseGAN é treinado usando o conjunto de dados Lakh Pianoroll para gerar trechos de músicas populares contendo baixo, bateria, guitarras, piano e cordas. A implementação mais recente baseia-se em uma arquitetura de rede de camadas convolucionais 3D com um tamanho de rede menor, mas com controle reduzido. O MuseGAN oferece vários scripts para facilitar as operações, como o gerenciamento de experimentos, o treinamento de novos modelos e a inferência e interpolação usando modelos pré-treinados.
Lista de funções
- Gerar música de várias faixas: gere clipes de música do zero contendo vários instrumentos.
- Geração de acompanhamento: gere acompanhamentos com base em faixas fornecidas pelo usuário.
- Treinamento de novos modelos: Scripts e arquivos de configuração são fornecidos para facilitar aos usuários o treinamento de seus próprios modelos de geração de música.
- Uso de modelos pré-treinados: baixe e use modelos pré-treinados para geração de música.
- Processamento de dados: faça o download e processe os dados de treinamento com suporte para o Lakh Pianoroll Dataset.
- Gerenciamento de experimentos: forneça uma variedade de scripts para facilitar aos usuários a configuração e o gerenciamento de experimentos.
- Formato de saída: a música gerada pode ser salva em matrizes numpy, arquivos de imagem e formatos de arquivo pianoroll de várias faixas.
Usando a Ajuda
Processo de instalação
- Certifique-se de que o pipenv (recomendado) ou o pip esteja instalado.
- Use o pipenv para instalar as dependências:
bash
instalação do pipenv
shell do pipenv
ou use o pip para instalar as dependências:
bash
pip install -r requirements.txt
### Preparação dos dados
1. faça o download dos dados de treinamento:
bash
. /scripts/download_data.sh
2. processamento de dados de treinamento:
bash
. /scripts/process_data.sh
### Treinamento de um novo modelo
1. configure o novo experimento:
bash
. /scripts/setupexp.sh ". /exp/myexperiment/" "Observações sobre o experimento"
2. modificar o arquivo de configuração e o arquivo de parâmetros do modelo para definir os parâmetros experimentais.
3. treinar o modelo:
bash
. /scripts/runtrain.sh ". /exp/myexperimento/" "0"
Ou execute o experimento completo (treinamento + inferência + interpolação):
bash
. /scripts/runexp.sh ". /exp/myexperimento/" "0"
### Usando o modelo de pré-treinamento
1 Faça o download do modelo de pré-treinamento:
bash
. /scripts/download_models.sh
2. inferência usando modelos pré-treinados:
bash
. /scripts/run_inference.sh ". /exp/default/" "0"
ou interpolação:
bash
. /scripts/run_interpolation.sh ". /exp/default/" "0"
### Gerenciamento de saída
Por padrão, as amostras de música geradas são geradas durante o treinamento; esse comportamento pode ser desativado definindo-se `save_samples_steps` como 0 no arquivo de configuração. As amostras de música geradas são salvas nos três formatos a seguir:
- `.npy`: matriz numérica bruta
- `.png`: arquivo de imagem
- `.npz`: arquivos pianoroll de várias trilhas, que podem ser carregados por meio do pacote Pypianoroll
O salvamento de formatos específicos pode ser desativado definindo-se `save_array_samples`, `save_image_samples` e `save_pianoroll_samples` como False no arquivo de configuração. Os arquivos de pianoroll gerados são salvos no formato `.npz` para economizar espaço e tempo de processamento. Ele pode ser gravado em um arquivo MIDI usando o seguinte código:
python
from pypianoroll import Multitrack
m = Multitrack('. /test.npz')
m.write('. /test.mid')
Exemplos de resultados
Alguns exemplos de resultados podem ser encontrados na seção. /exp/
pode ser encontrado no catálogo. Mais exemplos podem ser baixados nos links a seguir:
- sample_results.tar.gz(54,7 MB): Exemplos de resultados de inferência e interpolação
- training_samples.tar.gz(18,7 MB): Exemplos de resultados gerados em diferentes etapas