tts-1
TTS-1 透過可選聲音、播放速度及輸出格式,將準備好的文字轉成語音。OpenAI 將此版本最佳化於較低延遲的語音生成,適合快速朗讀、簡短旁白,以及將已寫好的文稿以串流方式交付。
關於模型
此說明介紹模型的能力。Ailoot 可用的輸入、輸出與選項,依所選方法列於下方。
TTS-1 是 OpenAI 針對速度最佳化的文字轉語音模型。它接收要說出的詞句並產生音訊,而非轉錄稿或書面答案。製造商範例包括朗讀書面文章、以多種語言產生語音,以及音訊到達時即開始播放。TTS-1 相較於 TTS-1 HD 是較低延遲的選項;HD 模型則著重輸出品質。因此,實用的判斷是此任務更重視迅速播放,還是品質較高的旁白規格。
語音生成工作流程以模型、輸入文字及所選聲音為核心。OpenAI 參考文件將文字輸入限制為 4,096 個字元,這是字元限制,而非 token 上下文視窗。合成前請準備實際文稿:寫出聽眾應聽到的句子、釐清縮寫,並決定名稱、數量及標題的讀法。較長文章應整理為各自能理解的段落,而非將整份長文件視為單次語音請求。
OpenAI 目前針對 TTS-1 的聲音清單是 alloy、ash、coral、echo、fable、onyx、nova、sage 及 shimmer。這些是預製聲音,並非每個較新語音模型的完整聲音集合。聲音針對英語最佳化,但以要朗讀的語言提供輸入,即可支援多語言語音。請使用詞彙與節奏符合最終文稿的代表性段落來選擇聲音。若連貫性重要,請在相關片段維持相同選擇。
音訊可分塊串流,讓播放在整個檔案生成完成前開始。這是由文字產生語音的串流,並非雙向口語對話。文件列出的輸出格式為 MP3、Opus、AAC、FLAC、WAV 及 PCM,預設為 MP3。MP3 與 AAC 提供壓縮音訊;Opus 適合串流與通訊;FLAC 是無損格式。WAV 可避免壓縮音訊解碼,而原始 PCM 包含沒有檔案標頭的 24 kHz、16 位元有號小端序取樣。OpenAI 在優先考量回應時間時,建議使用 WAV 或 PCM。
語音參考文件提供 0.25 至 4.0 的速度設定,預設為 1.0。額外的自然語言 instructions 欄位對 TTS-1 不起作用,此模型也不支援事件式 SSE 輸出。文件列出的控制是文稿、聲音、速度及音訊格式;不應將較新模型的口音、情感或耳語控制加到此版本。準備片段時,應依清晰易懂的需求選速度,再檢查實際朗讀的詞句與停頓,而非假設文稿字元數能決定精確時長。
語言指南包含英語、俄語、烏克蘭語、法語、德語、西班牙語、葡萄牙語、義大利語、阿拉伯語、中文、日語、韓語、印地語、哈薩克語及其他許多語言。語音依循所提供文字的語言。因此,多語言旁白需求說明應從翻譯好的文稿與預定聽眾開始;文字轉語音是表達步驟,而非要求翻譯或改寫的指令。實用公告應準備確切訊息與名稱。教學旁白則要讓將被朗讀的詞句清楚呈現段落邊界及定義。
完成成果可以是簡短口語指示、旁白段落,或較大型編輯作品的音訊片段。請以實際輸出檢查發音、完整性、節奏及所選格式。將文稿與音訊一併保留,讓後續修正能限定於受影響的段落。OpenAI 指南要求清楚告知聽眾該聲音由 AI 生成。這項揭露屬於聆聽體驗;不會將 TTS-1 變成人聲錄音,也不會替模型新增聲音複製控制。
Ailoot Ultra · 語音合成 POST /v1/audio/speech openai/tts-1
openai/tts-1入門
TTS-1 透過可選聲音、播放速度及輸出格式,將準備好的文字轉成語音。OpenAI 將此版本最佳化於較低延遲的語音生成,適合快速朗讀、簡短旁白,以及將已寫好的文稿以串流方式交付。
- 接受的輸入
- 文字
- 結果
- 音訊
Ailoot 可用 · 輸入與方法
Ailoot Ultra · 語音合成 POST /v1/audio/speech
- 輸入
text- 輸出
audio- 輸出格式
- mp3
| 欄位 | 類型 | 要求 | 值與限制 | 預設值 |
|---|---|---|---|---|
欄位model | 類型string | 要求必填 | 值與限制 openai/tts-1 | 預設值— |
欄位input | 類型string | 要求必填 | 值與限制 長度下限: 1 長度上限: 4,096 單位: Unicode 字元 | 預設值— |
欄位voice | 類型string | 要求必填 | 值與限制 alloy | 預設值— |
輸入素材組合
text_to_speech · 必填: input
方法參數與生命週期
| 參數 | 規格 |
|---|---|
參數content_type | 規格application/json |
參數required | 規格model, input, voice |
參數voice_ids | 規格alloy |
參數max_input_characters | 規格4096 |
參數other_options | 規格false |
參數input | 規格完全相符的 UTF-8 文字;不經正規化的 Unicode 字元計數 |
參數material_types | 規格text |
生命週期: synchronous_result_then_owned_library
GET /v1/media/tasks/{task_id} · 實際回傳的 task_id 或媒體庫紀錄
GET /v1/media/assets/{asset_id}/content
GET /v1/media/assets
GET /v1/media/assets/{asset_id}
請從此模型設定檔中選擇完全相符的語音。
輸入字元數與音訊秒數是不同的計量方式。
方案
費率資訊不會增加請求選項。支援的參數列於所選方法中。
- 快速模式
- 未指定 選取快速模式時
- flex 模式
- 未指定 選取 flex 模式時
- 最高推理強度
- 未指定 最高推理強度採用 default 調整值時
Ailoot 費率
各設定的價格
請逐一核對各項費用與所列條件。每組互為替代選項的設定只套用一種費率。
| 設定 | 費率表 | 應計費數量 | 計費數量 | 計費單位 | 費用 |
|---|---|---|---|---|---|
| 設定基礎 token 費率 | 費率表基本費率 | 應計費數量— | 計費數量— | 計費單位— | 費用 輸入 · 輸入 Token — / 1K Token 輸出 · 輸出 Token — / 1K Token 輸入 · 讀取快取 — / 1K Token 輸入 · 寫入快取 — / 1K Token 輸入 · 寫入快取,1 小時 — / 1K Token |
| 設定Ultra | 費率表— | 應計費數量每個 Unicode 碼位均計為一個字元,漢字亦同。 | 計費數量— | 計費單位每 1K 個輸入字元 | 費用 輸入 · 輸入字元 $0.03 每 1K 個輸入字元 |
| 設定每次請求 | 費率表— | 應計費數量— | 計費數量1 次請求 | 計費單位— | 費用 輸入 $0 每次請求 |
Ailoot 會在請求前預留估算金額。取得結果後,依實測用量結算最終費用。串流結算採用最終用量紀錄。預留金額與結算的運作方式 →
請求範例
Ailoot Ultra · 語音合成
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "openai/tts-1", "input": "Good afternoon! This is a short voice take.", "voice": "alloy"}')
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/audio/speech \
-H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
--data-binary @request.json -D response-headers.txt -o speech.mp3
接收並儲存結果
Ailoot Ultra · 語音合成
mp3
GET /v1/media/tasks/{task_id}GET /v1/media/assets/{asset_id}/contentGET /v1/media/assetsGET /v1/media/assets/{asset_id}
其他內容讀取方式
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/media/assets \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-assets.json
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_MEDIA_TASK_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_MEDIA_TASK_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_MEDIA_TASK_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/tasks/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-task.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-task.json").read_text())))
PY_RESULT
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
: "${AILOOT_ASSET_ID:?Set the actual ID returned by the response or media-library metadata}"
export AILOOT_ASSET_ID
resource_id=$(python3 -c 'import os,urllib.parse;print(urllib.parse.quote(os.environ["AILOOT_ASSET_ID"],safe=""))')
curl --fail-with-body --silent --show-error "https://api.ailoot.ai/v1/media/assets/$resource_id" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o media-asset.json
python3 - <<'PY_RESULT'
import json
from pathlib import Path
print(json.dumps(json.loads(Path("media-asset.json").read_text())))
PY_RESULT
保留所有已完成的結果
請保留所有完整傳回的回應、檔案與內容區塊。
保留完整的二進位結果與標頭。若回傳 JSON 或多個輸出,請保留所有資料項目,並透過每個實際回傳的已簽署資產 URL 取得內容。
需要檢查原始回應時
保留原始 operation_id/X-Client-Request-ID 以供核對,請勿重新提交;沒有專用的音訊輪詢路由。
回應欄位
| 欄位 | 類型 |
|---|---|
欄位binary audio | 類型bytes |
欄位response headers | 類型headers |
錯誤與後續步驟
| 回應 | 條件 | 下一步 |
|---|---|---|
回應400 · invalid_request_error | 條件必要欄位、素材表示方式或參數值無效 | 下一步提出新的建立請求前,先修正指定欄位。 |
回應server_error | 條件回傳的回應表示該作業或結果需要檢查 | 下一步保留原始回傳的作業/任務 ID、請求標頭與回應;繼續以支援的方式讀取該原始作業。請勿重新提交建立請求。 |
別名
模型別名
Ailoot Ultra openai/tts-1
方法路徑別名
請使用上方列出的 API 方法路徑。
相關呼叫用 ID
FAQ · tts-1
- 可以使用哪些輸入與結果?
POST /v1/audio/speech·openai/tts-1:text→audio- 請求使用哪些欄位?
POST /v1/audio/speech·openai/tts-1:model,input,voice- 適用哪些限制?
POST /v1/audio/speech·openai/tts-1:input.maximum_length:4096