申請プロセス
APIを使用するには、まず Fish Audios Generation API の該当ページでサービスを申請する必要があります。ページに入ったら、「Acquire」ボタンをクリックします。以下の図のように:
まだログインまたは登録していない場合は、自動的にログインページにリダイレクトされ、登録とログインを促されます。ログインまたは登録後、現在のページに自動的に戻ります。
初回申請時には無料のクレジットが付与され、このAPIを無料で使用できます。
基本使用
まず、基本的な使用方法を理解します。プロンプトprompt、クローンアクション action、音色ID voice_id、およびモデル model を入力することで、処理された結果を得ることができます。まず、action フィールドを簡単に渡す必要があり、その値は generate です。次に、モデル model を入力する必要があります。現在、主に fish-tts モデルがあります。具体的な内容は以下の通りです:

accept:受け取りたいレスポンス結果の形式。ここではapplication/json、つまりJSON形式を記入します。authorization:APIを呼び出すためのキー。申請後、直接ドロップダウンから選択できます。
model:音声をクローンするためのモデル。主にfish-ttsモデルがあります。action:今回の音声クローンタスクのアクション。prompt:クローンするプロンプト。voice_id:音色IDに基づいてクローンします。callback_url:結果をコールバックするURL。

success:この時点での音声クローンタスクの状態。data:音声クローンタスクの結果audio_url:この時点での音声クローンタスクの音声リンク結果。
data の音楽リンクアドレスに基づいてクローンされた音声を取得するだけです。
また、対応する接続コードを生成したい場合は、生成されたものを直接コピーできます。例えば、CURLのコードは以下の通りです:
非同期コールバック
Fish Audios Generation APIの生成には比較的長い時間がかかります。約1〜2分かかります。APIが長時間応答しない場合、HTTPリクエストは接続を維持し続け、追加のシステムリソースを消費します。そのため、本APIは非同期コールバックのサポートも提供しています。 全体の流れは次の通りです:クライアントがリクエストを発行する際に、追加でcallback_url フィールドを指定します。クライアントがAPIリクエストを発行した後、APIはすぐに結果を返し、task_id フィールド情報を含み、現在のタスクIDを示します。タスクが完了すると、生成タスクの結果がPOST JSON形式でクライアントが指定した callback_url に送信され、その中にも task_id フィールドが含まれます。これにより、タスク結果をIDで関連付けることができます。
以下の例を通じて、具体的にどのように操作するかを理解しましょう。
まず、WebhookコールバックはHTTPリクエストを受信できるサービスです。開発者は自分が構築したHTTPサーバーのURLに置き換える必要があります。ここでは、デモのために公開のWebhookサンプルサイト https://webhook.site/ を使用します。このサイトを開くとWebhook URLが得られます。以下の図のように:
このURLをコピーすればWebhookとして使用できます。このサンプルは https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34 です。
次に、フィールド callback_url を上記のWebhook URLに設定し、対応するパラメータを入力します。具体的な内容は以下の図のように:

https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34 で生成タスクの結果を確認できます。以下の図のように:
内容は以下の通りです:
task_id フィールドがあり、他のフィールドは上記と似ています。このフィールドを通じてタスクの関連付けが可能です。
エラーハンドリング
APIを呼び出す際にエラーが発生した場合、APIは対応するエラーコードと情報を返します。例えば:400 token_mismatched:不正なリクエスト、パラメータが不足または無効な可能性があります。400 api_not_implemented:不正なリクエスト、パラメータが不足または無効な可能性があります。401 invalid_token:未認証、無効または不足している認証トークン。429 too_many_requests:リクエストが多すぎます、レート制限を超えました。500 api_error:内部サーバーエラー、サーバーで何かがうまくいきませんでした。

