HTTPを同期
Open API v1 と同期して音声を生成します。
HTTPを同期
テキストが要求と応答のフローに十分短く、製品が音声を待ってから続行できる場合は、同期 TTS エンドポイントを使用します。長いテキスト、バッチ作業、またはユーザーに表示されるキューの場合は、非同期ジョブ を使用します。
クライアントが OpenAI /v1/audio/speech リクエスト シェイプを予期している場合は、代わりに OpenAI 互換 TTS エンドポイントを使用してください。
POST /api/open/v1/speech/tts
Authorization: Bearer FISHAUDIO_API_KEY
Content-Type: application/json## リクエスト
{
"text": "Hello from Fish Audio.",
"voiceId": "00a1b221-6137-4b73-ad62-b0cbce134167",
"modelId": "fishaudio-s21pro-flash",
"format": "mp3"
}共通フィールド:
| フィールド | タイプ | メモ |
|---|---|---|
text | 文字列 | 合成するテキスト。生成された大きなテキストを送信する前に空白を正規化します。 |
voiceId | 文字列 | 新しい統合に優先される音声 ID。 |
modelId | 文字列 | TTS エンジンのモデル ID(例: fishaudio-s21pro-flash)。 |
format | 文字列 | 有効なモデルに応じて、mp3 などの出力コンテナー。 |
cache | ブール値 | true の場合、応答は JSON メタデータとオーディオ URL を返すことができます。 |
新しい統合では、GET /api/open/v1/voices から voiceId を使用する必要があります。簡単な接続テストには、パブリック システム音声 00a1b221-6137-4b73-ad62-b0cbce134167 を使用します。
古い SDK または他のサイトバリアントのフィールドを現在のOpen API 契約に混合しないでください。
curl https://fishaudio.org/api/open/v1/speech/tts \
-H "Authorization: Bearer FISHAUDIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello from Fish Audio.","voiceId":"00a1b221-6137-4b73-ad62-b0cbce134167","modelId":"fishaudio-s21pro-flash","format":"mp3"}' \
--output speech.mp3## 応答
cache が false であるか省略されている場合、成功した応答はバイナリ オーディオを返します。 cache が true の場合、成功した応答は JSON メタデータを返します。
{
"audio_url": "https://example.com/generated.mp3",
"credits_used": 12,
"quota_remaining": 987988
}クライアントは、1 つの応答形式を想定するのではなく、Content-Type ヘッダーで分岐する必要があります。 URL の有効期間が短い場合は、生成されたオーディオを独自の耐久性のあるストレージに保存します。
請求とクレジット
同期 TTS は、生成されたコンテンツとモデル構成に基づいてクレジットを消費します。エンドポイントは HTTP リクエスト内で生成を実行するため、クライアントのタイムアウトは必ずしもサーバーが作業をキャンセルしたことを意味するわけではありません。ユーザーアクションを再試行するときに、独自のアプリケーション層で冪等性を使用します。
生成後の正確なバランスが必要な場合は、リクエストの完了後に Profile を呼び出します。大規模なバッチの場合は、各タスクが永続的な ID とステータスを持つように、非同期ジョブを優先します。
エラー
| ステータス | 意味 | アクション |
|---|---|---|
400 | テキスト、音声 ID、形式、またはペイロードの形状が無効です | 再試行する前にリクエストを修正してください |
401 | API キーが見つからないか無効です。サーバー側の認証情報を更新する | |
402 | クレジットまたは割り当てが不十分です | バッチを停止して請求状態を表示する |
429 | レート制限 | バックオフを使用して再試行 |
500 | 検証後に生成に失敗しました | 製品が重複した音声を許容できる場合にのみ再試行してください。 |