YuE2:基于可编辑乐谱与 AI 智能体的开放音乐生成
YuE2 将歌词和风格提示转换为可编辑的音乐乐谱、前沿品质的歌曲、零样本翻唱作品,并支持由智能体驱动的修改。
YuE2:基于可编辑乐谱与 AI 智能体的开放音乐生成
大多数 AI 音乐生成器都将作曲过程隐藏在一次性的“提示词到音频”操作之后。这让它们使用起来很方便,却难以控制:如果和声不对、旋律出现偏移,或编曲需要调整,通常只能重新生成全部内容,然后期待结果更好。
YuE2 采取了不同的方法。它首先创建一份明确且可编辑的音乐方案,其中包含旋律和和弦信息,然后将该方案渲染为完整的立体声录音。最终得到的是一个开放的音乐生成系统,不仅用于创作,还支持零样本翻唱、基于乐谱的编辑以及智能体工作流。
YuE2 有何不同?
YuE2 支持三种相关工作流:
- 创作: 提供歌词和风格提示,然后生成乐谱与完整歌曲。
- 翻唱生成: 转录源录音,保留其旋律,并以全新风格重新诠释。
- 智能体编辑: 让人类或 AI 智能体在再次渲染前修改和声、旋律、歌词、速度、乐器配置或歌曲结构。
其核心理念是白盒音乐流水线。YuE2 不把音频视为不透明的最终产物,而是公开中间创作过程,使其能够被检查、播放、修改并重新生成。
仓库报告称,YuE2 在 WildSongBench 上的表现可与 Suno v5 和 v6 竞争。在评估设置中,best-of-8 配置达到 6.9632 SongBench Avg,是目前观察到的最高平均值。该基准包含 192 条提示词,但作者指出,顶尖系统之间的差距较小,尚不足以证明统计显著性。
从歌词到可编辑乐谱
该架构将自回归/非自回归混合 Transformer 模型骨干与流匹配和变分自编码器结合起来:
- 模型以自回归方式预测符号方案和语义音乐 token。
- 使用流匹配生成声学潜变量。
- VAE 将这些潜变量解码为 48 kHz 立体声音频。
分阶段 API 将这些步骤清晰呈现出来:
plan() → generate_semantic() → synthesize() → decode()
这种分离方式对开发者很有用。你可以复用完全相同的方案、选择解码器、保留中间产物,并比较多种音频实现,而无需丢弃作曲本身。
创作、翻唱和编辑的主要区别在于乐谱的来源:
- YuE2 根据歌词和风格生成乐谱。
- SheetSage2 将源录音转录为旋律乐谱。
- 用户或智能体编辑现有的 ABC 编曲。
在本地安装并运行 YuE2
当前快速入门环境面向 Linux、Python 3.12,以及支持 BF16、拥有 24 GB 显存的 NVIDIA GPU。模型文件会在首次使用时从 Hugging Face 下载,默认流水线生成未量化的 48 kHz 立体声音频。
git clone https://github.com/multimodal-art-projection/YuE.git
cd YuE
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install .
python examples/generate.py \\
--output outputs/first-song
生成的目录不只是音频导出结果。它还保留乐谱、语义 token、声学潜变量、生成设置和模型标识。保留这些产物可以让实验具备可复现性,也为后续编辑提供素材。
Python 接口同样简洁:
import json
from pathlib import Path
from yue2 import YuE2Pipeline
request = json.loads(
Path("examples/song.json").read_text(encoding="utf-8")
)
with YuE2Pipeline.from_pretrained(
"m-a-p/YuE2-3B",
device="cuda",
) as pipe:
song = pipe(**request)
song.save_artifacts("outputs/my-song")
print(song.truncated)
选择合适的生成模式
YuE2 提供 cot 设置,用于控制符号规划的使用程度:
| 设置 | 行为 |
|---|---|
cot="full" |
生成可编辑的旋律与和弦方案;这是新歌曲的默认模式。 |
cot="melody" |
使用旋律方案,伴奏自由生成;推荐用于翻唱。 |
cot="off" |
直接根据歌词和风格生成。 |
你也可以通过 abc=... 提供 ABC 乐谱。完整乐谱生成能够让你更好地控制和声,而仅使用旋律条件则会让伴奏自由适应目标风格。
生成零样本翻唱
翻唱工作流从转录开始。使用 SheetSage2 将源旋律提取为 ABC 记谱法,检查转录结果,然后向 YuE2 提供新歌词或不同的目标风格。
对于翻唱,仓库建议使用 cot="melody",并提供不含和弦符号的乐谱。这样既能保留核心旋律,又允许 YuE2 创建符合指定曲风的新伴奏。
from pathlib import Path
from yue2 import YuE2Pipeline
with YuE2Pipeline.from_pretrained(
"m-a-p/YuE2-3B",
device="cuda",
) as pipe:
cover = pipe(
style=(
"English, jazz-funk, warm lead vocal, Rhodes, "
"bass and drums"
),
lyrics=Path("cover-lyrics.txt").read_text(encoding="utf-8"),
abc=Path("cover-score/score.abc").read_text(encoding="utf-8"),
cot="melody",
seed=42,
)
cover.save_artifacts("outputs/cover")
报告中的零样本翻唱评估结果值得关注:在 948 首作品中,完整乐谱 YuE2 达到 0.647 CLEWS mAP,而不使用乐谱时仅为 0.006。这一结果由通用生成器实现,而不是专门针对翻唱微调的模型。仅旋律翻唱会牺牲一部分源曲保真度,以换取更大的编曲自由度。
SheetSage2 在独立环境中运行,并会自动加载其 MERT2 编码器。仓库提供了完整的转录与生成指南,也包含原创旋律示例,展示如何在不先处理录音的情况下进行基于乐谱条件的生成。
编辑编曲,而不是盲目重新生成
符号乐谱是 YuE2 面向开发者最重要的接口。首先导出方案:
import json
from pathlib import Path
from yue2 import YuE2Pipeline
request = json.loads(
Path("examples/song.json").read_text(encoding="utf-8")
)
with YuE2Pipeline.from_pretrained(
"m-a-p/YuE2-3B",
device="cuda",
) as pipe:
plan = pipe.plan(**request)
plan.save("outputs/plan")
将 outputs/plan/score.abc 复制到一个可编辑文件,例如 edited.abc。随后,你可以手动或通过智能体修改和声、旋律、速度、乐器配置或曲式。使用以下命令渲染修改后的乐谱:
python examples/generate.py \\
--request examples/song.json \\
--abc-file edited.abc \\
--cot full \\
--output outputs/edited
这并不是保留波形的编辑。YuE2 会根据修改后的编曲重新生成一份完整录音;除了符号层面的变化外,它不会保留原始音频。这一区别在设计生产工作流或比较不同版本时非常重要。
智能体音乐编辑
仓库包含一个 skills/yue2-music/ 软件包,适用于支持 SKILL.md 风格技能目录的智能体。它教会智能体执行以下操作:
- 根据歌词和风格提示生成歌曲。
- 转录并翻唱录音。
- 编辑 ABC 乐谱。
- 检查音乐不变量。
- 组织试听比较。
Python 运行时需要通过 pip install . 单独安装;安装技能包并不能替代模型环境。
一个有用的智能体请求可能是:
使用 yue2-music 技能创作一首英文钢琴流行歌曲。保留原始音频和乐谱。制作第二个爵士和声版本,保留人声旋律和歌词顺序,并提供两个版本供我比较。
项目通过 The Last Train 展示了这种交互方式:经过九个编辑步骤和十四个版本,作品从华语流行转变为英文爵士,其中包括新的和声与萨克斯独奏。每个版本都可以与对应的对话、乐谱、提示词和歌词一起试听。
WildSongBench 结果
报告中的基准测试使用了 192 条 WildSongBench 提示词和基准解码器 YuE2-Vae-legacy。标准 YuE2 从两个候选结果中选择,而 best-of-8 则从八个候选结果中选择。
| 系统 / 设置 | SongBench Avg | AudioBox PQ | MuLan | PER |
|---|---|---|---|---|
| YuE2 best-of-8 | 6.9632 | 8.2714 | 0.5051 | 9.79% |
| Mureka 9 | 6.9377 | 8.0226 | 0.4394 | 11.69% |
| Suno v5 | 6.8721 | 8.1698 | 0.5428 | 8.10% |
| YuE2 | 6.7316 | 8.2598 | 0.5068 | 8.44% |
| Suno v5.5 | 6.7150 | 8.1955 | 0.5089 | 5.96% |
| Suno v4.5 | 6.6995 | 8.2541 | 0.5022 | 5.80% |
| Suno v6 | 6.5562 | 8.1296 | 0.4916 | 7.58% |
| Suno v6 Wild | 6.4195 | 8.1785 | 0.4999 | 7.45% |
| LeVo 2 | 6.3247 | 8.3966 | 0.3542 | 26.12% |
| MiniMax Music 2.6 | 6.3222 | 8.1711 | 0.4251 | 24.55% |
| MiniMax Music 3 | 6.2830 | 8.2825 | 0.3928 | 6.27% |
| HeartMuLa | 6.2483 | 8.2933 | 0.3823 | 10.71% |
| Muse | 6.0349 | 8.0517 | 0.3937 | 33.42% |
| ACE-Step 1.5 | 6.0118 | 8.0518 | 0.4372 | 7.46% |
| DiffRhythm 2 | 5.2428 | 7.9782 | 0.3782 | 18.41% |
| YuE 1 | 4.9165 | 7.8683 | 0.2623 | 36.38% |
| SongBloom | 4.2350 | 8.1539 | 0.2697 | 19.19% |
该表应被视为多指标比较,而不是单一排行榜。SongBench Avg 更有利于 YuE2 best-of-8,而其他系统在个别指标上领先。作者明确提醒,不应将排名和细微差异视为统计显著性的证明。
相关模型与资源
YuE2 是更广泛音乐 AI 技术栈的一部分:
- YuE2-3B: 生成、符号规划、翻唱和编辑。
- YuE2-Vae: 默认生成与试听解码器。
- YuE2-Vae-legacy: 报告基准协议所使用的解码器。
- SheetSage2: 音频到乐谱的转录。
- MERT-v2-FullSong: SheetSage2 使用的整曲表示。
- MERT-v2-30s: 短录音表示。
- WildSongBench: 评估提示词与基准资源。
普通生成并不要求提取 MERT2 特征;YuE2 不需要单独下载 MERT2 模型。
许可证与实践注意事项
当前仓库的一方代码、文档和智能体技能采用 Apache 2.0 许可证。模型权重则单独采用 CC BY-NC 4.0 许可证,第三方组件继续遵循各自的原始许可证。归档的 YuE-v1 分支保留其原始许可证,而较早的 yue2-v0.1.6 归档则保留其随附许可证。
这一许可证划分对于商业部署十分重要。Apache 2.0 覆盖源代码,但不会自动授予模型权重或第三方资产的商业使用权。在发布产品或分发生成内容之前,请审查所有适用的许可证。
YuE2 为何重要
YuE2 的主要贡献并不只是又一个文本到歌曲的检查点模型。它提出了一种更可控的生成音乐抽象:先用符号作曲,再用声音创作。乐谱让系统更容易检查,支持确定性或半确定性实验,并为人类和智能体提供统一接口。
对于开发者来说,这开启了多种实用工作流:批量渲染不同编曲版本、根据音乐不变量评估修改结果、构建对话式歌曲创作工具,以及保留每个音频版本背后的推理产物。借助一块支持 BF16、拥有 24 GB 显存的 GPU 和已发布的模型,YuE2 提供了一条少见的开放路径,能够从歌词提示词走向可编辑、可复现的音乐制作。
来源
multimodal-art-projection/YuE: YuE2:基于符号规划、零样本翻唱和智能体音乐编辑的前沿音乐生成。