文字轉語音
POST /v1/audio/speech
用一個 OpenAI 相容端點把文字轉成自然的語音。送出 JSON,直接取回音訊位元組。換供應商只需要改 model。全程不寫入磁碟:音訊會直接串流回傳給你。
範例請求
curl https://synthorai.io/v1/audio/speech \
-H "Authorization: Bearer $SYNTHORAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "tts-1",
"input": "Hello from Synthorai.",
"voice": "alloy"
}' \
--output speech.mp3 Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
api_key="$SYNTHORAI_API_KEY",
base_url="https://synthorai.io/v1",
)
with client.audio.speech.with_streaming_response.create(
model="tts-1",
voice="alloy",
input="Hello from Synthorai.",
) as response:
response.stream_to_file("speech.mp3") 請求主體
| 參數 | 類型 | 說明 |
|---|---|---|
model* | string | 模型 ID。可選 tts-1、tts-1-hd、seed-tts-2.0。 |
input* | string | 要合成的文字。最多 4096 個字元。 |
voice | string | 使用的音色。預設為 alloy。詳見下方「音色」。 |
response_format | string | 音訊封裝格式:mp3(預設)、opus、wav 或 pcm。 |
speed | number | 語速,0.25–4.0。預設為 1.0。 |
支援的模型
該選哪一個?
| 你需要 | 推薦模型 |
|---|---|
| 最便宜,足以應付大多數產品語音 | google-tts-standard |
| 以中文內容為主,或想要更多音色可選 | qwen3-tts-instruct-flash seed-tts-2.0 |
| 日常產品語音,在音質與成本之間取得平衡 | tts-1 google-tts-neural2 |
| 表現力最好:旁白、陪伴型裝置、品牌音色 | tts-1-hd google-tts-chirp3-hd |
| 模型 | 價格 | 適合場景 |
|---|---|---|
google-tts-standard | $4 / 1M chars | 成本掛帥的大批量通知與提示音 |
qwen3-tts-instruct-flash | $11.50 / 1M chars | 中文與多語言內容;上游會回報計費字元數 |
tts-1 | $15 / 1M chars | 一般產品語音、提示音、通知 |
google-tts-neural2 | $16 / 1M chars | 多種語言下自然的日常語音 |
tts-1-hd | $30 / 1M chars | 旁白、行銷內容,以及使用者會聽上一段時間的場景 |
seed-tts-2.0 | $30 / 1M chars | 中文與多語言內容;180+ 種音色 |
google-tts-chirp3-hd | $30 / 1M chars | Google 最新、表現力最強的音色 |
有三個模型同為 $30,它們的差別在音色氣質與語言涵蓋範圍,而不在價格。決定前先用你自己的文案實測比較。
換供應商只要改一行。 這裡的每個模型都使用相同的請求與回應結構。底層供應商的差異其實很大(認證方式、串流格式、音色命名各不相同),這些差異由 gateway 吸收掉,你只需要改 model.
# Same request, different provider — only the model name changes.
-d '{"model": "tts-1", "input": "...", "voice": "alloy"}'
-d '{"model": "seed-tts-2.0", "input": "...", "voice": "alloy"}' 音色
OpenAI 模型支援這些標準音色: alloy, echo, fable, onyx, nova, shimmer.
對於 seed-tts-2.0 這個模型,同樣的六個名稱也可用(會對應到相近的音色);你也可以直接傳入 BytePlus 原生音色 ID 以取得完整控制權,例如 zh_female_cancan_uranus_bigtts. 完整的 180+ 種原生音色清單請見 BytePlus 音色目錄。
對於 qwen3-tts-instruct-flash 這個模型,同樣的六個名稱也可用,也可以直接傳入 Qwen 原生音色,例如 Cherry, Ethan, Nofish, Jada.
Google 的音色與價格級距綁定。 每個 Google 模型只對應一個級距,而級距就寫在音色名稱裡。如果你直接傳入原生音色 id,例如 en-US-Neural2-C 就必須使用相對應的模型,這個例子裡是 google-tts-neural2。跨級距的音色會以 502 被拒絕,而不是用錯誤的價格默默計費。
音訊格式
用 response_format 指定封裝格式。預設為 mp3: mp3, opus, wav, pcm.
並非每家供應商都支援所有封裝格式;不支援的值會退回 MP3,而不是直接失敗。
計費
按輸入字元計費,採用供應商的官方牌價,不另外加價。1 個字元 = 1 個中文字 = 1 個字母 = 1 個標點 = 1 個空格。請求失敗一律不收費。
回傳的音訊不另外計量;只有你送進來的文字會計費。
限制
- 單次請求最多 4096 個字元。過長的輸入會在計費前就被拒絕,請在用戶端切分後再把音訊接起來。
- 語速由
speed控制(0.25–4.0,預設 1.0)。超出供應商範圍的值會被夾回範圍內,而不是被拒絕。
錯誤
| 回應 | 說明 |
|---|---|
400 | 輸入為空,或超過 4096 個字元。 |
401 | API key 缺失或無效。 |
402 | 配額不足以支應這次請求。 |
502 | 你的帳號無法使用這個模型,或上游供應商失敗。不會產生任何費用。 |
503 | 目前沒有通道提供這個模型。 |