Implémentation officielle de RAVE : Un auto-encodeur variationnel pour une synthèse audio neuronale rapide et de haute qualité (lien de l'article) par Antoine Caillon et Philippe Esling.
Si vous utilisez RAVE dans le cadre d'une performance musicale ou d'une installation, assurez-vous de citer soit ce référentiel, soit l'article !
Si vous souhaitez partager/discuter/demander des choses sur RAVE, vous pouvez le faire sur notre serveur Discord !
Veuillez consulter la FAQ avant de publier un problème !
RAVE VST RAVE VST pour Windows, Mac et Linux est disponible en version bêta sur la page web correspondante du Forum IRCAM. En cas de problème, veuillez écrire un problème ici ou sur la page de discussion du Forum IRCAM.
Tutoriels : de nouveaux tutoriels sont disponibles sur la page web du Forum Ircam, et des versions vidéos arrivent bientôt !
L'implémentation originale du modèle RAVE peut être restaurée en utilisant
git checkout v1
Installez RAVE en utilisant
pip install acids-rave
Attention Il est fortement conseillé d'installer torch
et torchaudio
avant acids-rave
, afin de pouvoir choisir la version appropriée de torch sur le site de la bibliothèque. Pour une compatibilité future avec les nouveaux appareils (et les environnements Python modernes), rave-acids
n'applique plus torch==1.13.
Vous aurez besoin de ffmpeg sur votre ordinateur. Vous pouvez l'installer localement dans votre environnement virtuel en utilisant
conda install ffmpeg
Un colab pour entraîner RAVEv2 est désormais disponible grâce à hexorcismos !
La formation d'un modèle RAVE implique généralement 3 étapes distinctes, à savoir la préparation de l'ensemble de données , la formation et l'exportation .
Vous pouvez savoir préparer un ensemble de données en utilisant deux méthodes : régulière et paresseuse. Le prétraitement paresseux permet à RAVE d'être entraîné directement sur les fichiers bruts (c'est-à-dire mp3, ogg), sans les convertir au préalable. Attention : le chargement paresseux de l'ensemble de données augmentera considérablement la charge de votre processeur pendant l'entraînement, en particulier sous Windows. Cela peut cependant être utile lors de la formation sur un corpus audio volumineux qui ne tiendrait pas sur un disque dur une fois décompressé. Dans tous les cas, préparez votre jeu de données en utilisant
rave preprocess --input_path /audio/folder --output_path /dataset/path --channels X (--lazy)
RAVEv2 a de nombreuses configurations différentes. La version améliorée de la v1 s'appelle v2
, et peut donc être entraînée avec
rave train --config v2 --db_path /dataset/path --out_path /model/out --name give_a_name --channels X
Nous proposons également une configuration discrète, similaire à SoundStream ou EnCodec
rave train --config discrete ...
Par défaut, RAVE est construit avec des convolutions non causales. Si vous souhaitez rendre le modèle causal (réduisant ainsi la latence globale du modèle), vous pouvez utiliser le mode causal
rave train --config discrete --config causal ...
Nouveauté de la version 2.3, des augmentations de données sont également disponibles pour améliorer la généralisation du modèle dans des régimes de données faibles. Vous pouvez ajouter une augmentation de données en ajoutant des fichiers de configuration d'augmentation avec le mot-clé --augment
rave train --config v2 --augment mute --augment compress
De nombreux autres fichiers de configuration sont disponibles dans rave/configs
et peuvent être combinés. Voici une liste de toutes les configurations et augmentations disponibles :
Taper | Nom | Description |
---|---|---|
Architecture | v1 | Modèle continu d'origine (mémoire GPU minimum : 8Go) |
v2 | Modèle continu amélioré (plus rapide, de meilleure qualité) (mémoire GPU minimum : 16Go) | |
v2_petit | v2 avec un champ de réception plus petit, un entraînement contradictoire adapté et un générateur de bruit, adapté au transfert de timbre pour les signaux stationnaires (mémoire GPU minimum : 8Go) | |
v2_nopqmf | (expérimental) v2 sans pqmf dans le générateur (plus efficace pour le bending) (mémoire GPU minimum : 16Go) | |
v3 | v2 avec activation Snake, discriminateur de descripteur et normalisation adaptative d'instance pour un transfert de style réel (mémoire GPU minimum : 32Go) | |
discret | Modèle discret (similaire à SoundStream ou EnCodec) (mémoire GPU minimum : 18Go) | |
onnx | Configuration Noiseless v1 pour une utilisation onnx (mémoire GPU minimum : 6Go) | |
framboise | Configuration légère compatible avec l'inférence temps réel RaspberryPi 4 (mémoire GPU minimum : 5Go) | |
Régularisation (v2 uniquement) | défaut | Objectif d'encodeur automatique variationnel (ELBO) |
wasserstein | Objectif Wasserstein Auto Encoder (MMD) | |
sphérique | Objectif d'encodeur automatique sphérique | |
Discriminateur | spectral_discriminateur | Utilisez le discriminateur MultiScale d'EnCodec. |
Autres | causal | Utiliser des convolutions causales |
bruit | Active le synthétiseur de bruit V2 | |
hybride | Activer la saisie du spectrogramme Mel | |
Augmentations | muet | Coupe le son des lots de données de manière aléatoire (problème par défaut : 0,1). Applique le modèle pour apprendre le silence |
compresse | Compresse aléatoirement la forme d'onde (équivalent à une légère amplification non linéaire de lots) | |
gagner | Applique un gain aléatoire à la forme d'onde (plage par défaut : [-6, 3]) |
Une fois formé, exportez votre modèle vers un fichier torchscript en utilisant
rave export --run /path/to/your/run (--streaming)
La définition de l'indicateur --streaming
activera les convolutions mises en cache, rendant le modèle compatible avec le traitement en temps réel. Si vous oubliez d'utiliser le mode streaming et essayez de charger le modèle dans Max, vous entendrez des artefacts de clic.
Pour les modèles discrets, nous redirigeons l'utilisateur vers la bibliothèque msprior
ici. Cependant, comme cette bibliothèque est encore expérimentale, l'ancienne version 1.x a été réintégrée dans la v2.3.
Pour entraîner un a priori pour un modèle RAVE pré-entraîné :
rave train_prior --model /path/to/your/run --db_path /path/to/your_preprocessed_data --out_path /path/to/output
cela entraînera un a priori sur le modèle latent latent path/to/your/run
pré-entraîné et enregistrera les journaux du modèle et du tensorboard dans le dossier /path/to/output
.
Pour créer un script avec un modèle RAVE, exportez votre modèle en fournissant le mot-clé --prior
à votre modèle pré-entraîné :
rave export --run /path/to/your/run --prior /path/to/your/prior (--streaming)
Plusieurs modèles de streaming pré-entraînés sont disponibles ici. Nous garderons la liste à jour avec de nouveaux modèles.
Cette section présente comment RAVE peut être chargé dans nn~
afin d'être utilisé en live avec Max/MSP ou PureData.
Un modèle RAVE pré-entraîné nommé darbouka.gin
disponible sur votre ordinateur peut être chargé dans nn~
en utilisant la syntaxe suivante, où la méthode par défaut est définie sur forward (c'est-à-dire encoder puis décoder)
Cela fait la même chose que le patch suivant, mais légèrement plus rapide.
Avoir un accès explicite à la représentation latente fournie par RAVE nous permet d'interagir avec la représentation à l'aide des outils de traitement du signal Max/MSP ou PureData :
Par défaut, RAVE peut être utilisé comme outil de transfert de style, en fonction du taux de compression élevé du modèle. Nous avons récemment ajouté une technique inspirée de StyleGAN pour inclure la normalisation adaptative des instances au processus de reconstruction, permettant ainsi de définir les styles source et cible directement dans Max/MSP ou PureData, en utilisant le système d'attributs de nn~
.
D'autres attributs, tels que enable
ou gpu
peuvent activer/désactiver le calcul, ou utiliser le GPU pour accélérer les choses (encore expérimental).
Un script de génération par lots a été publié dans la v2.3 pour permettre la transformation d'une grande quantité de fichiers
rave generate model_path path_1 path_2 --out out_path
où model_path
est le chemin d'accès à votre modèle entraîné (original ou scripté), path_X
une liste de fichiers ou de répertoires audio et out_path
le répertoire de sortie des générations.
Si vous avez des questions, souhaitez partager votre expérience avec RAVE ou partager des pièces musicales réalisées avec le modèle, vous pouvez utiliser l'onglet Discussion !
Démonstration de ce que vous pouvez faire avec RAVE et le nn~ external pour maxmsp !
En utilisant nn~ pour puredata, RAVE peut être utilisé en temps réel sur des plateformes embarquées !
Question : mon prétraitement est bloqué, affichant 0it[00:00, ?it/s]
Réponse : Cela signifie que les fichiers audio de votre ensemble de données sont trop courts pour fournir une portée temporelle suffisante à RAVE. Essayez de diminuer la fenêtre du signal avec le --num_signal XXX(samples)
avec preprocess
, sans oublier ensuite d'ajouter le --n_signal XXX(samples)
avec train
Question : Lors de l'entraînement j'ai eu une exception ressemblant à ValueError: n_components=128 must be between 0 and min(n_samples, n_features)=64 with svd_solver='full'
Réponse : Cela signifie que votre ensemble de données ne dispose pas de suffisamment de lots de données pour calculer la PCA latente interne, ce qui nécessite au moins 128 exemples (puis des lots).
Ce travail est mené à l'Ircam, et a été financé par les projets suivants