分享程式代碼相關筆記
目前文章總數:249 篇
最後更新:2026年 09月 12日
過去使用文字生成圖片時,只要描述主體、場景與畫風,就有機會得到可用的畫面。
但一首完整音樂同時 包含曲風、速度、調性、樂器、人聲、歌詞、段落與時間 ,控制條件太多了。
一首歌
├─ 整體設定:曲風、情緒、年代感、樂器與製作品質
├─ 音樂資訊:BPM、拍號、調性與歌曲長度
├─ 時間結構:Intro、Verse、Chorus、Bridge、Outro
├─ 人聲內容:語言、歌詞、咬字、唱法與和聲
└─ 隨機變化:Seed、歌曲規劃取樣與擴散取樣
如果只輸入 a pop song,模型必須自行猜測幾乎所有條件;每次產生的歌曲自然會有很大的差異。
本篇的目標不是一次抽到完美歌曲,而是說明 如何調整參數來創造音樂 ,並說明 ACE-STEP 1.5 ComfyUI 工作流。
ACE-STEP 1.5 是開源音樂生成模型,ComfyUI 已提供原生工作流與核心節點。
它採用混合式架構:先由 Language Model 整理歌曲藍圖,再交給 Diffusion Transformer(DiT)完成音訊合成。
Tags + Lyrics + 音樂參數
↓
Language Model:理解需求、規劃歌曲與產生 Audio Codes
↓
Conditioning + Empty Audio Latent
↓
Diffusion Transformer:生成音訊 Latent
↓
VAE Decode:還原為可播放的 Audio
這種設計的重點,是讓長篇歌曲的結構規劃與音訊生成各自負責不同工作。
因此它不只是「文字轉聲音」,而是能接收 歌詞、段落、BPM、拍號、調性與語言 等條件的完整音樂生成流程。
TextEncodeAceStepAudio1.5 是本篇最重要的條件編碼節點。
它會接收 CLIP、Tags、Lyrics 與音樂參數,最後輸出 CONDITIONING 給後續的取樣器。
| 輸入類型 | 主要用途 | 範例 |
|---|---|---|
| tags | 描述整首歌的整體聲音 | synthwave, nostalgic, female vocal, analog synth |
| lyrics | 歌詞與歌曲發展順序 | [Intro]、[Verse]、[Chorus]、[Outro] |
| bpm | 每分鐘拍數 | 90、120、128 |
| duration | 希望生成的秒數 | 30、60、120 |
| timesignature | 拍號選項 | 2、3、4、6 |
| language | 歌詞語言 | en、zh、ja、ko 等 |
| keyscale | 調性 | C major、A minor、E minor |
| seed | Language Model 規劃階段的隨機種子 | 0、123456 |
需要注意:這個節點負責準備歌曲條件,並不是單靠它就能直接輸出 WAV 或 MP3。
後方仍需連接模型取樣、Audio VAE 解碼與音訊輸出節點。
官方 ACE-STEP 教學將 Caption,也就是 ComfyUI 節點中的
「tags」 視為整首歌的 「整體畫像」
「lyrics」 則像歌曲沿著時間前進的 「腳本」
Tags:曲風、情緒、樂器、人聲、音色、製作風格
Lyrics:段落順序、真正要演唱的文字、段落能量與演奏提示
例如想製作一首懷舊城市流行歌曲,可以這樣分工:
tags:
city pop, nostalgic, warm female vocal, electric piano,
clean guitar, melodic bass, analog synthesizer, polished studio mix
lyrics:
[Intro - instrumental]
[Verse 1]
夜色落在街角
霓虹映著微笑
[Chorus - uplifting]
沿著風向前奔跑
把昨天輕輕忘掉
補充:若 Tags 寫「安靜的鋼琴獨奏」,Lyrics 卻要求 [Guitar Solo - distorted],兩邊的條件互相衝突 生成品質可能會下降
為了降低第一次生成的時間與顯示記憶體壓力,本篇先做一段 60 秒的中文 City Pop,再逐步調整。
| 項目 | 基準設定 |
|---|---|
| 曲風 | City Pop / Synth Pop |
| 人聲 | Warm female vocal |
| BPM | 112 |
| 拍號 | 4 |
| 調性 | A minor |
| 語言 | zh |
| 長度 | 60 秒 |
| Batch Size | 1 |
| 用途 | 教學測試,非最終母帶 |
後續比較時會固定大多數參數,每一輪只改一個變因,避免聽完仍不知道差異來自哪裡。
以下是本次預計測試的環境:
| 項目 | 本次環境 |
|---|---|
| GPU | NVIDIA GeForce RTX 5070(12 GB VRAM) |
| CPU | Intel(R) Core(TM) i7-8700 CPU @ 3.20GHz,3192 Mhz,6 個核心,12 個邏輯處理器 |
| RAM | 48 GB |
| OS | Microsoft Windows 10 專業版 |
| 所需模型 | acestep_v1.5_turbo.safetensors |
| qwen_0.6b_ace15.safetensors | |
| qwen_1.7b_ace15.safetensors | |
| ace_1.5_vae.safetensors |
※音樂生成模型 GPU 12 VRAM 是完全可以支援的,相對於生成影片消耗的算力門檻低很多
ACE-STEP 1.5 已整合為 ComfyUI 原生節點 ,因此這篇基本的 Text-to-Music 工作流可以直接從 Template 匯入
開啟 ComfyUI 後,左側選擇模板 (Template) -> 音頻 -> ACE-Step 1.5 音樂生成工作流程
官方工作流可整理成以下4個區塊:
在 step3 之後則是輸出保存音樂的相關節點整合,因此核心為此 4 大塊
| 工作流區塊 | 功能 |
|---|---|
| Markdown Note | (Model Link) 補充下載模型、存放位置 |
| Step 1 - Load models | 讀取模型,與加載 |
| Step 2 - Duration | 設定音樂、曲子的長度 |
| Step 3 - Prompt | TextEncodeAceStepAudio1.5 節點配置,也是歌詞曲風的核心節點 |
開啟 ACE-Step 1.5 模板後,如果是第一次使用會需要安裝對應的擴充節點
VAEDecodeAudio
SaveAudioMP3
左側菜單 -> 管理擴展工具 -> 節點輸入上述兩個關鍵詞的工具 -> 依序安裝完成
安裝完成後重啟 ComfyUI 的 Docker Container 使其正確啟動應用
預設會出現所需模型安裝提示
以下是所需模型
| 模型名稱 | 對應目錄 |
|---|---|
| acestep_v1.5_turbo.safetensors | models/diffusion_models/ |
| qwen_0.6b_ace15.safetensors | models/text_encoders/ |
| qwen_1.7b_ace15.safetensors | models/text_encoders/ |
| ace_1.5_vae.safetensors | models/vae/ |
並且附上對應的 HF 指令,便於快速下載, –local-dir 為路徑,可依照自己的環境調整
hf download Comfy-Org/ace_step_1.5_ComfyUI_files "split_files/diffusion_models/acestep_v1.5_turbo.safetensors" --local-dir "H:/"
hf download Comfy-Org/ace_step_1.5_ComfyUI_files "split_files/text_encoders/qwen_0.6b_ace15.safetensors" --local-dir "H:/"
hf download Comfy-Org/ace_step_1.5_ComfyUI_files "split_files/text_encoders/qwen_1.7b_ace15.safetensors" --local-dir "H:/"
hf download Comfy-Org/ace_step_1.5_ComfyUI_files "split_files/vae/ace_1.5_vae.safetensors" --local-dir "H:/"
最後將上述下載的模型放進對應的目錄下
基本上模型存放正確,並安裝正確節點後,可以從 Step 2. Song Duration 開始設定
預設音樂長度為 120 秒,因此要考慮的是音樂的歌詞長度盡量符合
在調適的初期,可以將 Seed 設定為 Fixed ,當曲風符合需求後,再開始調整此種子參數,進行變化
Tags 建議由「曲風 → 情緒 → 樂器 → 人聲 → 製作感」依序描述,先從 5~10 個彼此一致的特徵開始。
city pop, synth pop, nostalgic and hopeful,
warm female vocal, electric piano, clean guitar,
melodic bass, analog synthesizer, polished studio mix
※避免一開始堆入大量互相衝突的詞,例如同時要求極簡鋼琴、重金屬失真、無人聲與女聲主唱。
描述越短,模型創作空間越大;描述越明確,方向通常越集中,但不代表每個詞都會百分之百被執行。
接著下方的部分是 Lyrics ,不單純只放歌詞,也負責描述歌曲隨時間發展的段落。常用結構標記如下:
| 標記 | 用途 |
|---|---|
| [Intro] | 開場與氣氛建立 |
| [Verse] / [Verse 1] | 主歌與敘事推進 |
| [Pre-Chorus] | 進入副歌前的能量堆疊 |
| [Chorus] | 副歌與情緒高潮 |
| [Bridge] | 橋段、轉折或旋律變化 |
| [Instrumental] | 純樂器段落 |
| [Outro] | 收尾 |
| [Fade Out] | 提示淡出結尾,但效果仍具有隨機性 |
本篇測試歌詞:
[Intro - instrumental]
[Verse 1]
夜色落在街角
霓虹映著微笑
末班車緩緩經過
帶走白天的喧鬧
[Pre-Chorus - building energy]
風把回憶輕輕翻頁
我聽見熟悉的心跳
[Chorus - uplifting]
沿著風向前奔跑
讓星光陪我到破曉
就算明天還很遙遠
今晚也不要停靠
[Instrumental - electric piano solo]
[Outro - fade out]
把未完成的願望
留給下一次破曉
同一段落的每行字數不要差距過大,並在段落之間保留空行,能讓節奏與換段提示更清楚。
※段落與字與字之間的空白,會影響AI生成的停頓,與句子切割
以下是本篇範例的測試參數
| 參數 | 本篇數值 | 說明 |
|---|---|---|
| bpm | 112 | 中等速度,適合本篇 City Pop 測試 |
| duration | 60 | Text Encoder 預期的歌曲秒數 |
| timesignature | 4 | 以四拍系統生成 |
| language | zh | 中文歌詞 |
| keyscale | A minor | A 小調 |
BPM 的可選範圍雖然很廣,仍應選擇符合曲風的合理速度。數值越大曲風越輕快。
更下方的參數主要影響 語言模型產生歌曲規劃:
| 參數 | 建議起始值 | 作用 |
|---|---|---|
| generate_audio_codes | true | 啟用 LLM 生成 Audio Codes;文字生音樂時建議開啟 |
| cfg_scale | 2.0 | 提高後通常更貼近文字條件,但過高不一定更自然 |
| temperature | 0.85 | 越低越保守,越高變化越大 |
| top_p | 0.9 | 限制 Language Model 的候選 Token 範圍 |
| top_k | 0 | 0 代表先沿用官方預設,不額外限縮 Top-K |
| min_p | 0.0 | 先維持預設值 |
※generate_audio_codes 會增加處理時間,但在純文字生成音樂時通常能提升結果品質。
Temperature、Top-P、Top-K 與 Min-P 是 Language Model 的取樣控制,不是 KSampler 的 Sampler 或 Scheduler,兩者不要混為一談。
K採樣器第一次測試可直接沿用官方 Template 的參數:
| 參數 | 起始值 |
|---|---|
| steps | 8 |
| cfg | 1.0 |
| sampler_name | euler |
| scheduler | simple |
| denoise | 1.0 |
以下是第二部分,最終生成結果
基本上歌詞 + 輸出長度 + 提示詞合理,AI的精準度都會很高,至於感情成分見仁見智。
本篇測試歌詞:
[Intro - instrumental]
[Verse 1]
夜色落在街角
霓虹映著微笑
末班車緩緩經過
帶走白天的喧鬧
[Pre-Chorus - building energy]
風把回憶輕輕翻頁
我聽見熟悉的心跳
[Chorus - uplifting]
沿著風向前奔跑
讓星光陪我到破曉
就算明天還很遙遠
今晚也不要停靠
[Instrumental - electric piano solo]
[Outro - fade out]
把未完成的願望
留給下一次破曉
若無法從網頁撥放可以點擊下載
很多時候在產出作品或影片時,並不需要人聲,只需要背景音樂,ACE-STEP 1.5 也可以做到
只要將歌詞的部分 清空 然後生成,即可獲得無人聲的伴奏音樂
以下最終生成結果:
若無法從網頁撥放可以點擊下載
可能原因:
| 1. ComfyUI 版本過舊 |
| 2. 使用 Stable 版,但該核心節點尚未進入目前 Stable Release |
| 3. 更新不完整,或啟動時有核心模組載入失敗 |
| 4. 匯入的是 ACE-Step 1.0 工作流 |
先查看啟動記錄,再依官方更新方式升級 ComfyUI。
※ 不要為補一個同名節點,隨意安裝來源不明的 Custom Node
通常所使用的都是 ComfyUI 原生節點,具有一定的可靠性、穩定性。
官方節點提供 zh 語言選項,但多語言支援不等於每個字都能完美對準。
建議排查順序:
| 1. language 是否為 zh |
| 2. 每行歌詞是否過長 |
| 3. 同一段落行長是否差距太大 |
| 4. 歌詞總量是否超過 Duration 能容納的範圍 |
| 5. 中英文、數字與特殊符號是否過度混用 |
| 6. 是否堆疊過多 Meta Tags |
| 7. 更換 Seed 重新比較 |
品牌名、人名與罕見讀音可先改成較容易朗讀的同音字或留白,最後再評估是否以專業人聲重新錄製。
先確認 Lyrics 是否在短秒數內塞入過多段落,或長秒數卻只提供極少的時間結構。
即使加入 [Outro]、[Fade Out],它們仍是生成提示,並非 DAW 中保證精確執行的自動化指令。
最終發行前可在音訊軟體補做剪輯、淡入淡出與尾端殘響處理。
ACE-STEP 1.5 Turbo 有自己的模型蒸餾與工作流設定,不能直接沿用 Stable Diffusion 圖片生成「Steps 越高越好」的直覺。
而且工作流裡有兩個容易混淆的 Guidance:
| 位置 | 參數 | 影響階段 |
|---|---|---|
| TextEncodeAceStepAudio1.5 | cfg_scale | Language Model / Audio Codes 條件規劃 |
| KSampler | cfg | Diffusion 音訊 Latent 取樣 |
先回到官方 Template 的預設值,再固定 Seed 單獨調整其中一項。
若兩個數值一起提高,可能造成條件過度約束、失真或音樂性下降。
技術上 可以輸出音訊,不代表法律、授權與發行規範 已自動處理完畢。
- 確認模型授權是否涵蓋預計的商業用途
- 不要在未取得同意時模仿可識別的真人歌手
- 歌詞、旋律、取樣素材與參考音訊都要確認來源
- 保留模型版本、Prompt、Workflow 與生成日期紀錄
- 發行前檢查使用平台對 AI 音樂的標示與權利政策
若作品會進入廣告、串流、遊戲或付費商品,建議另外做相似度檢查並諮詢熟悉所在地法規的專業人士。
本文是技術工作流教學,不構成法律意見。
這篇從 ACE-STEP 1.5 的基本概念開始,完成了 AIO 模型安裝、TextEncodeAceStepAudio1.5 條件設定、Audio Latent、KSampler、VAE Decode 與音訊保存。
真正影響成果的關鍵: 不是單純增加 Steps,而是讓 Tags、Lyrics、BPM、調性、語言與歌曲長度互相一致。
推薦優化順序:
1. 先用官方 AIO Template 成功生成 30~60 秒音訊
2. 固定參數,只更換 Seed 挑選方向
3. 精簡 Tags,排除互相衝突的描述
4. 整理 Lyrics 結構與每行長度
5. 再調整 BPM、Key、Temperature 與其他進階參數
6. 保存 Workflow 與原始音訊,最後交由 DAW 後製
下一步可以延伸研究:參考音訊控制、Cover、Repaint、LoRA 個人化,以及將生成結果送入 DAW 的自動化後製流程。