Offizielle Implementierung von RAVE: Ein Variations-Autoencoder für schnelle und hochwertige neuronale Audiosynthese (Artikellink) von Antoine Caillon und Philippe Esling.
Wenn Sie RAVE als Teil einer Musikaufführung oder -installation verwenden, zitieren Sie unbedingt entweder dieses Repository oder den Artikel!
Wenn Sie Dinge über RAVE teilen/diskutieren/fragen möchten, können Sie dies auf unserem Discord-Server tun!
Bitte lesen Sie die FAQ, bevor Sie ein Problem veröffentlichen!
RAVE VST RAVE VST für Windows, Mac und Linux ist als Beta auf der entsprechenden Forum-IRCAM-Webseite verfügbar. Bei Problemen schreiben Sie bitte hier oder auf der Diskussionsseite des Forums IRCAM ein Problem.
Tutorials : Neue Tutorials sind auf der Forum-IRCAM-Webseite verfügbar und Videoversionen folgen in Kürze!
Die ursprüngliche Implementierung des RAVE-Modells kann mit wiederhergestellt werden
git checkout v1
Installieren Sie RAVE mit
pip install acids-rave
Warnung: Es wird dringend empfohlen, torch
und torchaudio
vor acids-rave
zu installieren, damit Sie die entsprechende Version von Torch auf der Website der Bibliothek auswählen können. Aus Gründen der zukünftigen Kompatibilität mit neuen Geräten (und modernen Python-Umgebungen) erzwingt rave-acids
Torch==1.13 nicht mehr.
Sie benötigen ffmpeg auf Ihrem Computer. Sie können es mithilfe von lokal in Ihrer virtuellen Umgebung installieren
conda install ffmpeg
Dank Hexorcismos ist jetzt ein Colab zum Trainieren von RAVEv2 verfügbar!
Das Training eines RAVE-Modells umfasst normalerweise drei separate Schritte, nämlich die Vorbereitung des Datensatzes , das Training und den Export .
Sie können einen Datensatz mit zwei Methoden vorbereiten: regulär und Lazy. Durch die verzögerte Vorverarbeitung kann RAVE direkt auf die Rohdateien (z. B. mp3, ogg) trainiert werden, ohne sie vorher zu konvertieren. Warnung : Durch das verzögerte Laden von Datensätzen wird Ihre CPU-Auslastung während des Trainings erheblich erhöht, insbesondere unter Windows. Dies kann jedoch nützlich sein, wenn Sie mit einem großen Audiokorpus trainieren, der unkomprimiert nicht auf eine Festplatte passen würde. Bereiten Sie Ihren Datensatz auf jeden Fall mit vor
rave preprocess --input_path /audio/folder --output_path /dataset/path --channels X (--lazy)
RAVEv2 hat viele verschiedene Konfigurationen. Die verbesserte Version von v1 heißt v2
und kann daher damit trainiert werden
rave train --config v2 --db_path /dataset/path --out_path /model/out --name give_a_name --channels X
Wir bieten auch eine diskrete Konfiguration an, ähnlich wie SoundStream oder EnCodec
rave train --config discrete ...
Standardmäßig wird RAVE mit nicht-kausalen Faltungen erstellt. Wenn Sie das Modell kausal machen möchten (und damit die Gesamtlatenz des Modells verringern möchten), können Sie den Kausalmodus verwenden
rave train --config discrete --config causal ...
Neu in 2.3 sind auch Datenerweiterungen, um die Verallgemeinerung des Modells in Regimen mit geringen Datenmengen zu verbessern. Sie können eine Datenerweiterung hinzufügen, indem Sie Erweiterungskonfigurationsdateien mit dem Schlüsselwort --augment
hinzufügen
rave train --config v2 --augment mute --augment compress
Viele weitere Konfigurationsdateien sind in rave/configs
verfügbar und können kombiniert werden. Hier ist eine Liste aller verfügbaren Konfigurationen und Erweiterungen:
Typ | Name | Beschreibung |
---|---|---|
Architektur | v1 | Ursprüngliches kontinuierliches Modell (mindestens GPU-Speicher: 8 GB) |
v2 | Verbessertes kontinuierliches Modell (schneller, höhere Qualität) (mindestens GPU-Speicher: 16 GB) | |
v2_small | v2 mit kleinerem Empfangsfeld, angepasstem Gegnertraining und Rauschgenerator, angepasst für die Klangfarbenübertragung für stationäre Signale (mindestens GPU-Speicher: 8 GB) | |
v2_nopqmf | (experimentell) v2 ohne pqmf im Generator (effizienter für Biegezwecke) (minimaler GPU-Speicher: 16 GB) | |
v3 | v2 mit Snake-Aktivierung, Beschreibungsdiskriminator und adaptiver Instanznormalisierung für echte Stilübertragung (mindestens GPU-Speicher: 32 GB) | |
diskret | Diskretes Modell (ähnlich SoundStream oder EnCodec) (mindestens GPU-Speicher: 18 GB) | |
onnx | Noiseless v1-Konfiguration für Onnx-Nutzung (mindestens GPU-Speicher: 6Go) | |
Himbeere | Leichte Konfiguration, kompatibel mit Echtzeit-RaspberryPi-4-Inferenz (mindestens GPU-Speicher: 5 GB) | |
Regularisierung (nur Version 2) | Standard | Variational Auto Encoder-Objektiv (ELBO) |
Wasserstein | Wasserstein Auto Encoder-Objektiv (MMD) | |
sphärisch | Sphärisches Auto-Encoder-Objektiv | |
Diskriminator | spectral_discriminator | Verwenden Sie den MultiScale-Diskriminator von EnCodec. |
Andere | kausal | Verwenden Sie kausale Faltungen |
Lärm | Aktiviert den Rauschsynthesizer V2 | |
Hybrid | Aktivieren Sie die Mel-Spektrogramm-Eingabe | |
Erweiterungen | stumm | Schaltet Datenstapel nach dem Zufallsprinzip stumm (Standardwahrscheinlichkeit: 0,1). Erzwingt, dass das Modell Stille lernt |
Kompresse | Komprimiert die Wellenform zufällig (entspricht einer leichten nichtlinearen Verstärkung von Stapeln). | |
gewinnen | Wendet eine zufällige Verstärkung auf die Wellenform an (Standardbereich: [-6, 3]) |
Exportieren Sie Ihr Modell nach dem Training mit in eine Torchscript-Datei
rave export --run /path/to/your/run (--streaming)
Durch Setzen des Flags --streaming
werden zwischengespeicherte Faltungen aktiviert, wodurch das Modell mit der Echtzeitverarbeitung kompatibel wird. Wenn Sie vergessen, den Streaming-Modus zu verwenden und versuchen, das Modell in Max zu laden, werden Sie Klickartefakte hören.
Bei diskreten Modellen leiten wir den Benutzer hier zur msprior
-Bibliothek um. Da diese Bibliothek jedoch noch experimentell ist, wurde die Vorgängerversion aus Version 1.x in Version 2.3 wieder integriert.
So trainieren Sie einen Prior für ein vorab trainiertes RAVE-Modell:
rave train_prior --model /path/to/your/run --db_path /path/to/your_preprocessed_data --out_path /path/to/output
Dadurch wird ein Prior über die Latenz des vorab trainierten Modells path/to/your/run
trainiert und die Modell- und Tensorboard-Protokolle im Ordner /path/to/output
gespeichert.
Um einen Prior zusammen mit einem RAVE-Modell zu skripten, exportieren Sie Ihr Modell, indem Sie das Schlüsselwort --prior
für Ihren vorab trainierten Prior angeben:
rave export --run /path/to/your/run --prior /path/to/your/prior (--streaming)
Hier sind mehrere vortrainierte Streaming-Modelle verfügbar. Wir werden die Liste mit neuen Modellen auf dem neuesten Stand halten.
In diesem Abschnitt wird vorgestellt, wie RAVE in nn~
geladen werden kann, um live mit Max/MSP oder PureData verwendet zu werden.
Ein vorab trainiertes RAVE-Modell mit dem Namen darbouka.gin
das auf Ihrem Computer verfügbar ist, kann mit der folgenden Syntax in nn~
geladen werden, wobei die Standardmethode auf Weiterleiten eingestellt ist (d. h. kodieren und dann dekodieren).
Dies bewirkt dasselbe wie der folgende Patch, jedoch etwas schneller.
Durch den expliziten Zugriff auf die von RAVE bereitgestellte latente Darstellung können wir mithilfe der Signalverarbeitungstools Max/MSP oder PureData mit der Darstellung interagieren:
Aufgrund des großen Komprimierungsverhältnisses des Modells kann RAVE standardmäßig als Stilübertragungstool verwendet werden. Wir haben kürzlich eine von StyleGAN inspirierte Technik hinzugefügt, die die adaptive Instanznormalisierung in den Rekonstruktionsprozess einbezieht und es effektiv ermöglicht, Quell- und Zielstile direkt in Max/MSP oder PureData zu definieren, indem das Attributsystem von nn~
verwendet wird.
Andere Attribute wie enable
oder gpu
können die Berechnung aktivieren/deaktivieren oder die GPU verwenden, um Dinge zu beschleunigen (noch experimentell).
In Version 2.3 wurde ein Batch-Generierungsskript veröffentlicht, das die Transformation großer Dateimengen ermöglicht
rave generate model_path path_1 path_2 --out out_path
Dabei ist model_path
der Pfad zu Ihrem trainierten Modell (Original oder Skript), path_X
eine Liste von Audiodateien oder Verzeichnissen und out_path
das Out-Verzeichnis der Generationen.
Wenn Sie Fragen haben, Ihre Erfahrungen mit RAVE teilen oder mit dem Modell erstellte Musikstücke teilen möchten, können Sie die Registerkarte „Diskussion“ verwenden!
Demonstration dessen, was Sie mit RAVE und dem nn~ external für maxmsp machen können!
Mit nn~ für puredata kann RAVE in Echtzeit auf eingebetteten Plattformen verwendet werden!
Frage : Meine Vorverarbeitung steckt fest und zeigt 0it[00:00, ?it/s]
Antwort : Das bedeutet, dass die Audiodateien in Ihrem Datensatz zu kurz sind, um RAVE einen ausreichenden zeitlichen Spielraum zu bieten. Versuchen Sie, das Signalfenster mit --num_signal XXX(samples)
mit preprocess
zu verkleinern, ohne anschließend zu vergessen --n_signal XXX(samples)
mit train
hinzuzufügen
Frage : Während des Trainings habe ich eine Ausnahme erhalten ValueError: n_components=128 must be between 0 and min(n_samples, n_features)=64 with svd_solver='full'
Antwort : Das bedeutet, dass Ihr Datensatz nicht über genügend Datenbatches verfügt, um die interne latente PCA zu berechnen, was mindestens 128 Beispiele (dann Batches) erfordert.
Diese Arbeit wird am IRCAM geleitet und wurde durch die folgenden Projekte finanziert