文字轉語音 LLM:能與不能
文字轉語音 LLM 通常是兩個工具協作:一個撰寫提示詞的語言模型,以及將其轉為聲音的音訊模型。此 API 涵蓋前半段。

更新於
重點摘要
此服務僅限文字,不產生音訊、影像或影片。
其在音訊工作流程中的職責是撰寫提示詞、歌詞、場景腳本與元資料。
將其串連至音訊工具需要短腳本與 JSON 輸出。
1,000 個提示詞(輸入約 600 token,輸出 300)的成本約為 $0.24。
簡短回答:LLM 撰寫指令,而非聲音
當人們搜尋 文字轉語音 LLM 時,常想像有一個模型能讀取句子並回傳音訊檔。大型語言模型並非如此運作。它們讀寫文字。聲音來自專門為音訊設計的獨立模型,該模型以文字描述為輸入。
這種分工很有用,因為描述的品質至關重要。模糊的請求(如「放鬆音樂」)讓音訊模型難以發揮。具體的請求若指明流派、速度、樂器、情緒、結構與長度,則能提供更多資訊。大量且格式一致地撰寫具體描述,是語言模型的擅長領域。
本站提供正是這一半:相容 OpenAI 的文字 API。它無音訊生成、無嵌入(embeddings)與微調功能。若你需要音訊本身,請搭配能產生音訊的工具,並將此端點作為其前方的撰寫步驟。我們與任何音訊供應商無隸屬關係,請查閱各工具的官方文件以了解其輸入規則。
文字模型在音訊管線中的協助
適合的任務是輸出為文字的任務:
- 提示詞撰寫。 將粗略概念轉為包含流派、速度、配器與情緒的詳細描述。
- 歌詞與腳本。 歌曲的段落與副歌,或播客開場、有聲書章節的旁白腳本。
- 變體。 從單一概念產生十個替代提示詞,以便測試多個方向。
- 元資料。 音訊產生後的標題、描述、標籤與曲目註解。
- 修訂。 當結果未達預期時,根據你的回饋筆記修訂提示詞。
此模型針對合法成人用途調整,可無內容審查地回答,這對於富含小說的音訊(如黑暗敘事、恐怖戲劇或成熟遊戲對話)很重要,因為較嚴格的模型可能會拒絕完全合理的請求。唯一的底線是,涉及未成年人的性內容絕對禁止,且金鑰不得用於此目的。
我們的 影片提示詞頁面 涵蓋了相同的概念用於影片工具;先撰寫結構化描述、再交給生成器的模式可跨媒體應用。
實作範例:輸入一個概念,輸出結構化提示詞
將資料餵給下游工具最可靠的方式是結構化輸出。JSON 模式(response_format: {"type":"json_object"})讓模型回傳 JSON 物件,讓你的腳本能讀取具名欄位,而非解析段落。以下是使用 OpenAI SDK 向此端點發送請求的 Python 腳本。
import json, os
from openai import OpenAI
client = OpenAI(
base_url="https://api.stableaudio.top/v1",
api_key=os.environ["UNCENSORED_API_KEY"],
)
system = (
"You write prompts for text-to-audio tools. Return a JSON object with keys: "
"genre, tempo_bpm, instruments (list), mood, structure, duration_seconds, prompt. "
"The prompt field is one paragraph, no more than 60 words."
)
resp = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": system},
{"role": "user", "content": "A tense chase scene in a rain-soaked neon city."},
],
response_format={"type": "json_object"},
temperature=0.8,
)
spec = json.loads(resp.choices[0].message.content)
print(spec["prompt"])
在系統提示詞中保留 JSON 字詞,並列出你需要的金鑰。模型因此會有明確的目標。在將結果傳送至下一環節之前,請先驗證結果:檢查 tempo_bpm 是否為數字,且 instruments 是否為列表;若不符合則重試一次。
相同的 curl 請求,用於快速檢查,如下所示:
curl https://api.stableaudio.top/v1/chat/completions \
-H "Authorization: Bearer $UNCENSORED_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"response_format": {"type": "json_object"},
"messages": [
{"role": "system", "content": "Return JSON with keys mood and prompt for a text-to-audio tool."},
{"role": "user", "content": "A quiet morning in a mountain village."}
]
}'撰寫音訊模型可用的提示詞
語言模型會寫出你要求的任何形式的提示詞,因此真正的任務在於決定形狀。幾條規則在大多數音訊工具中都適用。
按工具想要的順序與格式提供內容
閱讀音訊工具的說明文件並複製其詞彙。如果它回應方括號區塊標籤或逗號分隔的描述符樣式行,請在系統提示詞中放入該確切格式的範例。模型會緊密模仿範例。
提供具體名詞
"稀疏鋼琴、刷擊鼓、直立式貝斯、黑膠爆音" 勝過 "不錯的爵士氛圍"。告訴模型命名樂器、速度範圍和質感,並避免填充形容詞。
在指令中設定長度限制
許多音訊工具會限制提示詞長度。將限制寫入系統提示詞("不超過 60 個字")並在程式碼中執行。模型在詞數控制上不穩定,因此當檢查失敗時請截斷或重試。
保持回饋迴圈
聽到結果後,請將你的意見回饋回去:「後半段太擁擠,鼓聲太大,請保留調性。」第二次請求可以將此意見帶入上下文,以修正先前的提示詞。100,000-token 的上下文視窗意味著你可以保留長長的嘗試歷史,讓模型學習你持續拒絕的內容。
將模型串連至音訊生成器
黏合程式碼很短。產生規格、驗證它,然後將 prompt 欄位傳給你使用的任何音訊服務。音訊呼叫顯示為佔位符,因為每個供應商的介面不同;請從其說明文件中取得其參數。
def make_spec(idea: str) -> dict:
r = client.chat.completions.create(
model="uncensored",
messages=[
{"role": "system", "content": system},
{"role": "user", "content": idea},
],
response_format={"type": "json_object"},
)
return json.loads(r.choices[0].message.content)
ideas = ["Lo-fi study beat", "Epic orchestral trailer hit", "Haunted music box"]
for idea in ideas:
spec = make_spec(idea)
# send spec["prompt"] to your audio generator here
print(idea, "->", spec["prompt"][:80])
若以並行方式對列表執行此操作,請注意限制。完整金鑰允許 8 個並行請求和每分鐘 300 個請求;試用金鑰允許 2 個和每分鐘 60 個。出現 concurrency 的 429 錯誤表示同時請求過多,rate_limited 表示每分鐘請求過多,而 Retry-After: 5 標頭表示等待五秒後再試。將執行緒池大小設為符合你的限制,並加上重試機制即可。
API 文件 列出支援的參數,包括 temperature、top_p、stop 與 seed。固定的 seed 有助於在調整系統提示詞時產生可重複的提示詞。
大規模的歌詞、旁白與元資料
提示詞只是音訊專案所需文字的一種。一旦管線運行,同一個端點可撰寫其他部分,並可重複使用先前腳本的客戶端物件。
旁白腳本
針對口語音訊,請要求帶有固定標記的舞台指示腳本,例如段落之間的停頓標記,以及說話者應放慢速度的註記。告訴模型目標朗讀時間。一個常見的經驗法則是,朗讀者每分鐘讀約 150 個字,因此兩分鐘的片段大約需要 300 個字;請要求該字數,然後在程式碼中計算字數。
具有固定結構的歌詞
要求具名段落、押韻方案和每行的音節範圍。模型遵循 "四行,ABAB,每行八到十個音節" 的效果遠優於 "一首不錯的押韻詩"。之後在程式碼中執行檢查,並要求僅重寫失敗的段落。
標題、標籤與描述
音訊產生後,將最終提示詞與歌詞送回模型,要求三個標題選項、五個標籤與兩句描述。這是便宜且重複的工作,非常適合文字模型。
故事與遊戲
小說音訊(例如恐怖系列、互動故事或遊戲對話)通常包含黑暗或成人主題。該模型針對合法成人用途進行了調整,可無內容審查地回答,因此符合該類型風格的請求不會遭到說教。禁止涉及未成年人的性內容的規則保持絕對。
如果你將長腳本串流輸出至螢幕,請設定 stream: true 並在資料塊到達時讀取它們;用量會在串流結束時報告。
撰寫一千個提示詞的成本
文字成本遠低於音訊處理步驟。費率為每 1M 輸入 token $0.15,每 1M 輸出 token $0.50,從預付額度扣款,無訂閱費。
假設每個請求發送約 600 個 token(系統訊息加概念)並回傳約 300 個 token 的 JSON。對於 1,000 個請求:
- 輸入:600,000 個 token x $0.15 / 1M = $0.09
- 輸出:300,000 個 token x $0.50 / 1M = $0.15
- 總計:$0.24
因此,一千個完成的提示詞成本約為二十四美分,失敗或被拒絕的請求不會計費。新帳戶可以在 金鑰頁面 上一鍵領取 $0.50 的試用額度,無需信用卡,有效期為 7 天,大約可執行兩千個上述大小的提示詞。此後,儲值從 $20 起跳;請參閱 定價 查看獎勵等級和付款方式。提示詞不會用於訓練。
更多指南
問答
文字 LLM 能產生音訊嗎?
不能。語言模型產生文字。音訊來自獨立的音訊模型,LLM 的角色是撰寫該模型所需的提示詞、歌詞或腳本。
此 API 能產生音樂或語音嗎?
不能。它僅限文字,無音訊、影像或影片生成。它旨在作為音訊工具前的寫作步驟。
我如何取得可餵給腳本的結構化提示詞?
使用 JSON 模式,將 response_format 設為 json_object,在系統訊息中命名鍵,並在程式碼中驗證解析結果。
產生大量提示詞的成本是多少?
每 1M 輸入 token $0.15,每 1M 輸出 token $0.50,1,000 個提示詞(輸入約 600 個 token,輸出約 300 個 token)的成本約為 $0.24。
有免費方式可以試用嗎?
新用戶可在註冊後一鍵領取 $0.50 的免費試用額度。無需信用卡,有效期 7 天。