SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐
SongBloom:革命性歌曲生成框架深度解析——如何通过交织自回归与扩散模型创作完整音乐
【免费下载链接】SongBloomThe official code repository for SongBloom: Coherent Song Generation via Interleaved Autoregressive Sketching and Diffusion Refinement项目地址: https://gitcode.com/gh_mirrors/so/SongBloom
SongBloom 是一款突破性的歌曲生成框架,它通过交织自回归草图绘制与扩散模型优化的创新范式,实现了完整音乐作品的高质量创作。该框架将扩散模型的高保真度与语言模型的可扩展性完美结合,为音乐创作领域带来了全新的可能性。
🎵 核心技术架构:双引擎驱动的音乐创作
SongBloom 的核心优势在于其独特的双引擎架构,将自回归生成与扩散模型优化有机结合,实现了从粗略到精细的音乐创作过程。
SongBloom 交织自回归与扩散模型的架构示意图,展示了从歌词和参考音频到完整音乐生成的全过程
自回归草图生成(Autoregressive Sketching)
框架的左侧部分展示了自回归生成流程,通过 Transformer 解码器将歌词(Lyrics)和参考音频(Reference Audio)转化为音乐草图。这一过程中:
- 条件令牌(Condition Token):接收歌词和音频风格输入
- 草图令牌(Sketch Token):生成音乐的基本结构和旋律走向
- 声学令牌(Acoustic Token):添加音色和表现力细节
- 隐藏向量(Hidden Vector):连接不同层次的特征表示
自回归模型逐步将音乐从短片段扩展为完整长度,确保了音乐结构的连贯性和逻辑性。
扩散模型优化(Diffusion Refinement)
框架右侧展示了扩散模型优化流程,通过以下组件实现音质提升:
- VAE(变分自编码器):负责将音频信号转换为潜在空间表示
- DiT(扩散Transformer):对潜在空间中的音频特征进行精细化处理
- 噪声注入与去除:通过逐步去噪过程优化音频质量
这一过程确保了最终生成的音乐具有极高的保真度和专业级音质。
🚀 快速上手:从零开始的音乐创作之旅
环境准备
SongBloom 提供了简单易用的环境配置流程,即使是新手也能快速搭建创作环境:
conda create -n SongBloom python==3.8.12 conda activate SongBloom pip install -r requirements.txt数据准备
创作音乐需要准备一个 JSONL 格式的输入文件,包含歌词和参考音频路径:
{ "idx": "样本索引", "lyrics": "要生成的歌词", "prompt_wav": "风格参考音频路径" }项目中提供了示例文件:example/test.jsonl,参考音频应为 10 秒、48kHz 的音频片段。
歌词格式指南
歌词需要遵循特定的格式规范,包含 vocal 和 non-vocal 部分:
- Vocal 部分:需以
[verse]、[chorus]或[bridge]开头,后跟歌词文本 - Non-vocal 部分:使用
[intro]、[inst]或[outro]表示,可重复多次以控制时长 - 分隔符:使用句号 (".") 分隔句子,逗号 (",") 分隔不同段落
详细格式说明可参考:docs/lyric_format.md
一键生成音乐
完成准备后,只需一条命令即可生成完整音乐:
source set_env.sh python3 infer.py --input-jsonl example/test.jsonl对于低显存 GPU(如 RTX4090),可使用半精度模式减少内存占用:
python3 infer.py --input-jsonl example/test.jsonl --dtype bfloat16🎼 模型选择:满足不同创作需求
SongBloom 提供了多种预训练模型,满足不同场景的创作需求:
| 模型名称 | 大小 | 最大长度 | 提示类型 |
|---|---|---|---|
| songbloom_full_150s | 2B | 2分30秒 | 10秒音频 |
| songbloom_full_150s_dpo | 2B | 2分30秒 | 10秒音频 |
| songbloom_full_240s | 2B | 4分钟 | 10秒音频 |
其中,150s 系列模型中,每个[intro]、[outro]和[inst]对应 1 秒时长;而 240s 系列模型中,每个令牌对应 5 秒时长。
💻 高级配置:针对不同硬件优化
Mac Silicon 用户
Apple 芯片用户需设置以下环境变量:
export PYTORCH_ENABLE_MPS_FALLBACK=1 export DISABLE_FLASH_ATTN=1加载模型时显式指定 MPS 设备并使用 float32:
import torch device = torch.device('mps') model = SongBloom_Sampler.build_from_trainer(cfg, strict=False, dtype=torch.float32, device=device)启用 Flash Attention
对于支持 Flash Attention 的 GPU,可通过以下方式加速生成过程:
- 安装 flash-attn (v2.6.3)
- 在 infer.py 第 8 行设置:
os.environ['DISABLE_FLASH_ATTN'] = "0"
📚 总结:开启 AI 音乐创作新纪元
SongBloom 通过创新的交织自回归与扩散模型架构,彻底改变了 AI 音乐创作的方式。无论是音乐爱好者、内容创作者还是专业音乐人,都能通过这一强大工具释放创作灵感,轻松生成高质量的完整歌曲。
随着项目的不断更新,SongBloom 持续优化模型性能,降低内存消耗,让更多人能够体验 AI 音乐创作的乐趣。现在就开始你的音乐创作之旅,用 SongBloom 编织属于你的旋律吧!
🔗 相关资源
- 许可证信息:LICENSE
- 模型架构代码:models/songbloom/
- 歌词处理模块:g2p/
- 推理脚本:infer.py
【免费下载链接】SongBloomThe official code repository for SongBloom: Coherent Song Generation via Interleaved Autoregressive Sketching and Diffusion Refinement项目地址: https://gitcode.com/gh_mirrors/so/SongBloom
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考