🚀 音乐生成歌曲创意生成器 v0.2
musicgen-songstarter-v0.2 是一个基于微调的音乐生成模型,专为音乐制作人提供歌曲创意,可生成 32kHz 的立体声音频。
🚀 快速开始
musicgen-songstarter-v0.2 是在我的 Splice 样本库中的旋律循环数据集上对 musicgen-stereo-melody-large
进行微调得到的。它旨在用于生成对音乐制作人有用的歌曲创意,生成 32kHz 的立体声音频。
👀 更新:我写了一篇博客文章,详细介绍了我训练这个模型的方式和原因,包括训练细节、数据集、Weights and Biases 日志等。
与 musicgen-songstarter-v0.1
相比,这个新版本:
- 在我在 Splice 上精心购买的独特样本上进行了 3 倍多的训练。
- 模型大小从
medium
提升到 large
,是原来的两倍。
如果您觉得这个模型有趣,请考虑:
✨ 主要特性
- 基于微调的音乐生成模型,可生成歌曲创意。
- 生成 32kHz 的立体声音频。
- 支持无条件生成和基于描述的生成。
- 支持使用给定音频的旋律进行生成。
📦 安装指南
安装 audiocraft:
pip install -U git+https://github.com/facebookresearch/audiocraft#egg=audiocraft
💻 使用示例
基础用法
import torchaudio
from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
model = MusicGen.get_pretrained('nateraw/musicgen-songstarter-v0.2')
model.set_generation_params(duration=8)
wav = model.generate_unconditional(4)
descriptions = ['acoustic, guitar, melody, trap, d minor, 90 bpm'] * 3
wav = model.generate(descriptions)
melody, sr = torchaudio.load('./assets/bach.mp3')
wav = model.generate_with_chroma(descriptions, melody[None].expand(3, -1, -1), sr)
for idx, one_wav in enumerate(wav):
audio_write(f'{idx}', one_wav.cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)
📚 详细文档
提示格式
遵循以下提示格式:
{标签 1}, {标签 2}, ..., {标签 n}, {调式}, {bpm} bpm
例如:
hip hop, soul, piano, chords, jazz, neo jazz, G# minor, 140 bpm
有关一些示例标签,请参阅 musicgen-songstarter-v0.1 的 README 中的提示格式部分。那里的标签适用于较小的 v1 数据集,但应该能让您了解模型所学习的内容。
示例音频
音频提示 |
文本提示 |
输出 |
|
trap, synthesizer, songstarters, dark, G# minor, 140 bpm |
|
|
acoustic, guitar, melody, trap, D minor, 90 bpm |
|
🔧 技术细节
训练详情
- 代码:
- 数据:
- 大约 1700 - 1800 个样本,我亲自聆听并通过个人 Splice 账户购买。大约 7 - 8 小时的音频。
- 由于许可条款,我无法分享这些数据。
- 硬件:
- 使用 Lambda Labs 的 8xA100 40GB 实例。
- 训练过程:
- 训练了 10000 步,大约需要 6 小时。
- 在训练时将片段持续时间缩短至 15 秒。
- 超参数/日志:
- 请参阅 wandb 运行记录,其中包括训练指标、日志、训练时的硬件指标、超参数以及我运行训练脚本时使用的准确命令。
📄 许可证
本项目采用 CC BY-NC 4.0 许可证。
致谢
如果没有以下支持,这项工作是不可能完成的:
感谢 ❤️