體驗Text To Audio: 用 Stable Audio 3 建立我的地端 AI 音樂工作流
從嘗試 Suno 到部署 Stable Audio 3,記錄如何讓 AI Agent 指揮雲端 AI 工具,透過自然語言生成音樂與音效。
這是一首由 GPT-5.6 Luna 指揮 AI 工具生成的起床音樂。它的任務很單純:早上鬧鐘響起時,先用一段輕快、有精神但不刺耳的音樂,把人從睡夢中叫醒。
從一句話做音樂的想法開始
我一直想試試看「用一句話描述,就能做出一段音樂」的功能。像 Suno 這類服務已經能把自然語言轉成完整歌曲,不過如果只是想探索這項技術,或是希望把工具放在自己能控制的環境裡,付費服務不一定是唯一選擇。
所以我問了 AI:有沒有可以自己部署的 Text To Audio 方案?在比較幾個方向後,我找到 Stability AI 的 Stable Audio 3,接著開了一個 GPT 對話,讓 Agent 協助我把想法一步步變成可以實際操作的工作流。
這個需求不只可以用來做歌曲,也可以延伸到鬧鐘、通知音、環境音、遊戲音效或影片配樂。對我來說,起床音樂是一個很適合拿來測試的例子:需求容易描述,生成結果也能立刻拿來使用。
先確認英文提示詞,再開始生成
我希望 Agent 不要直接把模糊的中文需求送給模型,而是先把它整理成比較適合音樂模型的英文提示詞,讓我確認方向後再生成。這次下的指令是:
我下給 Agent 的指令
用 $ai-audio-service 生成一首 1 分鐘、輕快節奏音樂,放到 /tmp/ai-audio-test2.mp3。
要用來當鬧鐘起床音樂,先給我看你給 ai audio 的英文提示詞,我確認後再生成。
這個小小的確認步驟很重要。自然語言的需求通常只說得出「想要什麼感覺」,但音樂模型需要更具體的資訊,例如速度、樂器、情緒、編曲密度、是否適合循環,以及開頭要不要立刻進入主題。先讓 Agent 把需求翻譯成英文提示詞,人可以在生成前修正方向,也比較容易累積出有效的提示詞寫法。
最後產生的 ai-audio-test3.mp3,就是這次拿來試聽的起床音樂檔案。
先讓 Agent 把模型裝到雲端主機
第一步,我請 Agent 透過 SSH 登入一台雲端 ARM 虛擬機,嘗試安裝 Stable Audio 3。這裡有一個實際的環境限制:這台 VM 使用 ARM64,而許多 AI 模型與套件最常被測試的環境是 x86_64 加上 NVIDIA GPU。
因此安裝時不能只看模型本身能不能下載,還要一起確認 Python 套件、推論後端、CPU 指令集、記憶體容量,以及模型是否提供適合 ARM 的格式。這次的環境沒有 GPU,生成工作主要由 CPU 完成;模型大小與輸出秒數也會直接影響記憶體峰值和等待時間。
在實際測試中,我也觀察了 CPU 和記憶體使用情況。Stable Audio 產生的是 WAV,完成後再轉成 MP3,這樣就能把較大的原始檔保留在伺服器端處理,最後只下載方便使用的音訊格式。
從一次性對話變成 HTTP 服務
一開始的做法,是讓 Agent 直接在遠端主機上執行指令。這可以驗證模型是否能工作,但每次都要重新處理參數、等待程序、尋找輸出檔案,並不適合日後反覆使用。
接著我要求 Agent 在雲端主機建立可重複呼叫的 AI Audio Service。原始 prompt 中的主機名稱與帳號路徑已改成泛稱:
要求 Agent 建立雲端 AI Audio Service
請在一台雲端 ARM Linux 主機上開發一個 HTTP server,不需認證,提供 API 由 Stable Audio 產生音樂。
保留擴充性,可選用 Stable Audio 之外的工具以及不同模型;以 Docker image 封裝,並以 podman-compose 啟動。
原始碼路徑放在遠端主機的 ~/work/ai-audio-service。
所以後來把它整理成一個跑在遠端 ARM VM 上的 HTTP service。呼叫端只要送出提示詞、模型、秒數與輸出格式,服務就會建立工作、執行生成、回報狀態,最後提供 MP3 或 WAV 下載。這種設計也保留了未來加入其他音訊工具與模型的空間,不必讓上層 Agent 知道每個模型的命令列細節。
目前這個服務的思路包括:
- 以 job API 管理生成工作與狀態。
- 支援 text-to-audio,也預留 audio-to-audio 與 inpainting 等模式。
- 讓模型可以選擇,方便日後加入不同尺寸或不同用途的模型。
- 以 Docker image 封裝,再用 podman-compose 管理服務。
- 將模型與輸出資料放在持久化路徑,避免每次重啟都重新下載。
把模型包在 HTTP 服務後面,帶來的好處是:不論未來是聊天 Agent、網站、命令列工具,甚至是遊戲開發流程,都可以用同一套介面產生音樂或音效。
讓 Agent 可以用自然語言使用
完成雲端服務後,我再要求 Agent 在本機新增一份全域 skill:
要求 Agent 新增全域 skill
完成後,請在 Agent 端新增一個全域的 skill,包含 HTTP client,讓 Agent 有能力透過 ai-audio-service 產生音樂或音效。
有了 HTTP API 之後,我又在本機建立一份全域 skill,告訴 Agent 如何呼叫 ai-audio-service。skill 裡包含服務位置、請求格式、工作狀態查詢、檔案下載,以及音樂和音效的提示詞撰寫方式。
這樣以後不必記住完整的 curl 指令,只要說:
生成一首一分鐘、輕快、明亮的早晨音樂,適合當鬧鐘,不要太吵,也不要突然出現很大的爆音,完成後下載成 MP3。
Agent 就能把需求整理成提示詞,呼叫遠端服務,等待工作完成,再把結果放到指定位置。skill 也讓 Agent 知道哪些參數可以調整,例如長度、模型、音訊模式與輸出格式;需要時還能回報生成工作是否仍在執行。
AI Agent 帶來的改變
沒有 AI Agent 以前,這會是一個需要自己拆解、執行與除錯的長流程:先登入雲端主機,手動執行各種命令安裝 Stable Audio 3;接著自己撰寫 HTTP service,反覆測試模型、API 與資源使用狀況;最後再把服務打包成 Docker image,撰寫 docker-compose.yaml,並用 compose 工具啟動與驗證整套服務。
有了 AI Agent 以後,我只要用自然語言把需求、環境限制與交付方式描述清楚,Agent 就能協助完成以上工作項目,包含登入遠端主機、安裝模型、撰寫程式、容器化、啟動服務、測試與修正。原本可能需要數小時的工作,這次縮短到幾分鐘內完成。
真正改變的不只是速度,而是工作的起點:我不必先成為每一個底層工具的專家,才能開始實作;只要清楚說明目標,再透過測試結果與 Agent 一起迭代,就能把想法快速推進到可以使用的服務。
結語:把模型變成可以被指揮的工具
這次的過程可以整理成三層:先找到適合的模型,再把模型包成穩定的服務,最後用 skill 讓 Agent 能以自然語言使用它。每一層都各自解決一個問題:模型負責能力,HTTP service 負責可重複呼叫,skill 則負責讓人和 Agent 不必記住底層細節。
這種做法的價值不只是一首起床音樂。它可以繼續延伸成個人通知音、直播與影片的背景音、遊戲中的環境聲和戰鬥音效,也可以和其他音訊處理工具串在一起。當生成模型不再只是一次性的網頁服務,而是被放進自己的工作流裡,AI 就從「幫我回答問題」多了一種可能:幫我把想法直接做成可以使用的素材。