SongBloom_ComfyUI
A ComfyUI extension with 14 custom nodes.
Nodes (14)
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/示例工作流 - 反馈具体日志与截图,便于定位
联系方式
如有技术问题或合作需求,欢迎通过微信联系: