Hoppa till huvudinnehåll
Denna artikel kommer att introducera en Fish Voices Generation API integrationsbeskrivning, som kan skapa egna ljudfärger genom att ange en ljudlänk.

Ansökningsprocess

För att använda API:et måste du först gå till Fish Voices 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 uppmanas 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ändningsmetoden, vilket är att ange ljudfärgens ljudlänk voice_url, så får du det bearbetade resultatet. Det specifika innehållet är som följer:

Här kan vi se att vi har ställt in Request Headers, inklusive:
  • accept: vilken format av svar du vill ta emot, 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:
  • voice_url: den uppladdade ljudlänken.
  • title: titelinformationen för ljudfärgen.
  • image_urls: omslagsbilden för ljudfärgen.
  • description: beskrivningsinformationen för ljudfärgen.
  • callback_url: URL:en för att få tillbaka resultatet.
När du har valt kan du se att motsvarande kod också genereras 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": "b01db503-dd9e-4f92-861a-344f14756217",
  "trace_id": "8731a2f1-7736-4a47-98e7-da942f9346a7",
  "data": {
    "_id": "d5d21261512b4852b9ccd709facf93f3",
    "type": "tts",
    "title": "test",
    "description": "test",
    "cover_image": "coverimage/d5d21261512b4852b9ccd709facf93f3",
    "train_mode": "fast",
    "state": "trained",
    "tags": [],
    "samples": [
      {
        "title": "Default Sample",
        "text": "Genom långvarig observation har vi funnit att fiskarna i korallrevets ekosystem har komplexa gruppbeteendemönster. De använder färgförändringar och specifika simställningar för att överföra information, vilket visar på den marina livsforms anpassningsförmåga.",
        "task_id": "4ae961828fc94c07b2103dc039a8466b",
        "audio": "task/4ae961828fc94c07b2103dc039a8466b.mp3"
      }
    ],
    "created_at": "2025-09-21T07:29:41.058506Z",
    "updated_at": "2025-09-21T07:29:41.057917Z",
    "languages": [
      "zh"
    ],
    "visibility": "public",
    "lock_visibility": false,
    "default_text": "Genom långvarig observation har vi funnit att fiskarna i korallrevets ekosystem har komplexa gruppbeteendemönster. De använder färgförändringar och specifika simställningar för att överföra information, vilket visar på den marina livsforms anpassningsförmåga.",
    "like_count": 0,
    "mark_count": 0,
    "shared_count": 0,
    "task_count": 0,
    "unliked": false,
    "liked": false,
    "marked": false,
    "author": {
      "_id": "7ecad23df62a4174acd6a2a6cb5201ee",
      "nickname": "Matthew Garcia",
      "avatar": "avatars/7ecad23df62a4174acd6a2a6cb5201ee.jpg"
    }
  }
}
Det returnerade resultatet har flera fält, som beskrivs nedan:
  • success, statusen för ljudfärgens skapande uppgift.
    • data, resultatet av musikuppgiften
      • _id, ID för den skapade ljudfärgen, som senare används för att klona ljudet.
      • title, ljudfärgens titel.
      • image_url, omslagsinformationen för ljudfärgen.
      • description, beskrivningsinformationen för ljudfärgen.
      • train_mode, den metod som används för att skapa ljudfärgen.
      • tags, ljudfärgens stil.
      • default_text, ljudfärgens ljudtextinformation.
Vi kan se att vi har fått tillfredsställande ljudfärgsinformation, och vi behöver bara använda data’s _id för att utföra kloningsuppgiften. 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/voices' \
-H 'accept: application/json' \
-H 'authorization: Bearer {token}' \
-H 'content-type: application/json' \
-d '{
  "voice_url": "https://platform.r2.fish.audio/task/604133d7b3c7430385382470f67770e8.mp3",
  "title": "test",
  "description": "test"
}'

Asynkron återkoppling

Eftersom tiden för att generera Fish Voices 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 återkoppling. Den övergripande processen är: när klienten initierar en begäran, specificerar den 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 skapandeuppgiften 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-återkopplingen 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 du se att du omedelbart får ett resultat, som följer:
{
  "task_id": "9f626a13-96ec-4dec-8846-dc5aab7362a8"
}
Vänta ett ögonblick, vi kan observera resultaten av den genererade uppgiften på https://webhook.site/4815f79f-a40f-4078-ac85-1cc126b6bb34, som visas i bilden nedan: Innehållet är som följer:
{
    "success": true,
    "task_id": "9f626a13-96ec-4dec-8846-dc5aab7362a8",
    "trace_id": "3fcdea82-7c1c-4a0a-b8d8-f7616f722d8f",
    "data": {
        "_id": "fa75e7c3f02f42e79a6aa622b6cf075e",
        "type": "tts",
        "title": "test",
        "description": "test",
        "cover_image": "coverimage/fa75e7c3f02f42e79a6aa622b6cf075e",
        "train_mode": "fast",
        "state": "trained",
        "tags": [],
        "samples": [
            {
                "title": "Default Sample",
                "text": "Delfiner navigerar i havet genom ekolokalisering, denna precisa ljudteknik gör att de kan upptäcka sin omgivning, leta efter mat och undvika faror. Detta visar inte bara havsdjurens anpassningsförmåga, utan avslöjar också naturens underbara design.",
                "task_id": "68cdda24d26e4794bae177e20da740db",
                "audio": "task/68cdda24d26e4794bae177e20da740db.mp3"
            }
        ],
        "created_at": "2025-09-21T07:36:20.200865Z",
        "updated_at": "2025-09-21T07:36:20.200353Z",
        "languages": [
            "zh"
        ],
        "visibility": "public",
        "lock_visibility": false,
        "default_text": "Delfiner navigerar i havet genom ekolokalisering, denna precisa ljudteknik gör att de kan upptäcka sin omgivning, leta efter mat och undvika faror. Detta visar inte bara havsdjurens anpassningsförmåga, utan avslöjar också naturens underbara design.",
        "like_count": 0,
        "mark_count": 0,
        "shared_count": 0,
        "task_count": 0,
        "unliked": false,
        "liked": false,
        "marked": false,
        "author": {
            "_id": "7ecad23df62a4174acd6a2a6cb5201ee",
            "nickname": "Matthew Garcia",
            "avatar": "avatars/7ecad23df62a4174acd6a2a6cb5201ee.jpg"
        }
    }
}
Vi kan se att resultatet innehåller ett task_id-fält, och de andra fälten liknar de ovan, genom detta fält kan uppgifterna kopplas samman.

Felhantering

När du anropar API:et, om du stöter på ett fel, kommer API:et att returnera motsvarande felkod och meddelande. 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: Obehörig, 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 Voices Generation API för att skapa din egen röst genom att ansluta ljudet av rösttoner. 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.