本書では、Fish TTS API の接続説明について説明します。このインターフェースは Fish Audio公式OpenAPI と完全互換であり、元のDocumentation Index
Fetch the complete documentation index at: https://docs.xhuoapi.ai/llms.txt
Use this file to discover all available pages before exploring further.
https://api.fish.audio/v1/tts 呼び出しコードを https://api.xhuoapi.ai/v1/fish/tts に直接移行できます。認証情報を置き換えるだけで、リクエストボディの構造を変更する必要はありません。
申請手順
APIを使用するには、まず Fish TTS API の対応ページからサービスを申請します。ページにアクセスしたら、「Acquire」ボタンをクリックしてください。 未ログインまたは未登録の場合、自動的にログインページにリダイレクトされ、登録とログインを促されます。登録とログイン後、元のページに自動的に戻ります。 初回申請時には無料枠が付与され、無料でAPIを利用できます。公式APIとの違い
本APIは、Fish Audio公式のリクエスト・レスポンスフィールドを保持した上で、以下の少量の拡張を行っています。これにより、当プラットフォーム上での統合が容易になります。- 認証方式:
Authorization: Bearer {token}を使用します。ただし、{token}は当プラットフォームで申請したキーであり、Fish公式のキーではありません。 - TTSモデルの選択:HTTPリクエストヘッダーの
modelで指定します。選択肢はs1またはs2-proで、デフォルトはs2-pro。これはFish公式と一致します。 latencyのデフォルト値:上流/fish/v1/ttsではlatency未指定時にエラーとなるため、本APIでは省略時に自動的にlatency=normalを付与し、Fish公式の挙動と一致させています。- 非同期コールバック(プラットフォーム拡張):リクエストボディに
callback_urlを追加すると、APIは即座に{task_id, started_at}を返します。上流で実際に処理完了後、{audio_url, ...}をPOSTのJSON形式でcallback_urlに通知します。Fish公式APIにはこのフィールドはなく、追加しても当方の非同期処理をトリガーします。
text、reference_id、references、prosody、format、sample_rate、mp3_bitrate、chunk_length、temperature、top_p など)は、そのまま上流に透過され、公式ドキュメントと完全に一致します。
基本的な使い方
最小限のリクエストはtext フィールドのみを送信します。例のcurlは以下の通りです。
audio_url:生成された音声のURL。直接ダウンロードまたは再生可能。latency_ms(任意):処理にかかった時間(ミリ秒)。
reference_id をリクエストボディに追加します。
非同期コールバック
長文生成には時間がかかる場合があり、長時間の接続維持はシステムリソースを消費します。そこで、本APIは非同期コールバック機能(Fish公式APIの拡張)を提供します。 全体の流れは以下の通りです:クライアントはリクエストボディにcallback_url を追加してリクエストを送信します。APIは即座に {task_id, started_at} を返します。実際に処理完了後、callback_url に {audio_url, ...} をPOSTし、task_id も含まれます。これにより、非同期結果と元のタスクを紐付けられます。
リクエスト例:
callback_url に以下の結果が通知されます。
task_id でステータスをポーリングすることも可能です。
エラー処理
本APIのエラー応答はFish公式のHTTPステータスコードを保持しつつ、レスポンスボディはプラットフォーム共通のフォーマットを採用しています。400 token_mismatched:不正リクエスト。パラメータ不足または無効。400 api_not_implemented:不正リクエスト。パラメータ不足または無効。401 invalid_token:認証失敗。トークン無効または未設定。429 too_many_requests:リクエスト過多。レート制限超過。500 api_error:サーバ内部エラー。

