YuE2:基于可编辑乐谱与 AI 智能体的开放音乐生成

YuE2 将歌词和风格提示转换为可编辑的音乐乐谱、前沿品质的歌曲、零样本翻唱作品,并支持由智能体驱动的修改。

YuE2:基于可编辑乐谱与 AI 智能体的开放音乐生成

大多数 AI 音乐生成器都将作曲过程隐藏在一次性的“提示词到音频”操作之后。这让它们使用起来很方便,却难以控制:如果和声不对、旋律出现偏移,或编曲需要调整,通常只能重新生成全部内容,然后期待结果更好。

YuE2 采取了不同的方法。它首先创建一份明确且可编辑的音乐方案,其中包含旋律和和弦信息,然后将该方案渲染为完整的立体声录音。最终得到的是一个开放的音乐生成系统,不仅用于创作,还支持零样本翻唱、基于乐谱的编辑以及智能体工作流。

YuE2 有何不同?

YuE2 支持三种相关工作流:

  1. 创作: 提供歌词和风格提示,然后生成乐谱与完整歌曲。
  2. 翻唱生成: 转录源录音,保留其旋律,并以全新风格重新诠释。
  3. 智能体编辑: 让人类或 AI 智能体在再次渲染前修改和声、旋律、歌词、速度、乐器配置或歌曲结构。

其核心理念是白盒音乐流水线。YuE2 不把音频视为不透明的最终产物,而是公开中间创作过程,使其能够被检查、播放、修改并重新生成。

仓库报告称,YuE2 在 WildSongBench 上的表现可与 Suno v5 和 v6 竞争。在评估设置中,best-of-8 配置达到 6.9632 SongBench Avg,是目前观察到的最高平均值。该基准包含 192 条提示词,但作者指出,顶尖系统之间的差距较小,尚不足以证明统计显著性。

从歌词到可编辑乐谱

该架构将自回归/非自回归混合 Transformer 模型骨干与流匹配和变分自编码器结合起来:

  1. 模型以自回归方式预测符号方案和语义音乐 token。
  2. 使用流匹配生成声学潜变量。
  3. 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:基于符号规划、零样本翻唱和智能体音乐编辑的前沿音乐生成。