跳到主要內容

【2026 最新】YuE2 本機音樂教學:7 步用可編輯 ABC 樂譜做成人聲歌曲

最後更新: ·
YuE2 本機音樂教學:ABC 樂譜編輯與完整人聲歌曲生成

你想用 AI 寫歌,真正卡住的往往不是「生不出聲音」。如果手上的工具只交付音訊、沒有可編輯的符號層,副歌旋律想留、和弦想換、速度想慢一點時,通常只能重新生成。這篇 YuE2 本機音樂教學要處理的,就是這個「只有成品、沒有工程檔」的痛點。

YuE2 於 2026 年 9 月公開;在預設 cot="full"工作流裡,它會把歌詞與風格先轉成可讀的 ABC notation(用純文字記旋律、節奏與和弦的樂譜格式),再生成一軌包含人聲與伴奏的 48 kHz 立體聲混音。本文專為第一次碰本機音樂模型的讀者寫:不假設你懂樂理,帶你從硬體與授權檢查、Prompt、ABC 樂譜、改和弦、重新渲染,一路走到可重跑的 A/B 驗收。

本文固定在 2026 年 9 月 12 日的官方 GitHub commit 88da114、YuE2-3B revision 29b3558與預設 YuE2-Vae revision 9a94e1d。AlphaLab 這次只在 macOS Python 3.9.6 執行官方的免 GPU ABC 檢查器;完整歌曲生成依官方支援路徑整理,沒有把未執行的音訊渲染寫成「實測」。

先說結論:YuE2 把「抽歌」變成「先看藍圖,再錄音」

一句話記住:本文採用的 YuE2 full路徑=可修改的 ABC 音樂藍圖+依藍圖生成的完整錄音。

  • 適合你:有 Linux 工作站、支援 BF16 的 NVIDIA GPU,想保留旋律與結構控制,願意用文字檔管理每個版本。
  • 先別急著下載:官方支援起點是 24 GB VRAM,模型權重採 CC BY-NC 4.0;商業案不能把「可下載」誤讀成「已取得商用授權」。
  • 最小成功交付:一份原始 score.abc、一份改過的 edited.abc、兩個各自完整的輸出資料夾,以及一張不看檔名也能評分的 A/B 記錄。
YuE2 本機音樂教學的 full 流程:風格與歌詞先變成 ABC 樂譜,再經語意 token、聲學 latent 與 VAE 產生 FLAC
full路徑,把 ABC 想成錄音前的施工圖:你可以先檢查、複製與修改,再決定要不要花 GPU 時間重做整首歌。

YuE2 是什麼?四個階段看懂「樂譜先行」

依官方生成指南,本文採用的 full路徑可拆成 plan()generate_semantic()synthesize()decode()。白話翻譯就是:先寫譜、再決定怎麼唱與演奏、再形成聲學表示,最後由 VAE 解碼器輸出聲音;off模式則跳過 symbolic plan。

這裡最重要的不是模型術語,而是使用 cot="full"cot="melody"時,plan 會留下 score.abc。一般一句 Prompt 出歌像請樂團直接交母帶;full則像先拿到旋律與和弦的控制草案。你能看拍號、速度、調性、段落、歌唱旋律與和弦,改完再把新譜送回同一個生成器。

這份 ABC 是 YuE2 限定格式的控制草案,不是能表示任意編制的完整 DAW 工程:VocalIns是單音旋律線,後者可代表器樂主題或 solo;和聲以 chord symbols 表示。依本文固定版本的官方 save_artifacts()清單,音訊交付是單一完整立體聲 audio.flac;本文的「人聲與伴奏」都指同一混音內的內容,不把它寫成獨立 stems。

YuE2 官方架構圖,顯示 full 路徑的 ABC symbolic score 經 semantic tokens、acoustic latents 與 VAE decoder 變成 48 kHz generated audio
YuE2 官方架構圖:在 symbolic-planning 路徑,可編輯樂譜是生成鏈的上游控制層,不是音訊完成後才做的轉錄。圖片來源:YuE2 官方 GitHub。

官方專案頁的 From score to song展示把音訊播放器、五線譜與 Raw ABC 放在同一個檢視中。這個介面很適合先建立直覺:聽到某段不合意時,不只寫「再來一次」,而是回頭定位速度、段落、旋律或和弦。

AlphaLab 重繪的 YuE2 驗收檢視,顯示生成音訊、symbolic score、Raw ABC、歌詞與風格提示
AlphaLab 依官方 From score to song 的資訊結構重繪:先用時間碼找段落,再回到小節、和弦與旋律定位問題。

開始 YuE2 本機音樂教學前:先過硬體與授權 4 關

第 1 關:是不是官方支援的運算環境?

截至 2026 年 9 月 12 日,官方 GitHub quick start 列出的路徑是 Linux、Python 3.12、支援 BF16 的 NVIDIA GPU、24 GB VRAM;Hugging Face 的資源頁另建議保留 24 GB 可用主記憶體。先在目標工作站執行:

nvidia-smi
python3.12 --version
free -h
df -h .

安裝 PyTorch 後,再確認 CUDA 與 BF16:

python - <<'PY'
import torch
print(torch.cuda.get_device_name(0))
print("BF16:", torch.cuda.is_bf16_supported())
PY

官方在 RTX 4090 24GB、PyTorch 2.10、Transformers 4.57.6、無量化與預設 YuE2-Vae 下,對 32 個 warm full requests 報告平均 71.04 秒 pipeline time/214.85 秒音訊、峰值 11.18 GiB;時間排除首次 path resolution 與儲存。另一次 maximum-context 測試峰值為 14.08 GiB。這是特定條件的量測,不是較小顯卡一定成功的承諾。

第 2 關:磁碟與第一次下載

模型會在第一次 from_pretrained() 時從 Hugging Face 下載。截至本文快照,YuE2-3B倉庫約 6.79 GiB,預設 YuE2-Vae約 0.49 GiB;虛擬環境、套件、快取與每次生成的 token、latent、FLAC 還會繼續佔空間。先看 df -h .,並把 Hugging Face cache 放在你確定有空間的磁碟。

第 3 關:程式碼與模型權重不是同一張授權

在本文固定的 commit,第一方程式碼、文件與 repository 內的 Agent skill 採 Apache 2.0YuE2-3BYuE2-VaeYuE2-Vae-legacy的 checkpoint 權重則採 CC BY-NC 4.0;若分享這些權重或其修改版,歸屬資訊須標示 YuE2、模型名稱與來源網址。若模型使用或生成工作流主要指向商業利益,現有權重授權不是一張可直接拿來商用的通行證,官方 README 提供 licensing contact。

還有一個容易踩到的版本差:GitHub 的 yue2-v0.1.6發行包早於 main branch 的程式碼重新授權,包內仍附非商用授權;本文因此從固定的後續 main commit 安裝。即使套件版號同為 0.1.6,也要以實際下載物附帶的授權檔為準。

第 4 關:素材權利也要獨立成立

模型授權不會替你取得歌詞、旋律、錄音或聲音肖像的權利。第一輪請用自己寫的短歌詞,讓 YuE2 生成新的旋律;若另外供應 ABC 或來源錄音,再確認你有權使用與改編。做 cover 時,另外保存來源、允許的用途與改編範圍。這不是行政附件,而是決定作品能否交付的輸入條件。

YuE2 本機音樂教學:7 步做出第一組「原版+改編版」

第 1 步:下載並固定版本

痛點:main branch 仍在更新,今天成功不代表下週得到相同依賴。解法:先鎖定本文查核過的 commit:

git clone https://github.com/multimodal-art-projection/YuE.git
cd YuE
git checkout 88da114a67df892af0329472073b96a5ef700b93
git rev-parse HEAD

最後一行應回傳同一個 40 字元 commit。若你改用更新版本,把新 hash 寫進本次作品的製作記錄,不要只寫「最新版」。

第 2 步:建立乾淨的 Python 環境

python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install .

驗收方式:python -m pip show yue2-infer應顯示版本 0.1.6。套件固定了 PyTorch、Transformers、Hugging Face Hub 等依賴版本,先不要為了「看起來更新」逐一升級。

第 3 步:把風格與歌詞寫成一份 request

複製 examples/song.jsonmy-song.json,保留段落標籤,讓風格欄負責語言、曲風、主唱特徵、樂器與速度。以下歌詞是本文新寫的最小示意:

{
  "id": "night-window",
  "style": "Mandarin, city pop, warm female vocal, electric piano, synth bass, light drums, 92 BPM",
  "lyrics": "[Verse]\n街燈慢慢退到身後\n晚風把沉默吹走\n\n[Chorus]\n把未完成的夢留在窗口\n天亮以前我們一起唱完這首",
  "cot": "full",
  "seed": 831001
}

驗收方式:先確認 JSON 能讀取:python -m json.tool my-song.json > /dev/null。歌詞改語言或增刪段落時,後面若沿用舊譜,也要重新檢查音節與段落是否仍對得上。

第 4 步:先生成基準版並保留完整 artifacts

python examples/generate.py \
  --request my-song.json \
  --revision 29b3558dd46954a0cd9021dc76d5c91864a0f1c7 \
  --vae-revision 9a94e1d0ea9f8087e98f77fa88df4a4068104d2a \
  --output outputs/night-window-base

第一次執行會下載模型。成功後不要只拿走 audio.flacsave_artifacts()還會保存適用時的 score.abcplan.json、semantic tokens、latent.npy、有效設定、timings、模型身分與 integrity 記錄。打開 result.json,確認兩個 truncated旗標都不是被截斷的狀態,再進下一步。

上述 model 與 VAE revision 是本文日期核對的 Hugging Face 快照;更新文章時要重新驗證,不能把這兩串 hash 當成永久最新版。

第 5 步:用 60 秒讀懂 ABC 樂譜

例如官方 examples/score.abc的檔頭:M:4/4是拍號、L:1/16是基本音符長度、Q:1/4=88是速度、K:C是 C 大調。V: VocalV: Ins分別是歌唱旋律與器樂旋律;引號裡的"C""G7"是和弦,後面的E2G2才是音高與時值。

把它當成「一行一行可做 diff 的樂譜」。先複製,不要覆蓋原檔:

cp outputs/night-window-base/score.abc edited.abc
python skills/yue2-music/scripts/abc_tools.py inspect edited.abc \
  --output edited-inspection.json

第 6 步:只改和弦,先驗證旋律沒被誤傷

初學者最穩的第一刀,是把一個簡單三和弦改成同根音七和弦,例如把某小節的 "C"改成"Cmaj7",旋律音符與時值全部不動。官方已附一對八小節範例,先用它熟悉檢查器:

python skills/yue2-music/scripts/abc_tools.py compare \
  examples/score.abc examples/score-jazz.abc \
  --output melody-invariants.json
python -m json.tool melody-invariants.json

AlphaLab 在上述固定 commit 以 macOS Python 3 執行這個免 GPU helper,結果為 match: truedifferences: []。它只證明 Vocal/Ins 的音高、起音、時值、拍號與速度相同,並刻意允許和弦不同;它不證明新和弦一定好聽,也不證明生成音訊會逐樣本相同。

換成自己的檔案後再跑一次:

python skills/yue2-music/scripts/abc_tools.py compare \
  outputs/night-window-base/score.abc edited.abc \
  --output night-window-invariants.json

第 7 步:用新譜重新渲染,永遠寫進新資料夾

python examples/generate.py \
  --request my-song.json \
  --abc-file edited.abc \
  --cot full \
  --revision 29b3558dd46954a0cd9021dc76d5c91864a0f1c7 \
  --vae-revision 9a94e1d0ea9f8087e98f77fa88df4a4068104d2a \
  --output outputs/night-window-edited

官方範例會拒絕已存在的輸出目錄,因此完成的基準版與改編版不會互相覆寫;但 examples/generate.py不會自動替推論例外保存失敗紀錄,失敗時要另存終端 log,或改用會寫入 failure.jsonyue2 generate CLI。完成後用官方 listening helper 建立本機比較頁:

python skills/yue2-music/scripts/listen.py \
  outputs/night-window-base \
  outputs/night-window-edited \
  --output outputs/night-window-comparison

full、melody、off 怎麼選?不要把三種模式混成一個問題

YuE2 full、melody、off 三種模式比較,說明樂譜內容、適合任務與驗收重點
full給旋律與和弦最多顯式控制;melody讓伴奏保留較多生成空間;off適合當直接生成基準。
  • full你要創作新歌、保留旋律與和弦,或比較「只改和聲」前後差異。
  • melody你做 cover 或跨曲風改編,希望固定旋律、讓伴奏重新發展。官方提醒,模式本身不會自動刪掉 ABC 裡的和弦;要自由配器,輸入譜也要先移除和弦。
  • off你要用官方「不經 symbolic plan」的模式建立一句 Prompt 直接出歌的對照組。

要做同題 A/B,可讓 request 裡的歌詞、風格與 seed 完全相同,只用命令列覆寫模式:

python examples/generate.py --request my-song.json \
  --cot full \
  --revision 29b3558dd46954a0cd9021dc76d5c91864a0f1c7 \
  --vae-revision 9a94e1d0ea9f8087e98f77fa88df4a4068104d2a \
  --output outputs/ab-full
python examples/generate.py --request my-song.json \
  --cot off \
  --revision 29b3558dd46954a0cd9021dc76d5c91864a0f1c7 \
  --vae-revision 9a94e1d0ea9f8087e98f77fa88df4a4068104d2a \
  --output outputs/ab-off

怎麼做盲聽 A/B?先定評分表,再播放

不要先看哪個是full。請另一位測試者把兩個 audio.flac隨機標成 A/B,評完才揭曉。每項用 1~5 分,並寫一句可定位到時間點的理由:

  1. 結構一致性:Verse/Chorus 是否在預期位置,段落是否完整,結尾是否合理收束。
  2. 人聲瑕疵:是否有漏字、重複字、不自然拉音、突然換聲線;把問題標成 01:24這種時間碼。
  3. 編曲可編輯性:被指定修改的和弦是否聽得到;要求保留的旋律、速度與段落是否仍可辨認。
  4. 生成成本:從每個輸出資料夾 result.jsontiming欄位記錄總時間,並記 GPU、VRAM、commit、模型與 VAE revision。

同一 seed 只是縮小變因,不保證跨 GPU、套件版本或抽樣設定得到同一 waveform。真正公平的比較是:固定能固定的條件、保留所有候選、先寫評分規則,再決定你偏好哪一版。

官方 benchmark 怎麼看?「分數領先」不等於每首都贏

2026 年 9 月 12 日的官方 WildSongBench 記錄涵蓋 192 個 prompts、17 組系統設定,表格列出 9 個自動評估欄位;其中包含總平均與其 Musicality 子項,不能視為 9 個彼此獨立的測量。YuE2 best-of-8 的 SongBench Avg 是 6.9632,為表中最高觀察平均;標準 YuE2 是 6.7316。標準版從兩個候選選較低 PER;best-of-8 先看 SongBench Musicality、再看 prompt control、最後看 PER,從八個候選選擇。其他 baseline 也保留不同候選與交付協議,因此這是官方記錄的系統比較,不是 matched-compute 實驗。

YuE2 WildSongBench 官方快照比較:標準版從 2 個候選選出 6.7316,best-of-8 從 8 個候選選出 6.9632
兩組的候選數與挑選規則都不同,平均分也不同;看排行榜前先對齊生成與選樣成本。

不同模型也在不同指標領先,官方文件明說小幅平均差距不構成統計顯著性證明,更不等於普遍的人類偏好。把 benchmark 當成「值得下載試做」的訊號即可;你的歌仍要回到上一節的盲聽、歌詞完整性與改譜後是否真的聽得出來。

可編輯性也有一組較直接、但仍屬官方的有限證據:一項涵蓋 10 首作品、2 個 seeds、380 首完整錄音的 paired study 中,local changed-note melody attainment 從 0.0083 升至 0.9375;changed-duration harmony attainment 從 0 升至 0.8313。兩者單位不同、不能合併成一個分數,文件也沒有把差距表述為統計顯著性。這支持「樂譜可提供選擇性控制」,不支持「未修改區域的 waveform 完全不變」。

新手容易踩的 6 個坑

  1. 把 GitHub main、release wheel 與 Hugging Face 卡片混用:本文固定 commit 與 0.1.6原始碼;若改來源,連模型與 VAE revision 一起記錄。
  2. 只備份 FLAC:沒有 ABC、request、tokens、latents、timings 與 model identity,就很難知道下一版到底改了什麼。
  3. 在原檔上直接改:保留原始 score.abc,每次另存 edited-v2.abc,用 diff 與 helper 確認不該動的部分。
  4. 看到 match:true就宣布成功:這只驗證 symbolic invariants;和弦是否自然、人聲有沒有漏字,仍要聽完整音訊。
  5. 拿不同 decoder 的結果比模型:日常聆聽預設是 YuE2-Vae;官方 benchmark 用 YuE2-Vae-legacy。比較 decoder 時應重解碼同一份 latent。
  6. 忽略 NC 授權:把程式碼可商用,誤推成 checkpoint 與商業歌曲都已獲同樣授權,會漏掉最關鍵的交付條件。

YuE2 常見問題 FAQ

YuE2 是免費的嗎?

截至本文快照,官方 GitHub 原始碼可公開存取,三個 Hugging Face 模型頁也顯示為 public/ungated。本機執行仍需自付 GPU、電力、儲存與運算成本,且權重受 CC BY-NC 4.0 約束。

Mac 可以照這篇生成完整歌曲嗎?

本文不把 Mac 列為已驗證的完整生成路徑。目前官方文件描述的是 Linux+支援 BF16 的 NVIDIA GPU;Mac 可先閱讀、修改 ABC,並執行本文的純 Python helper。

一定要 24 GB VRAM 嗎?

官方支援起點就是 24 GB GPU。雖然官方特定測試的峰值低於 24 GiB,這不等於每個長度、driver、依賴與顯卡組合都能用更小 VRAM 完成;新手應以文件化配置規劃。

ABC 跟 MIDI 一樣嗎?

不一樣。ABC 是可讀、可 diff 的文字記譜;MIDI 是事件資料格式。YuE2 的主要編輯介面是 score.abc,需要五線譜或其他交換格式時,可用相容工具另行渲染或轉換。

可以只換和弦、不換主旋律嗎?

可以在 symbolic score 層指定這樣做。先只改引號內的和弦,再用 abc_tools.py compare檢查旋律與節奏不變;最後仍要聽音訊,因為 symbolic match 不保證生成表演完全一致。

可以拿自己的歌做 cover 嗎?

可以走官方 SheetSage2 → melody ABC → cot="melody"流程。先檢查轉錄錯誤與歌詞段落;如果希望伴奏自由改編,輸入的 melody ABC 不要殘留原和弦。

改譜後會保留原本聲線嗎?

不保證。官方 editing guide 明確指出,每次修改都會重新生成完整錄音;即使未改的譜面相同,也不保證歌唱、音色或 waveform 相同。

生成的歌曲可以直接商用嗎?

不能只憑「開放權重」三個字下結論。MODEL_LICENSE明文規範的是三個 checkpoint 權重;截至 2026 年 9 月 12 日,本文查核的 README、MODEL_LICENSE 與模型卡沒有另給「生成歌曲」一張獨立商用許可。若模型使用或生成工作流主要指向商業利益,不應把 Apache 2.0 的原始碼授權推及權重或輸出,應先向官方確認或取得適用安排;歌詞、旋律、來源錄音等權利仍須另行成立。

給新手的 7 個重點

  1. 先過 Linux、NVIDIA BF16、24 GB VRAM、主記憶體與磁碟檢查。
  2. 固定 Git commit、模型 revision、VAE revision 與 seed。
  3. 用自有短歌詞,從 cot="full"建立第一份可編輯 score。
  4. 把 ABC 當工程檔:原版不覆蓋,每次修改都另存。
  5. 先跑 symbolic compare,再花 GPU 時間重新生成。
  6. 盲聽要先寫評分規則,並保留失敗與被截斷的版本。
  7. 程式碼 Apache 2.0 不等於權重可商用;交付前分開查授權。

接著閱讀

左右滑動查看更多推薦

結語:先做一首能被修改的短歌

YuE2 真正有意思的地方,不是又多一個「一句話出歌」按鈕,而是讓 fullmelody路徑留下可檢查、可複製、可 diff 的中間成果。回到開頭的公式:先有 ABC 藍圖,再有完整錄音;控制力不是來自 Prompt 寫得更玄,而是你能指出哪一小節、哪個和弦、哪段旋律需要改。若想找更多同類工作流,可從 AlphaLab 的 AI 創作與設計專區開始。

第一個週末專案不要挑五分鐘大作。先寫一段短 Verse+Chorus,生成後從 score.abc確認實際小節與音節配置,只換一組和弦,跑完 symbolic compare,再盲聽兩個完整輸出。當你能把「我覺得 B 比較好」改寫成「01:24 的副歌和聲變了、主旋律仍在、沒有漏字」,你就真的從抽卡跨進了可控的 AI 音樂製作。想把這套版本管理與驗收思維延伸到更多 AI 工作流,也可以接著看 AlphaLab 的 線上課程

ALPHALAB 社群

有問題?來 Telegram 聊

和 Terry、編輯、其他網友一起討論這篇文章。提問、分享觀點,回覆更即時。

加入 Telegram 討論

📩 訂閱 AlphaLab 電子報

每週最多三封:一封 Weekly 週報與最多兩封關鍵 Alpha Signal。

我們不會 spam,隨時可退訂。