SongBloom_ComfyUI
SongBloom is a music generation plugin for ComfyUI that integrates the entire process of lyrics standardization, model loading, generation, saving, and previewing, and provides DeepSeek V3 assistance for lyric formatting.
Nodes (14)
The config node that packages SongBloom's sampling knobs into one object
Check your reference clip before SongBloom hears it
Cut a reference clip down to size before SongBloom uses it
The shape-fixer that stops 'Dimension out of range' before it happens
The in-graph player that lets you hear a song before you save it
The 10-second clip that makes SongBloom sing *your* song
The saver that finally puts your SongBloom output on disk
Queue up a dozen songs from one model load
This node formats lyrics via DeepSeek — and it needs a key
The node at the center of every SongBloom workflow
The node that writes your lyrics (DeepSeek or templates), pre-formatted for SongBloom
The lyric cleanup node that stops the model from singing nonsense
The referee that tells you why your song came out as gibberish
Loading the 2B SongBloom model
ComfyUI SongBloom 插件(完整文档)
面向 ComfyUI 的 SongBloom 音乐生成插件,集成歌词规范、模型加载、生成、保存与预览等全流程能力,并提供 DeepSeek V3 辅助“歌词格式化”。
亮点功能
- 端到端歌曲生成:最长约 150s(取决于模型配置)
- 结构化歌词驱动:规范的标签格式,生成更稳定
- 参考音频提示:可选风格参考(自动重采样/裁剪)
- 质量优化预设:一键切换 Ultra/High/Balanced/Fast
- 低显存保护:支持低显存模式、自动降级与重试
- 音频工具集:截取、维度修复、保存与内置预览
- DeepSeek V3 对齐实现:用于“歌词格式转换”的 API 节点,支持从 JSON/环境变量读取 Key
Installation
Prerequisites
- ComfyUI installed and working
- Python 3.8 or higher
- CUDA-compatible GPU (recommended)
- At least 8GB VRAM for float32, 6GB for bfloat16
Step 1: Clone the Plugin
cd ComfyUI/custom_nodes
git clone https://github.com/your-repo/ComfyUI_SongBloom.git
Step 2: Install Dependencies(依赖安装)
cd ComfyUI_SongBloom
pip install -r requirements.txt
Step 3: 安装脚本(可选)
cd ComfyUI_SongBloom
python install.py
This script will:
- Check system requirements
- Verify dependencies
- Set up model directories
- Test SongBloom components
模型设置
模型下载链接(参考官方仓库)
下表与官方仓库的“Models”保持一致,便于直接跳转下载模型文件。官方仓库链接
| 名称 | 规模 | 最长时长 | 提示类型 | 下载/说明 | | --- | --- | --- | --- | --- | | songbloom_full_150s | 2B | 2m30s | 10s wav | HuggingFace | | songbloom_full_150s_dpo | 2B | 2m30s | 10s wav | HuggingFace |
说明:当前两个版本权重均托管在同一模型卡页面,请在页面内选择对应的 .pt 与配置文件。
本地模型(推荐)
如果您已经有本地模型文件,请将它们放置在以下目录:
ComfyUI/models/SongBloom/
├── songbloom_full_150s.pt # 基础模型
├── songbloom_full_150s_dpo.pt # DPO微调模型(推荐)
├── songbloom_full_150s.yaml # 配置文件(可选)
├── songbloom_full_150s_dpo.yaml # 配置文件(可选)
├── stable_audio_1920_vae.json # VAE配置
├── autoencoder_music_dsp1920.ckpt # VAE权重
└── vocab_g2p.yaml # G2P词汇表
支持的模型文件:
songbloom_full_150s.pt: 基础模型 (2B参数)songbloom_full_150s_dpo.pt: DPO微调模型 (推荐使用)
自动下载模型
如果没有本地模型,插件会自动从HuggingFace Hub下载。确保有网络连接。
下载的文件:
- 模型权重 (.pt文件)
- 配置文件 (.yaml)
- VAE组件
- G2P词汇文件
总下载大小: ~8GB
加载模式
在SongBloomModelLoader节点中,您可以选择不同的加载模式:
- local_first (默认): 优先使用本地模型,如果不存在则下载
- local_only: 仅使用本地模型,不下载
- download_only: 强制从网络下载
自动配置修复
插件包含智能配置修复功能,会自动处理常见的配置问题:
- VAE配置自动修复: 自动检测和配置VAE设置,解决"Missing key vae"错误
- 文件智能匹配: 支持多种文件名和扩展名(
.pt,.ckpt,.pth) - 详细错误日志: 提供清晰的修复过程信息
音频质量优化
质量配置节点(SongBloomQualityConfig)
新增的 SongBloomQualityConfig 节点提供专业级音频质量优化:
质量预设
- Ultra High: CFG=4.0, Steps=200, Top_k=50 - 最高质量,适合最终作品
- High: CFG=3.0, Steps=100, Top_k=100 - 高质量,日常推荐
- Balanced: CFG=2.0, Steps=75, Top_k=150 - 质量与速度平衡
- Fast: CFG=1.5, Steps=50, Top_k=200 - 快速生成,适合测试
参数说明
- CFG系数: 控制对歌词的遵循程度,越高质量越好但生成时间越长
- 推理步数: 扩散模型去噪步数,越多细节越丰富
- Top_k采样: 限制采样候选数,越低越稳定
使用方法
- 添加
SongBloomQualityConfig节点 - 选择质量预设或自定义参数
- 连接到
SongBloomGenerator的quality_config输入 - 生成高质量音频
质量优化建议
如果音频质量不佳,请尝试:
- 使用 "High" 或 "Ultra High" 质量预设
- 确保歌词格式规范(使用
SongBloomLyricProcessor验证) - 提高CFG系数到3.0以上
- 增加推理步数到100以上
- 降低Top_k值到100以下
详细的质量优化指南请参考:音频质量优化指南.md
快速开始
基础工作流
-
加载模型: 使用
SongBloomModelLoader加载SongBloom模型- 选择模型:
songbloom_full_150s或songbloom_full_150s_dpo(推荐) - 选择加载模式:
local_first(优先本地),local_only(仅本地),download_only(仅下载) - 选择数据类型:
float32(高质量) 或bfloat16(节省显存)
- 选择模型:
-
处理歌词: 使用
SongBloomLyricProcessor格式化歌词- 支持中文和英文歌词
- 自动验证歌词格式
- 提供格式建议和错误修正
-
准备音频提示: 使用
SongBloomAudioPrompt选择音频风格参考 (可选)- 智能文件选择: 下拉菜单自动显示系统中的音频文件
- 多目录搜索: 自动搜索音乐文件夹、桌面、ComfyUI输入目录等
- 格式支持: WAV, FLAC, MP3, OGG, M4A, AAC等格式
- 自动处理: 自动重采样到48kHz,调整到10秒长度
- 可选使用: 选择"无 (不使用音频提示)"可跳过音频风格参考
-
生成歌曲: 使用
SongBloomGenerator创建歌曲- 可调节CFG系数、步数等参数
- 支持不同质量设置
- 显示生成进度和信息
-
保存音频与预览: 使用
SongBloomAudioSaver保存结果(节点面板会显示预览)- 支持FLAC, WAV, MP3格式
- 自动文件命名和时间戳
- 可自定义输出目录
- 内置音频预览功能 - 保存的同时提供音频预览输出
-
音频预览: 使用
SongBloomAudioPreview试听音频(本插件自带的高级预览器)
示例工作流
插件提供了多个示例工作流,位于 example_workflows/ 目录:
-
local_quick_start.json - 快速开始工作流
- 最简单的本地模型使用示例
- 预配置参数,开箱即用
-
audio_file_selection_demo.json - 音频文件选择演示
- 展示音频风格参考功能
- 智能音频文件搜索和选择
-
audio_playback_demo.json - 音频播放功能演示 (新增)
- 展示音频保存和播放功能
- 包含音频预览和专门的播放器节点
- 完整的音频处理工作流
音频文件选择功能(SongBloomAudioPrompt)
新版本的 SongBloomAudioPrompt 节点提供了智能音频文件选择功能:
自动搜索目录
插件会自动搜索以下目录中的音频文件:
ComfyUI相关目录:
ComfyUI/input/- ComfyUI输入目录ComfyUI/models/audio/- 音频模型目录
用户常用目录:
~/Music或~/音乐- 用户音乐文件夹~/Desktop- 桌面目录~/Downloads或~/下载- 下载文件夹~/Documents/Music- 文档音乐文件夹
系统目录 (Windows):
C:/Users/Public/Music- 公共音乐文件夹C:/Windows/Media- 系统音频文件夹
音频软件目录:
- FL Studio、Audacity等音频软件的文档目录
支持的音频格式
- WAV (推荐,无损格式)
- FLAC (无损压缩)
- MP3 (有损压缩)
- OGG (开源格式)
- M4A (Apple格式)
- AAC (高效压缩)
使用方法
- 在
SongBloomAudioPrompt节点中点击audio_file下拉菜单 - 从列表中选择您想要的音频文件作为风格参考
- 选择 "无 (不使用音频提示)" 可以不使用音频风格参考
- 插件会自动处理音频文件(重采样、调整长度等)
智能处理特性
- 自动搜索多个系统目录
- 智能文件去重和排序
- 自动格式验证和错误提示
- 支持多种音频格式
音频质量建议
- 最佳长度: 5-15秒的音频片段
- 推荐格式: WAV或FLAC无损格式
- 采样率: 任意采样率(插件会自动转换为48kHz)
- 声道: 支持单声道和立体声(会自动转换为单声道)
歌词格式示例
[intro] [intro] [intro] [intro] [intro] [intro] [intro] [intro] [intro] [intro] ,
[verse] City lights flicker through the car window. Dreams pass fast where the lost ones go. Neon signs echo stories untold. I chase shadows while the night grows cold ,
[chorus] Run with me down the empty street. Where silence and heartbeat always meet. Every breath. a whispered vow. We are forever. here and now ,
[inst] [inst] [inst] [inst] [inst] [inst] [inst] [inst] [inst] [inst] [inst] [inst] ,
[verse] Footsteps loud in the tunnel of time. Regret and hope in a crooked rhyme. You held my hand when I slipped through the dark. Lit a match and you became my spark ,
[bridge] We were nothing and everything too. Lost in a moment. found in the view. Of all we broke and still survived. Somehow the flame stayed alive ,
[chorus] Run with me down the empty street. Where silence and heartbeat always meet. Every breath. a whispered vow. We are forever. here and now ,
[outro] [outro] [outro] [outro] [outro] [outro] [outro] [outro] [outro] [outro] [outro]
节点一览(本插件提供)
SongBloomModelLoader(模型加载)
加载本地或自动下载的 SongBloom 模型,并支持 dtype/加载模式等设置。
Inputs:
model_name: Choose between available modelsdtype: Precision (float32/bfloat16)force_reload: Force re-download of model files
Outputs:
model: Loaded SongBloom model
SongBloomLyricProcessor(歌词处理与校验)
Inputs:
lyrics: Multi-line text with structure tagsvalidate_format: Enable format validation
Outputs:
processed_lyrics: Formatted lyricsvalidation_info: Validation results
SongBloomAudioPrompt(参考音频处理)
Inputs:
audio_path: Path to audio fileaudio: Audio tensor (alternative to path)target_duration: Duration in seconds (default: 10s)
Outputs:
processed_audio: Prepared audio promptinfo: Processing information
SongBloomGenerator(歌曲生成)
Inputs:
model: SongBloom modellyrics: Processed lyricsaudio_prompt: Audio promptcfg_coef: Classifier-free guidance coefficientsteps: Number of diffusion stepstop_k: Top-k sampling parameterseed: Random seed (-1 for random)
Outputs:
generated_audio: Generated songgeneration_info: Generation statistics
SongBloomAudioSaver(音频保存,带节点内预览)
Inputs:
audio: Audio to savefilename: Output filenameformat: Audio format (FLAC/WAV/MP3)output_dir: Output directory (optional)enable_preview: Enable audio preview output (optional)
Outputs:
file_path: Path to saved fileaudio_preview: Audio preview for playback (when enabled)
SongBloomAudioPreview(音频预览输出节点)
Inputs:
audio: Audio to playtitle: Display title for the audio (optional)auto_play: Enable automatic playback (optional)
Outputs:
audio: Pass-through audio for further processinginfo: Audio information (duration, sample rate, etc.)
歌词格式规范
Structure Tags
[intro]- Introduction section[verse]- Verse section with vocals[chorus]- Chorus section with vocals[bridge]- Bridge section with vocals[inst]- Instrumental section[outro]- Outro section
Formatting Rules
- Use structure tags to mark different sections
- Separate sentences with
.in vocal sections - Separate sections with
, - Repeat tags for longer instrumental sections
- Include at least one vocal section
DeepSeek V3(歌词格式转换)
- 节点:
SongBloom DeepSeek Lyric Formatter - 实现:使用 OpenAI SDK,
base_url=https://api.deepseek.com,模型DeepSeek-V3(内部映射为deepseek-chat) - 读取 API Key 优先级:
- 节点输入
api_key - 环境变量
DEEPSEEK_API_KEY DeepseekAP-config.json(本项目根目录)config.yaml中deepseek.api_key(兜底)
- 节点输入
- JSON 配置文件示例(
DeepseekAP-config.json):
{
"api_key": "sk-xxxxxxxxxxxxxxxxxxxx"
}
DeepSeek API 申请指南与使用说明
-
申请步骤(以 DeepSeek 官方为准)
- 前往 DeepSeek 官网注册并完成实名认证(若需)
- 进入控制台创建 API Key,复制得到形如
sk-...的密钥 - 建议为本项目单独创建一个 Key,便于额度管理
-
在本项目中配置 API Key(四选一,按优先级覆盖)
- 方式 A(节点内最直观):在
SongBloom DeepSeek Lyric Formatter或SongBloom Lyric Generator(勾选 use_deepseek)节点的api_key输入框中粘贴 Key - 方式 B(环境变量)
- Windows PowerShell(会话级):
$env:DEEPSEEK_API_KEY = "sk-xxxx" - 永久:在系统环境变量新增
DEEPSEEK_API_KEY
- Windows PowerShell(会话级):
- 方式 C(推荐)在项目根目录创建/编辑
DeepseekAP-config.json:{ "api_key": "sk-xxxxxxxxxxxxxxxxxxxx" } - 方式 D(兜底)在
config.yaml中新增:deepseek: api_key: "sk-xxxxxxxxxxxxxxxxxxxx"
- 方式 A(节点内最直观):在
-
在工作流中的用法
- 仅格式化:直接使用
SongBloom DeepSeek Lyric Formatter,填入prompt(你的主题/要求),其余保持默认(model 选DeepSeek-V3) - 融入生成链:在
SongBloom Lyric Generator勾选use_deepseek,将style/mood/language/theme_keywords/user_requirements等参数作为上下文传入,由 DeepSeek 生成结构化歌词;本节点会自动做格式清洗与校验 - 默认系统提示词已内置,保证输出严格遵循 SongBloom 标签格式;如需定制,可在节点的
deepseek_system_prompt中覆盖
- 仅格式化:直接使用
-
常见问题
- 400/401 错误:通常是 Key 无效或模型名不匹配(本插件已将
DeepSeek-V3映射为deepseek-chat) - 代理:若系统设置了
HTTP_PROXY/HTTPS_PROXY,SDK 将继承;需要直连时清空相关环境变量 - 额度:请在 DeepSeek 控制台查看用量与账单,避免因额度不足导致失败
- 400/401 错误:通常是 Key 无效或模型名不匹配(本插件已将
工具节点
SongBloomAudioCropper(音频截取)
- 输入:音频、
start_sec、end_sec、pad_to_end - 输出:裁剪后的音频与信息字符串
- 特性:自动矫正形状为 (channels, samples),支持空结果兜底(可补 0.01s 静音)
SongBloomAudioEnsure2D(维度修复)
- 将任意 0D/1D/3D/列表/ndarray 规约为 2D
(channels, samples),并保证 CPU/contiguous - 建议在使用非本插件的保存节点前串联,避免“Dimension out of range”
生成与显存优化
低显存模式(SongBloomGenerator 可选项)
low_memory_mode:启用后在 OOM 时自动清缓存、降步数/CFG/增大 top_k,并可重试max_memory_retries:最大重试次数(默认 2)prompt_max_seconds:限制参考音频最长秒数(默认 10),超出会裁剪
建议参数
- 紧张显存:
bfloat16+steps 40~60+cfg 1.5~2.0+prompt_max_seconds 5 - 高质量:
float32+steps ≥100+cfg 3.0
额外提示(与官方实现一致的显存管理)
- 在底层生成循环开始前会显式调用一次
torch.cuda.empty_cache(),以释放碎片显存。 max_frames值越大峰值显存越高,建议根据目标时长调节;显存紧张时将其下调(如 7500 或更低)。
故障排查(Troubleshooting)
Common Issues
"SongBloom dependencies not available"
- Install requirements:
pip install -r requirements.txt - Ensure all dependencies are properly installed
"CUDA out of memory"
- Use
bfloat16dtype instead offloat32 - Reduce batch size or song length
- Close other GPU-intensive applications
"Model download failed"
- Check internet connection
- Verify HuggingFace Hub access
- Try force reload option
Performance Tips
- Use
bfloat16for lower VRAM usage - Start with shorter songs for testing
- Use lower step counts for faster generation
- Enable flash attention if available
Advanced Usage
Custom Model Paths
You can specify custom model cache directories by modifying the cache_dir in the model loader.
Batch Processing
使用 SongBloomBatchProcessor 可批量生成多首歌曲(同一模型/提示,不同歌词)。
Quality Settings
- High Quality:
steps=100,cfg_coef=2.0,dtype=float32 - Balanced:
steps=50,cfg_coef=1.5,dtype=bfloat16(default) - Fast:
steps=25,cfg_coef=1.0,dtype=bfloat16
Memory Optimization
For systems with limited VRAM:
- Use
bfloat16dtype - Reduce
max_framesin advanced config - Close other GPU applications
- Consider using CPU offloading (slower but uses less VRAM)
故障排除
常见问题
1. 模型加载失败
问题: "Model file not found" 或 "Failed to load model" 解决方案:
- 确保模型文件位于
ComfyUI/models/SongBloom/目录 - 检查文件名是否正确:
songbloom_full_150s.pt或songbloom_full_150s_dpo.pt - 尝试使用
download_only模式重新下载模型 - 运行
python test_local_models.py检查模型状态
1.1. OmegaConf Resolver错误
问题: "resolver 'eval' is already registered" 解决方案:
- 这是多次加载模型时的常见问题,已在v1.1.0中修复
- 重启ComfyUI应用修复
- 现在支持多次加载和切换模型
- 如果仍有问题,运行
python test_model_loading.py验证修复
2. 显存不足
问题: "CUDA out of memory" 解决方案:
- 使用
bfloat16数据类型 - 减少生成步数 (steps)
- 关闭其他GPU应用程序
- 降低
max_frames参数
3. 歌词格式错误
问题: "Invalid lyric format" 或生成质量差 解决方案:
- 使用
SongBloomLyricValidator检查歌词格式 - 确保包含必要的结构标签:
[intro],[verse],[chorus],[outro] - 参考示例歌词格式
- 每个部分用逗号分隔
4. 音频提示问题
问题: 音频加载失败或格式不支持 解决方案:
- 确保音频文件存在且可读
- 支持的格式: WAV, FLAC, MP3, OGG
- 音频长度建议5-15秒
- 使用
SongBloomAudioAnalyzer检查音频质量
5. 生成速度慢
问题: 生成时间过长 解决方案:
- 减少生成步数 (25-50步通常足够)
- 使用
bfloat16数据类型 - 确保使用GPU而非CPU
- 检查CUDA版本兼容性
性能优化建议
- 首次使用: 选择
local_first模式,让插件自动处理模型加载 - 显存优化: 使用
bfloat16+ 50步数 + CFG系数1.5 - 质量优化: 使用
float32+ 100步数 + CFG系数2.0 - 速度优化: 使用
bfloat16+ 25步数 + CFG系数1.0
License
遵循上游 SongBloom 项目的相同协议,详见仓库 LICENSE。
Citation
If you use this plugin in your research, please cite the original SongBloom paper:
@article{yang2025songbloom,
title={SongBloom: Coherent Song Generation via Interleaved Autoregressive Sketching and Diffusion Refinement},
author={Yang, Chenyu and Wang, Shuai and Chen, Hangting and Tan, Wei and Yu, Jianwei and Li, Haizhou},
journal={arXiv preprint arXiv:2506.07634},
year={2025}
}
Contributing
欢迎提交 Issue/PR 参与共建。
Support
若遇到问题:
- 先参考本文"故障排查/性能优化"章节
- 查看
example_workflows/示例工作流 - 反馈具体日志与截图,便于定位
联系方式
如有技术问题或合作需求,欢迎通过微信联系: