> ## 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.

# Fish Audios Generation API Integrationsbeskrivning

> Fish music generation 集成指南 - XHuoAPI

Detta dokument kommer att introducera en Fish Audios Generation API integrationsbeskrivning, som kan klona sin egen röst genom att ange en prompt.

## Ansökningsprocess

För att använda API:et måste du först gå till [Fish Audios Generation API](https://api.xhuoapi.ai/documents/e681b715-54fd-4464-a59a-d7f14500e095) motsvarande sida för att ansöka om den tjänst som behövs. När du kommer till sidan, klicka på knappen "Acquire", som visas i bilden:

![](https://cdn.xhuoapi.ai/q6ytrc.png)

Om du inte har loggat in eller registrerat dig, kommer du automatiskt att omdirigeras till inloggningssidan för att registrera dig och logga in. Efter att ha loggat in eller registrerat dig kommer du automatiskt att återvända till den aktuella sidan.

Vid första ansökan kommer det att finnas en gratis kvot som ges, så att du kan använda API:et gratis.

## Grundläggande användning

Först bör du förstå den grundläggande användningen, vilket innebär att ange prompt `prompt`, kloningsåtgärd `action`, röst-ID `voice_id` och modell `model`, för att få det bearbetade resultatet. Först behöver vi enkelt skicka ett `action`-fält, vars värde är `generate`, och sedan behöver vi också ange modellen `model`, som för närvarande huvudsakligen är `fish-tts`, med följande specifika innehåll:

<p>
  <img src="https://cdn.xhuoapi.ai/0jnfqb.png" width="500" className="m-auto" />
</p>

Här kan vi se att vi har ställt in Request Headers, inklusive:

* `accept`: vilken typ av format du vill ta emot som svar, här anges `application/json`, det vill säga JSON-format.
* `authorization`: nyckeln för att anropa API:et, som kan väljas direkt efter ansökan.

Dessutom har vi ställt in Request Body, inklusive:

* `model`: modellen för att klona rösten, huvudsakligen `fish-tts` modellen.
* `action`: åtgärden för denna röstkloningsuppgift.
* `prompt`: den prompt som ska klonas.
* `voice_id`: kloning baserat på röst-ID.
* `callback_url`: URL för att ta emot callback-resultatet.

När du har valt kan du se att motsvarande kod också genererades till höger, som visas i bilden:

<p>
  <img src="https://cdn.xhuoapi.ai/8uyos2.png" width="500" className="m-auto" />
</p>

Klicka på knappen "Try" för att testa, som visas i bilden ovan, här får vi följande resultat:

```json theme={null}
{
  "success": true,
  "task_id": "5872ab00-3cf4-4040-a798-8510aaa16756",
  "trace_id": "5eda3694-448a-4b72-af33-2acb3851ffe1",
  "data": [
    {
      "audio_url": "https://platform.r2.fish.audio/task/8a72ff9840234006a9f74cb2fa04f978.mp3"
    }
  ]
}
```

Det returnerade resultatet har flera fält, som beskrivs nedan:

* `success`, statusen för kloningsuppgiften.
  * `data`, resultatet av kloningsuppgiften
    * `audio_url`, ljudlänken för kloningsuppgiften.

Vi kan se att vi har fått tillfredsställande ljudinformation, vi behöver bara hämta den klonade rösten baserat på musiklänken i `data`.

Om du vill generera motsvarande integrationskod kan du direkt kopiera den som genererats, till exempel CURL-koden nedan:

```shell theme={null}
curl -X POST 'https://api.xhuoapi.ai/v1/fish/audios' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "action": "speech",
  "prompt": "a white siamese cat",
  "model": "fish-tts",
  "voice_id": "d7900c21663f485ab63ebdb7e5905036"
}'
```

## Asynkron callback

Eftersom tiden för att generera Fish Audios Generation API är relativt lång, cirka 1-2 minuter, om API:et inte svarar under en längre tid, kommer HTTP-förfrågan att hålla anslutningen öppen, vilket leder till extra systemresursförbrukning. Därför erbjuder detta API också stöd för asynkron callback.

Den övergripande processen är: när klienten initierar en begäran, specificera ett extra `callback_url`-fält. Efter att klienten har initierat API-begäran kommer API:et omedelbart att returnera ett resultat som innehåller ett `task_id`-fält, vilket representerar det aktuella uppgifts-ID:t. När uppgiften är klar kommer resultatet av den genererade uppgiften att skickas till klientens angivna `callback_url` i POST JSON-format, vilket också inkluderar `task_id`-fältet, så att uppgiftsresultatet kan kopplas ihop med ID:t.

Låt oss förstå hur man gör detta genom ett exempel.

Först är Webhook callback en tjänst som kan ta emot HTTP-förfrågningar, utvecklaren bör ersätta med URL:en till sin egen byggda HTTP-server. Här för att underlätta demonstration använder vi en offentlig Webhook-exempelsida [https://webhook.site/](https://webhook.site/), öppna denna webbplats för att få en Webhook-URL, som visas i bilden:

![](https://cdn.xhuoapi.ai/tbcnai.png)

Kopiera denna URL, så kan den användas som Webhook, här är exemplet `https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34`.

Därefter kan vi ställa in fältet `callback_url` till ovanstående Webhook-URL, samtidigt som vi fyller i motsvarande parametrar, det specifika innehållet visas i bilden:

<p>
  <img src="https://cdn.xhuoapi.ai/8rv4te.png" width="500" className="m-auto" />
</p>

Klicka på kör, så kan vi se att vi omedelbart får ett resultat, som följer:

```
{
  "task_id": "2725a2d3-f87e-4905-9c53-9988d5a7b2f5"
}
```

Vänta en stund, så kan vi observera resultatet av den genererade uppgiften på `https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34`, som visas i bilden:

![](https://cdn.xhuoapi.ai/9utzve.png)

Innehållet är som följer:

```json theme={null}
{
    "success": true,
    "task_id": "2725a2d3-f87e-4905-9c53-9988d5a7b2f5",
    "trace_id": "e2d308bc-4df8-4c69-9369-a60f3c54f2b3",
    "data": [
        {
            "audio_url": "https://platform.r2.fish.audio/task/b627c2f7d38a4083a837570ba6d0962f.mp3"
        }
    ]
}
```

Vi kan se att resultatet innehåller ett `task_id`-fält, och de andra fälten liknar de som nämndes tidigare, så att uppgiften kan kopplas ihop med detta fält.

## Felhantering

När du anropar API:et, om du stöter på fel, kommer API:et att returnera motsvarande felkod och information. Till exempel:

* `400 token_mismatched`: Bad request, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `400 api_not_implemented`: Bad request, möjligtvis på grund av saknade eller ogiltiga parametrar.
* `401 invalid_token`: Unauthorized, ogiltig eller saknad auktoriseringstoken.
* `429 too_many_requests`: För många förfrågningar, du har överskridit hastighetsgränsen.
* `500 api_error`: Intern serverfel, något gick fel på servern.

### Exempel på felrespons

```json theme={null}
{
  "success": false,
  "error": {
    "code": "api_error",
    "message": "fetch failed"
  },
  "trace_id": "2cf86e86-22a4-46e1-ac2f-032c0f2a4e89"
}
```

## Slutsats

Genom detta dokument har du fått en förståelse för hur du använder Fish Audios Generation API för att klona röster genom att ange ledord. Vi hoppas att detta dokument kan hjälpa dig att bättre integrera och använda API:et. Om du har några frågor, tveka inte att kontakta vårt tekniska supportteam.
