音訊廣告歌技能
三個子模式。由當前專案的 audioKind 決定執行哪一個:
audioKind | 路由模型 | 計劃重點 |
|---|---|---|
music | Suno V5(預設)、Udio、Lyria 2 | 曲風 + 節奏 + 配器 |
speech | MiniMax TTS(預設)、Fish、ElevenLabs V3 | 指令稿 + 聲音 + 節奏 |
sfx | ElevenLabs SFX(預設)、AudioCraft | 質感 + 衝擊力 + 時長 |
資源對應
audio-jingle/
├── SKILL.md
└── example.html
工作流程
步驟 0 — 讀取專案後設資料
audioKind、audioModel、audioDuration(秒數),以及(語音時)voice。根據已知值進行分支,並直接使用這些值。缺少後設資料不代表要詢問:在可能的情況下推斷安全的預設值,只有當缺少的資訊會實質改變請求的輸出或導致無法生成時,才發出澄清表單。
重要提示:voice 是供應商特定的。對於 minimax-tts,--voice 必須是有效的 MiniMax voice_id(例如 male-qn-qingse),而不是自然語言描述。如果您只有一段散文式的人聲簡介(例如「溫暖的女性旁白」、「中性中文」),請將其保留在您的計劃中,但省略 --voice 以讓守護行程套用預設的聲音 ID,或請使用者選擇特定的 ID。
步驟 1 — 規劃
音樂
- 曲風 + 參考藝人(1-2 位)
- 節奏(BPM)+ 調性
- 配器(最多 3-5 種樂器)
- 人聲:有 / 無 / 哼唱 / 合唱
- 情緒弧線(前奏 → 主歌 → 尾聲)
語音
- 指令稿(最終版,非草稿 — TTS 會逐字朗讀)
- 聲音目標 + 節奏
對於 MiniMax,這表示一個真實的
voice_id,而非--voice中的散文描述 - 專有名詞 / 縮寫的發音提示
音效
- 質感(撞擊聲 / 呼嘯聲 / 環境音 / 擬音)
- 時長 + 包絡線(銳利攻擊 vs. 柔和漸強)
- 疊加備註(單一擊打 vs. 堆疊)
在分派前,用 2-3 句話說明計劃。
步驟 2 — 組成提示
使用上游模型偏好的格式。將 audioDuration 直接綁定到 API 參數;切勿在散文描述中寫「讓它持續 30 秒」。
步驟 3 — 透過媒體合約分派
使用統一分派器 — 請勿手動呼叫供應商 API:
"$OD_NODE_BIN" "$OD_BIN" media generate \
--project "$OD_PROJECT_ID" \
--surface audio \
--audio-kind "<music|speech|sfx>" \
--model "<audioModel from metadata>" \
--duration <audioDuration seconds> \
[--voice "<provider voice id (speech only)>"] \
--output "<short-slug>-<duration>s.mp3" \
--prompt "<assembled prompt from Step 2 — for speech, the literal script>"
該指令會輸出一行 JSON:{"file": {"name": "...", ...}}。位元組資料會存入專案;FileViewer 會自動顯示音訊傳輸控制項。
步驟 4 — 交接
回覆內容需包含:計劃摘要、分派器回傳的檔案名稱,以及一句建議,說明使用者若想嘗試變體該如何調整(例如「將節奏從 92 BPM 改為 108 BPM」,而非「讓它不一樣」)。
硬性規則
- TTS 會逐字朗讀您的指令稿。分派前請先校稿 — 即使多了一個逗號也會改變節奏。
- MiniMax TTS 不接受
--voice中的自由形式人聲散文。請使用真實的 MiniMaxvoice_id(例如male-qn-qingse),或省略該標記,讓守護行程套用預設語音。 - 音樂:少於 30 秒 = 單一樂段;30–90 秒 = 前奏 + 主體;90 秒以上 = 完整樂章。不要試圖將三幕式歌曲塞入 15 秒內。
- 音效:偏好一個描述良好的層,勝過一整段「讓它很酷」的文字 — 生成器會獎勵具體的質感詞彙。
- 每次互動皆需儲存檔案。音訊檢視器會在檔案落地後立即顯示傳輸控制項。