VampNet
此仓库包含基于Descript音频编解码器训练生成式音乐模型的方法。
尝试 unloop
你可以在一个名为unloop的协作式循环器中尝试vampnet。请参见此链接:https://github.com/hugofloresgarcia/unloop
环境配置
需要Python 3.9。
你需要一个Python 3.9环境来运行VampNet。这是由于madmom的一个已知问题。
(例如,使用conda)
conda create -n vampnet python=3.9
conda activate vampnet
安装VampNet
git clone https://github.com/hugofloresgarcia/vampnet.git
pip install -e ./vampnet
关于argbind的说明
本仓库依赖argbind来管理命令行界面和配置文件。
配置文件存储在conf/
文件夹中。
获取预训练模型
预训练模型的许可:
模型权重采用CC BY-NC-SA 4.0
许可。同样,任何基于预训练模型微调的VampNet模型也采用CC BY-NC-SA 4.0
许可。
从此链接下载预训练模型。然后,将模型解压到models/
文件夹中。
使用方法
启动Gradio界面
你可以启动一个gradio用户界面来使用vampnet。
python app.py --args.load conf/interface.yml --Interface.device cuda
训练/微调
训练模型
要训练模型,运行以下脚本:
python scripts/exp/train.py --args.load conf/vampnet.yml --save_path /path/to/checkpoints
对于多GPU训练,使用torchrun:
torchrun --nproc_per_node gpu scripts/exp/train.py --args.load conf/vampnet.yml --save_path path/to/ckpt
你可以编辑conf/vampnet.yml
来更改数据集路径或任何训练超参数。
对于coarse2fine模型,你可以使用conf/c2f.yml
作为起始配置。
查看python scripts/exp/train.py -h
以获取选项列表。
调试训练
为了便于调试训练,最好使用1个GPU和0个工作进程
CUDA_VISIBLE_DEVICES=0 python -m pdb scripts/exp/train.py --args.load conf/vampnet.yml --save_path /path/to/checkpoints --num_workers 0
微调
要微调模型,使用scripts/exp/fine_tune.py
中的脚本生成3个配置文件:c2f.yml
、coarse.yml
和interface.yml
。
前两个用于分别微调粗糙和精细模型。最后一个用于启动gradio界面。
python scripts/exp/fine_tune.py "/path/to/audio1.mp3 /path/to/audio2/ /path/to/audio3.wav" <fine_tune_name>
这将在conf/<fine_tune_name>/
下创建一个文件夹,其中包含3个配置文件。
保存路径将被设置为runs/<fine_tune_name>/coarse
和runs/<fine_tune_name>/c2f
。
启动粗糙模型任务:
python scripts/exp/train.py --args.load conf/generated/<fine_tune_name>/coarse.yml
这将把粗糙模型保存到runs/<fine_tune_name>/coarse/ckpt/best/
。
启动c2f任务:
python scripts/exp/train.py --args.load conf/generated/<fine_tune_name>/c2f.yml
启动界面:
python app.py --args.load conf/generated/<fine_tune_name>/interface.yml