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 populärer 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 Mehrspur-Musik: Erzeugen Sie von Grund auf Musikclips mit mehreren Instrumenten.
- 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
Einbauverfahren
- Stellen Sie sicher, dass pipenv (empfohlen) oder pip installiert ist.
- Verwenden Sie pipenv, um die Abhängigkeiten zu installieren:
bash
Pipenv-Installation
Pipenv-Shell
或使用pip安装依赖:
bash
pip install -r anforderungen.txt
### 数据准备
1. 下载训练数据:
bash
. /scripts/download_data.sh
2. 处理训练数据:
bash
. /scripts/process_data.sh
### 训练新模型
1. 设置新实验:
bash
. /scripts/setupexp.sh ". /exp/meinExperiment/" "Bemerkungen zum Experiment"
2. 修改配置文件和模型参数文件以设置实验参数。
3. 训练模型:
bash
. /scripts/runtrain.sh ". /exp/myexperiment/" "0"
或运行完整实验(训练+推理+插值):
bash
. /scripts/runexp.sh ". /exp/meinexperiment/" "0"
### 使用预训练模型
1. 下载预训练模型:
bash
. /scripts/download_models.sh
2. 使用预训练模型进行推理:
bash
. /scripts/run_inference.sh ". /exp/default/" "0"
或进行插值:
bash
. /scripts/run_interpolation.sh ". /exp/default/" "0"
### 输出管理
生成的音乐样本默认会在训练过程中生成,可以通过设置配置文件中的`save_samples_steps`为0来禁用此行为。生成的音乐样本会以以下三种格式保存:
- `.npy`:原始numpy数组
- `.png`:图像文件
- `.npz`:多轨pianoroll文件,可通过Pypianoroll包加载
可以通过设置配置文件中的`save_array_samples`、`save_image_samples`和`save_pianoroll_samples`为False来禁用特定格式的保存。生成的pianoroll文件以`.npz`格式保存,以节省空间和处理时间。可以使用以下代码将其写入MIDI文件:
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