Implementação oficial do RAVE: um autoencoder variacional para síntese de áudio neural rápida e de alta qualidade (link do artigo) por Antoine Caillon e Philippe Esling.
Se você usar RAVE como parte de uma apresentação musical ou instalação, certifique-se de citar este repositório ou o artigo!
Se você quiser compartilhar/discutir/perguntar coisas sobre RAVE você pode fazê-lo em nosso servidor discord!
Por favor, verifique o FAQ antes de postar um problema!
RAVE VST RAVE VST para Windows, Mac e Linux está disponível como beta na página correspondente do Fórum IRCAM. Para problemas, escreva um problema aqui ou na página de discussão do Fórum IRCAM.
Tutoriais : novos tutoriais estão disponíveis na página do Fórum IRCAM, e versões em vídeo estarão disponíveis em breve!
A implementação original do modelo RAVE pode ser restaurada usando
git checkout v1
Instale RAVE usando
pip install acids-rave
Aviso É altamente recomendável instalar torch
e torchaudio
antes acids-rave
, para que você possa escolher a versão apropriada do torch no site da biblioteca. Para compatibilidade futura com novos dispositivos (e ambientes Python modernos), rave-acids
não impõe mais torch==1.13.
Você precisará do ffmpeg no seu computador. Você pode instalá-lo localmente dentro do seu ambiente virtual usando
conda install ffmpeg
Uma colaboração para treinar RAVEv2 já está disponível graças ao hexorcismos!
O treinamento de um modelo RAVE geralmente envolve 3 etapas distintas, ou seja, preparação , treinamento e exportação do conjunto de dados.
Você pode preparar um conjunto de dados usando dois métodos: regular e preguiçoso. O pré-processamento lento permite que o RAVE seja treinado diretamente nos arquivos brutos (ou seja, mp3, ogg), sem convertê-los primeiro. Aviso : o carregamento lento do conjunto de dados aumentará bastante a carga da CPU durante o treinamento, especialmente no Windows. No entanto, isso pode ser útil ao treinar em grandes corpus de áudio que não caberiam em um disco rígido quando descompactados. De qualquer forma, prepare seu conjunto de dados usando
rave preprocess --input_path /audio/folder --output_path /dataset/path --channels X (--lazy)
RAVEv2 tem muitas configurações diferentes. A versão melhorada da v1 é chamada v2
e pode, portanto, ser treinada com
rave train --config v2 --db_path /dataset/path --out_path /model/out --name give_a_name --channels X
Também fornecemos uma configuração discreta, semelhante ao SoundStream ou EnCodec
rave train --config discrete ...
Por padrão, RAVE é construído com convoluções não causais. Se você quiser tornar o modelo causal (reduzindo assim a latência geral do modelo), você pode usar o modo causal
rave train --config discrete --config causal ...
Novidade no 2.3, aumentos de dados também estão disponíveis para melhorar a generalização do modelo em regimes de poucos dados. Você pode adicionar aumento de dados adicionando arquivos de configuração de aumento com a palavra-chave --augment
rave train --config v2 --augment mute --augment compress
Muitos outros arquivos de configuração estão disponíveis em rave/configs
e podem ser combinados. Aqui está uma lista de todas as configurações e aumentos disponíveis:
Tipo | Nome | Descrição |
---|---|---|
Arquitetura | v1 | Modelo contínuo original (memória GPU mínima: 8Go) |
v2 | Modelo contínuo aprimorado (mais rápido e de maior qualidade) (memória GPU mínima: 16Go) | |
v2_small | v2 com campo receptivo menor, treinamento adversário adaptado e gerador de ruído, adaptado para transferência de timbre para sinais estacionários (memória GPU mínima: 8Go) | |
v2_nopqmf | (experimental) v2 sem pqmf no gerador (mais eficiente para fins de flexão) (memória GPU mínima: 16Go) | |
v3 | v2 com ativação Snake, discriminador de descrição e normalização adaptativa de instância para transferência de estilo real (memória GPU mínima: 32Go) | |
discreto | Modelo discreto (semelhante ao SoundStream ou EnCodec) (memória GPU mínima: 18Go) | |
onnx | Configuração v1 silenciosa para uso onnx (memória GPU mínima: 6Go) | |
framboesa | Configuração leve compatível com inferência RaspberryPi 4 em tempo real (memória GPU mínima: 5Go) | |
Regularização (somente v2) | padrão | Objetivo do codificador automático variacional (ELBO) |
wasserstein | Objetivo do codificador automático Wasserstein (MMD) | |
esférico | Objetivo do codificador automático esférico | |
Discriminador | discriminador_espectral | Use o discriminador MultiScale da EnCodec. |
Outros | causal | Use convoluções causais |
barulho | Ativa o sintetizador de ruído V2 | |
híbrido | Habilitar entrada de espectrograma mel | |
Aumentos | mudo | Silencia lotes de dados aleatoriamente (prob padrão: 0,1). Força o modelo a aprender o silêncio |
compressa | Comprime aleatoriamente a forma de onda (equivalente à amplificação não linear leve de lotes) | |
ganho | Aplica um ganho aleatório à forma de onda (faixa padrão: [-6, 3]) |
Depois de treinado, exporte seu modelo para um arquivo torchscript usando
rave export --run /path/to/your/run (--streaming)
Definir o sinalizador --streaming
permitirá convoluções em cache, tornando o modelo compatível com processamento em tempo real. Se você esquecer de usar o modo streaming e tentar carregar o modelo no Max, você ouvirá cliques em artefatos.
Para modelos discretos, redirecionamos o usuário para a biblioteca msprior
aqui. Porém, como esta biblioteca ainda é experimental, a anterior da versão 1.x foi reintegrada na v2.3.
Para treinar um anterior para um modelo RAVE pré-treinado:
rave train_prior --model /path/to/your/run --db_path /path/to/your_preprocessed_data --out_path /path/to/output
isso treinará um anterior sobre o latente do modelo pré-treinado path/to/your/run
e salvará os logs do modelo e do tensorboard na pasta /path/to/output
.
Para criar um script anterior junto com um modelo RAVE, exporte seu modelo fornecendo a palavra-chave --prior
ao seu anterior pré-treinado:
rave export --run /path/to/your/run --prior /path/to/your/prior (--streaming)
Vários modelos de streaming pré-treinados estão disponíveis aqui. Manteremos a lista atualizada com novos modelos.
Esta seção apresenta como o RAVE pode ser carregado dentro de nn~
para ser usado ao vivo com Max/MSP ou PureData.
Um modelo RAVE pré-treinado chamado darbouka.gin
disponível em seu computador pode ser carregado dentro de nn~
usando a seguinte sintaxe, onde o método padrão é definido para encaminhar (ou seja, codificar e depois decodificar)
Isso faz a mesma coisa que o patch a seguir, mas um pouco mais rápido.
Ter um acesso explícito à representação latente produzida pelo RAVE nos permite interagir com a representação usando ferramentas de processamento de sinal Max/MSP ou PureData:
Por padrão, o RAVE pode ser usado como uma ferramenta de transferência de estilo, com base na grande taxa de compressão do modelo. Recentemente adicionamos uma técnica inspirada no StyleGAN para incluir Adaptive Instance Normalization ao processo de reconstrução, permitindo efetivamente definir estilos de origem e destino diretamente dentro de Max/MSP ou PureData, usando o sistema de atributos de nn~
.
Outros atributos, como enable
ou gpu
, podem ativar/desativar a computação ou usar a gpu para acelerar as coisas (ainda experimental).
Um script de geração em lote foi lançado na v2.3 para permitir a transformação de grandes quantidades de arquivos
rave generate model_path path_1 path_2 --out out_path
onde model_path
é o caminho para o seu modelo treinado (original ou com script), path_X
uma lista de arquivos ou diretórios de áudio e out_path
o diretório de saída das gerações.
Se você tiver dúvidas, quiser compartilhar sua experiência com RAVE ou compartilhar peças musicais feitas com a modelo, você pode usar a aba Discussão!
Demonstração do que você pode fazer com RAVE e nn~ external para maxmsp !
Usando nn~ para puredata, RAVE pode ser usado em tempo real em plataformas embarcadas!
Pergunta : meu pré-processamento está travado, mostrando 0it[00:00, ?it/s]
Resposta : Isso significa que os arquivos de áudio em seu conjunto de dados são muito curtos para fornecer um escopo temporal suficiente para o RAVE. Tente diminuir a janela do sinal com --num_signal XXX(samples)
com preprocess
, sem esquecer depois de adicionar o --n_signal XXX(samples)
com train
Pergunta : Durante o treinamento, recebi uma exceção semelhante ValueError: n_components=128 must be between 0 and min(n_samples, n_features)=64 with svd_solver='full'
Resposta : Isso significa que seu conjunto de dados não possui lotes de dados suficientes para calcular o PCA latente interno, que requer pelo menos 128 exemplos (depois lotes).
Este trabalho é liderado no IRCAM e foi financiado pelos seguintes projetos