はじめに
MuseGAN是一个基于生成对抗网络(GAN)的音乐生成项目,旨在生成多轨(多种乐器)音乐。该项目能够从零开始生成音乐,或根据用户提供的轨道进行伴奏。MuseGAN使用Lakh Pianoroll Dataset进行训练,生成包含贝斯、鼓、吉他、钢琴和弦乐的流行歌曲片段。最新的实现基于3D卷积层的网络架构,具有较小的网络规模,但控制能力有所降低。MuseGAN提供了多种脚本,方便用户管理实验、训练新模型、使用预训练模型进行推理和插值等操作。
機能一覧
- 生成多轨音乐:从零开始生成包含多种乐器的音乐片段。
- 伴奏生成:根据用户提供的轨道生成伴奏。
- 训练新模型:提供脚本和配置文件,方便用户训练自己的音乐生成模型。
- 使用预训练模型:下载并使用预训练模型进行音乐生成。
- 数据处理:下载和处理训练数据,支持Lakh Pianoroll Dataset。
- 实验管理:提供多种脚本,方便用户设置和管理实验。
- 输出格式:生成的音乐可以以numpy数组、图像文件和多轨pianoroll文件格式保存。
ヘルプの使用
設置プロセス
- 确保已安装pipenv(推荐)或pip。
- 使用pipenv安装依赖:
バッシュ
pipenv install
pipenv shell
或使用pip安装依赖:
バッシュ
pip install -r requirements.txt
### 数据准备
1. 下载训练数据:
バッシュ
./scripts/download_data.sh
2. 处理训练数据:
バッシュ
./scripts/process_data.sh
### 训练新模型
1. 设置新实验:
バッシュ
./scripts/setupexp.sh "./exp/myexperiment/" "实验备注"
2. 修改配置文件和模型参数文件以设置实验参数。
3. 训练模型:
バッシュ
./scripts/runtrain.sh "./exp/myexperiment/" "0"
或运行完整实验(训练+推理+插值):
バッシュ
./scripts/runexp.sh "./exp/myexperiment/" "0"
### 使用预训练模型
1. 下载预训练模型:
バッシュ
./scripts/download_models.sh
2. 使用预训练模型进行推理:
バッシュ
./scripts/run_inference.sh "./exp/default/" "0"
或进行插值:
バッシュ
./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文件:
パイソン
from pypianoroll import Multitrack
m = Multitrack('./test.npz')
m.write('./test.mid')
示例结果
一些示例结果可以在./exp/
目录中找到。更多示例可以从以下链接下载:
- sample_results.tar.gz(54.7 MB):推理和插值结果示例
- training_samples.tar.gz(18.7 MB):不同步骤生成的结果示例