跳轉到主要內容
本介面提供文字轉語音、已儲存聲音呼叫和一次性即時聲音複製,地址為 POST https://api.acedata.cloud/fish/tts。

申請流程

要使用 Fish TTS API,首先到 Ace Data Cloud 控制台 取得您的 API Token,留作備用。 如果你尚未登入或註冊,會自動跳轉到登入頁面邀請你註冊和登入,完成後會自動返回目前頁面。 一個 API Token 即可呼叫平台所有服務,無需為每個服務單獨申請。 首次申請會贈送免費額度,可免費體驗;額度不足時可在 控制台 儲值通用餘額。
📘 完整文件:Fish TTS API →

請求標頭

請求體欄位

一次性複製只接受 HTTPS 音訊 URL,不接受 MessagePack、Base64、data URI 或帶憑據的 URL。參考音訊建議 10–270 秒;Studio 使用更保守的 10–60 秒範圍。

範例 1:最小請求(text + format=mp3)

返回(實測):
audio_url 指向本平台 CDN,可直接 GET 下載或在 <audio> 中播放。最終成功回應還會返回頂層 cost,其中 amount 是本次實際扣除的 Credits;如有帳戶折扣,list_amount 表示折扣前額度。連結長期可用,但仍建議在你自己的儲存裡留一份。

範例 2:使用複製音色 reference_id

下面用 Fish 平台上一個公開的西班牙語音色(_id 可透過 Fish Model Query 檢索取得):
返回(實測):

範例 3:一次性即時聲音複製(references)

將參考音訊放在公開 HTTPS 地址,並提供其中實際說出的準確原文。該聲音只用於本次合成,不會建立長期模型:
實測成功回應:

範例 3:調節語速 / 音量(prosody)

回傳(實測):
speed 大於 1 加快,小於 1 減慢;volume 單位 dB,0 表示不變,正數增益,負數衰減。

範例 5:切換模型 + 控制位元率

透過 HTTP 標頭 model: s1 切換至穩定型模型,請求主體中加上 mp3_bitrate: 128 控制 MP3 位元率:
回傳(實測):

範例 6:PCM 原始波形

需要在瀏覽器中進行即時拼接,或在用戶端進行後續處理(混音、變速)的情境,建議使用 pcm:
回傳(實測):
連結的副檔名會跟隨請求中的 format:mp3 得到 .mp3,wav 與 pcm 得到 .wav(WAV 容器,16 bit PCM)。

非同步回呼(callback_url)

長文字一次合成可能需要十幾秒到幾十秒,連線若中斷需要重試。請求主體中傳入 callback_url 後,介面會立即回傳 {task_id, started_at},上游真正完成時將完整結果以 POST JSON 形式回呼至該 URL,請求主體中帶有相同的 task_id 和本次最終計費的頂層 cost。初始任務確認尚未完成合成,因此不包含 cost。
立即回傳(實測):
稍後 callback_url 會收到如下形式:
也可以使用 Fish Tasks API 主動依 task_id 拉取結果;終態記錄的 response.cost 與回呼中的 cost 一致,詳見該文件。

錯誤處理

  • 400 token_mismatched:請求參數缺失或不合法(最常見是 text 為空,或 format 傳入了 mp3/wav/pcm 以外的值)。
  • 401 invalid_token:鑑權 token 不存在或無效。
  • 429 too_many_requests:觸發帳號速率限制。
  • 500 api_error:伺服器內部錯誤。
錯誤回應範例:
參數驗證錯誤會在 message 欄位說明不合法的欄位,例如:

結論

接入 Fish TTS 的最低成本是:在既有呼叫 api.fish.audio/v1/tts 的程式碼中將鑑權更換成本平台 token,並在請求主體中明確帶上 format: "mp3"。長文字情境建議使用 callback_url 非同步回呼;對於克隆音色 reference_id 的發現,請搭配 Fish Model Query 與 Fish Model Get。