Allgemeine Einführung
MuseGAN ist ein Musikgenerierungsprojekt, das auf generativen adversen Netzwerken (GANs) basiert und für die Generierung von Mehrspurmusik (mit mehreren Instrumenten) entwickelt wurde. MuseGAN wird mit dem Lakh Pianoroll-Datensatz trainiert, um Schnipsel beliebter Songs mit Bass, Schlagzeug, Gitarren, Klavier und Streichern zu erzeugen. Die neueste Implementierung basiert auf einer Netzwerkarchitektur aus 3D-Faltungsschichten mit einer geringeren Netzwerkgröße, aber reduzierter Kontrolle.MuseGAN bietet eine Vielzahl von Skripten, um Vorgänge wie die Verwaltung von Experimenten, das Training neuer Modelle und die Inferenz und Interpolation mit vortrainierten Modellen zu erleichtern.
Funktionsliste
- Erzeugen von Mehrspurmusik: Erzeugen Sie Musikclips mit mehreren Instrumenten von Grund auf neu.
- Begleitungsgenerierung: Generieren Sie Begleitungen auf der Grundlage von vom Benutzer bereitgestellten Tracks.
- Training neuer Modelle: Es werden Skripte und Konfigurationsdateien zur Verfügung gestellt, die es den Benutzern erleichtern, ihre eigenen Modelle zur Musikerzeugung zu trainieren.
- Vorgefertigte Modelle verwenden: Laden Sie vorgefertigte Modelle herunter und verwenden Sie sie für die Musikerstellung.
- Datenverarbeitung: Herunterladen und Verarbeiten von Trainingsdaten mit Unterstützung für Lakh Pianoroll Dataset.
- Verwaltung von Experimenten: Bieten Sie eine Reihe von Skripten an, die es den Benutzern erleichtern, Experimente einzurichten und zu verwalten.
- Ausgabeformat: Die erzeugte Musik kann in den Formaten Numpy-Array, Bilddatei und mehrspurige Pianoroll-Datei gespeichert werden.
Hilfe verwenden
Ablauf der Installation
- Stellen Sie sicher, dass pipenv (empfohlen) oder pip installiert ist.
- Verwenden Sie pipenv, um die Abhängigkeiten zu installieren:
bash
Pipenv-Installation
Pipenv-Shell
oder verwenden Sie pip, um Abhängigkeiten zu installieren:
bash
pip install -r anforderungen.txt
### Datenvorbereitung
1. laden Sie die Trainingsdaten herunter:
bash
. /scripts/download_data.sh
2. die Verarbeitung von Trainingsdaten:
bash
. /scripts/process_data.sh
### Training eines neuen Modells
1 Bauen Sie das neue Experiment auf:
bash
. /scripts/setupexp.sh ". /exp/meinExperiment/" "Bemerkungen zum Experiment"
2. die Konfigurationsdatei und die Modellparameterdatei ändern, um die Versuchsparameter festzulegen.
3. das Modell trainieren:
bash
. /scripts/runtrain.sh ". /exp/myexperiment/" "0"
Oder führen Sie das gesamte Experiment durch (Training + Inferenz + Interpolation):
bash
. /scripts/runexp.sh ". /exp/meinexperiment/" "0"
### Verwendung des Vortrainingsmodells
1. laden Sie das Pre-Training-Modell herunter:
bash
. /scripts/download_models.sh
2. die Inferenz mit vortrainierten Modellen:
bash
. /scripts/run_inference.sh ". /exp/default/" "0"
oder Interpolation:
bash
. /scripts/run_interpolation.sh ". /exp/default/" "0"
### Ausgabeverwaltung
Generierte Musiksamples werden standardmäßig während des Trainings generiert. Dieses Verhalten kann durch Setzen von `save_samples_steps` auf 0 in der Konfigurationsdatei deaktiviert werden. Die erzeugten Musiksamples werden in den folgenden drei Formaten gespeichert:
- `.npy`: rohes Numpy-Array
- `.png`: Bilddatei
- `.npz`: mehrspurige Pianoroll-Dateien, die über das Pypianoroll-Paket geladen werden können
Das Speichern bestimmter Formate kann durch Setzen von `save_array_samples`, `save_image_samples` und `save_pianoroll_samples` auf False in der Konfigurationsdatei deaktiviert werden. Die erzeugten Pianoroll-Dateien werden im `.npz`-Format gespeichert, um Platz und Verarbeitungszeit zu sparen. Sie können mit dem folgenden Code in eine MIDI-Datei geschrieben werden:
python
von pypianoroll importieren Multitrack
m = Multitrack('. /test.npz')
m.write('. /test.mid')
Beispielhafte Ergebnisse
Einige Beispielergebnisse finden Sie in der. /exp/
Katalog gefunden werden kann. Weitere Beispiele können unter den folgenden Links heruntergeladen werden:
- sample_results.tar.gz(54,7 MB): Beispiele für Inferenz- und Interpolationsergebnisse
- training_samples.tar.gz(18.7 MB): Beispiele für die in verschiedenen Schritten erzeugten Ergebnisse