Hoppa till huvudinnehåll

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.

Denna artikel beskriver integrationsanvisningarna för Fish Model API, som är helt kompatibel med Fish Audio officiella OpenAPI och inkluderar:
  • POST /fish/model: Skapa en ny klonad röstmodell baserat på ljudprov.
  • GET /fish/model: Paginera och hämta listan över röster synliga för det aktuella kontot eller hela plattformen.

Ansökningsprocess

För att använda API:et måste du först ansöka om motsvarande tjänst på Fish Model API. När du går in på sidan klickar du på knappen “Acquire”. Om du inte är inloggad eller registrerad kommer du automatiskt att omdirigeras till inloggningssidan för att registrera dig och logga in. Efter inloggning eller registrering återvänder du automatiskt till den aktuella sidan. Vid första ansökan får du en gratis kvot som gör att du kan använda API:et kostnadsfritt.

Skillnader från officiella API

  • Autentisering: Använder Authorization: Bearer {token}, där {token} är nyckeln som ansöks om på denna plattform.
  • Uppladdning av prov vid modellskapande: Detta API stöder för närvarande endast JSON-format där ljudprovs-URL:er skickas via fältet voices. Fish officiella API stöder multipart/msgpack för direkt binär uppladdning, vilket ännu inte är implementerat här. URL-baserad uppladdning täcker cirka 80 % av vanliga scenarier.
  • Svarstruktur: Både POST /fish/model och GET /fish/model vidarebefordrar direkt svaren från Fish upstream utan plattforms-envelope. Vid fel används plattformens standardstruktur {success:false, error:{code,message}, trace_id}.

Skapa röstmodell (POST /fish/model)

Minimikrav för skapande är fälten title och voices. voices är en lista med URL:er till ljudprov. Varje fil rekommenderas vara minst 30 sekunder lång med en samplingsfrekvens på 16 kHz eller högre.
curl -X POST 'https://api.xhuoapi.ai/v1/fish/model' \
  -H 'accept: application/json' \
  -H 'authorization: Bearer {token}' \
  -H 'content-type: application/json' \
  -d '{
    "title": "我的克隆音色",
    "description": "用一段播客录音克隆的音色",
    "voices": [
      "https://example.com/sample-voice.mp3"
    ],
    "cover_image": "https://example.com/cover.png",
    "visibility": "private"
  }'
Ett lyckat svar returnerar direkt Fish-plattformens ModelEntity-objekt:
{
  "_id": "d7900c21663f485ab63ebdb7e5905036",
  "type": "tts",
  "title": "我的克隆音色",
  "description": "用一段播客录音克隆的音色",
  "cover_image": "https://example.com/cover.png",
  "train_mode": "fast",
  "state": "trained",
  "tags": [],
  "samples": [],
  "created_at": "2025-05-09T12:34:56.789Z",
  "updated_at": "2025-05-09T12:34:56.789Z",
  "languages": ["zh", "en"],
  "visibility": "private",
  "lock_visibility": false,
  "like_count": 0,
  "mark_count": 0,
  "shared_count": 0,
  "task_count": 0,
  "author": {
    "_id": "user_id",
    "nickname": "user_nickname",
    "avatar": "user_avatar"
  }
}
Det returnerade _id kan användas som värde för fältet reference_id i efterföljande POST /fish/tts för att syntetisera tal med den klonade rösten.

Hämta röstmodell-lista (GET /fish/model)

curl -G 'https://api.xhuoapi.ai/v1/fish/model' \
  -H 'accept: application/json' \
  -H 'authorization: Bearer {token}' \
  --data-urlencode 'page_size=10' \
  --data-urlencode 'page_number=1' \
  --data-urlencode 'self=true'
Tillgängliga sökparametrar (samma som Fish officiella API):
  • page_size: Antal poster per sida, standard är 10.
  • page_number: Sidnummer, börjar från 1.
  • title: Fritextsökning i titel.
  • tag: Filtrera på tagg.
  • self: Om true returneras endast röster skapade av det aktuella kontot.
  • author_id: Filtrera på skapare.
  • language: Filtrera på röstspråk.
  • title_language: Filtrera på titelspråk.
Ett lyckat svar vidarebefordrar Fish-plattformens paginerade struktur direkt:
{
  "items": [
    {
      "_id": "d7900c21663f485ab63ebdb7e5905036",
      "title": "我的克隆音色",
      "description": "用一段播客录音克隆的音色",
      "cover_image": "https://example.com/cover.png",
      "type": "tts",
      "state": "trained",
      "tags": [],
      "languages": ["zh", "en"],
      "visibility": "private",
      "created_at": "2025-05-09T12:34:56.789Z",
      "updated_at": "2025-05-09T12:34:56.789Z"
    }
  ],
  "total": 1
}

Prissättning

Detta API debiterar endast vid “Skapa röstmodell” (POST /fish/model med voices i request body). “Hämta röstmodell-lista” (GET /fish/model) är kostnadsfritt.

Felhantering

  • 400 token_mismatched: Felaktig förfrågan, troligen saknade eller ogiltiga parametrar.
  • 400 api_not_implemented: Felaktig förfrågan, troligen saknade eller ogiltiga parametrar.
  • 401 invalid_token: Obefogad, ogiltig eller saknad auktoriseringstoken.
  • 429 too_many_requests: För många förfrågningar, gränsen för förfrågningar har överskridits.
  • 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

Fish Model API är helt kompatibelt med Fish Audio officiella OpenAPI:s ModelEntity-gränssnitt och möjliggör migrering av befintlig kod för klonad rösthantering utan kodändringar. Det skapade röstmodellens _id kan direkt användas som reference_id i Fish TTS API för talsyntes.