Hoppa till huvudinnehåll
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 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: 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:

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:

Klicka på knappen “Try” för att testa, som visas i bilden ovan, här får vi följande resultat:
{
  "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:
curl -X POST 'https://api.acedata.cloud/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/, öppna denna webbplats för att få en Webhook-URL, som visas i bilden: 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:

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: Innehållet är som följer:
{
    "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

{
  "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.