战场纯音乐-三风格-生成记录.md

古代战场 · 纯音乐三风格(YuE2 生成记录)

日期:2026-09-16 模型:YuE2-3B(+ YuE2-Vae)+ Demucs 4.1.0(人声分离) 机器:GPU 机 192.168.31.31(RTX 5060 Ti 16GB) 交付:3 首纯器乐,古风 2:33 / 哥萨克 3:04 / 8bit 2:10


一、交付清单

文件时长格式说明
01-中国古风-古代战场-纯器乐.flac / .mp32:33 (152.8s)44.1kHz 立体声战鼓+唢呐+二胡+琵琶,带男声战吼合唱(已分离)
02-哥萨克风-古代战场-纯器乐.flac / .mp33:04 (183.7s)44.1kHz 立体声巴扬手风琴+巴拉莱卡+马蹄+鞭响+铜管
03-8bit电子风-古代战场-纯器乐.flac / .mp32:10 (129.9s)44.1kHz 立体声NES/FC 方波+三角波+噪声通道鼓,快速琶音
原始生成版/*.flac同上48kHz 立体声YuE2 直出原始版(未做人声分离),供对比

器乐轨是 44.1kHz —— Demucs 内部按 44.1kHz 处理,源头 48kHz 见「原始生成版」。


二、三首的风格提示词(生成用原文)

1) 中国古风

Epic ancient Chinese battlefield score, thunderous Chinese war drums and taiko, blaring suona and dizi,
erhu, pipa, guzheng, deep brass and low strings, male war-chant choir, galloping fast rhythm,
cinematic, ferocious, 138 BPM, instrumental

2) 哥萨克风

Cossack folk battle music, furious sabre dance tempo, bayan accordion, balalaika and domra,
male Cossack chorus shouting, whip cracks, galloping hoofbeats, brass fanfare, timpani,
wild and fierce, 152 BPM, instrumental

3) 8bit 电子风

8-bit chiptune battle theme, NES Famicom style, square and triangle wave leads, fast arpeggios,
noise channel drums, driving heroic fanfare, frantic and intense, 160 BPM, instrumental

歌词位(三首相同,走 [instrumental] 段落标签):

[intro]
[instrumental]

[verse]
[instrumental]

[chorus]
[instrumental]

[bridge]
[instrumental]

[outro]
[instrumental]

三、生成参数

参数值
模式cot=off(不做乐谱规划,直接生成)
semantic_max_tokens9000
attention_backendsdpa(本机必须,auto 会切 cuDNN 报错)
显存档16 GB + offload_ar=True + vae_decode=tiled + tile=384
seed古风 111111 / 哥萨克 222222 / 8bit 333333
输出48kHz 立体声 FLAC(YuE2 原生)

四、两个关键结论(纯器乐并不好做)

1. YuE2 没有"纯器乐"开关

翻遍运行时(yue2_infer-0.1.5 的 pipeline / tokenization / modeling),没有任何 instrumental 开关或分轨输出——它是歌曲模型,AR 阶段必然会生成"人声+伴奏"两路内容。唯一可用的手段是歌词位写段落标签 [instrumental]。

2. [instrumental] 标签效果不稳定,必须逐首验证

用 Demucs 把人声轨分离出来测能量(人声/器乐能量比):

曲目人声轨 RMS人声/器乐比判定
中国古风0.0788 (−22.1 dBFS)−4.9 dB❌ 有明显人声化内容
哥萨克风0.00025 (−72.0 dBFS)−57.4 dB✅ 基本无人生
8bit 电子风0.00019 (−74.2 dBFS)−57.1 dB✅ 基本无人生

同样写了 [instrumental],古风那首照样生成了人声化的男声战吼合唱(提示词里确实点名了 war-chant choir)。所以:"纯器乐"不能靠标签保证,必须生成后检测 + 分离。

有意思的交叉验证:SheetSage2 对古风的原始版和器乐版都转出 vocal_notes=0(器乐音符 428 / 374,和弦 92 / 94)。说明 Demucs 抓到的"人声"不是旋律性唱腔,而是合唱式/吟唱式的人声 —— 与"战吼合唱"的预期一致。两个判据不矛盾,只是量纲不同。

3. 解决办法:Demucs 后处理

对每首跑 htdemucs --two-stems=vocals,交付 no_vocals 轨。这样无论模型是否唱了,交付物都保证是纯器乐。代价:器乐轨采样率变 44.1kHz,且分离可能轻微影响人声频段附近的乐器(如唢呐/二胡的领奏)。


五、客观验收

指标古风哥萨克8bit
时长152.8s183.7s129.9s
生成耗时4.0 min4.8 min~4 min
峰值显存~9–12.9 GiB——
交付版人声残留已分离(≤ −57 dB 量级)−57.4 dB−57.1 dB

(Demucs 分离在 16GB 卡上与生成串行执行,避免显存冲突。)


六、复现命令

# 1) 生成(DSH 机,走 GPU 机 ComfyUI API)
python3 yue2-run.py --cot off --sem-mx 9000 --attn sdpa --seed 111111 \
  --lyrics-file yue2-battle/lyrics-instrumental.txt \
  --style "$(cat yue2-battle/style-cn.txt)" \
  --tag battle-cn-guofeng --outdir <输出目录>

# 2) 分离人声、取纯器乐轨(GPU 机)
bash /home/zyw/yue2-demucs.sh battle-cn-guofeng
#   -> /home/zyw/yue2-battle/<tag>-instrumental.{flac,mp3}
#   -> 同时投放到 ComfyUI/output/YuE2_battle/(便于相册与 /view)

脚本:yue2-battle-run.sh(三首串行驱动)、yue2-demucs.sh(分离+测量+导出)。


七、可以继续做的

下载此文件