Fish Audio Docs
Référence APISynthèse vocaleSynthèse vocale (synchrone)
Back to site

Synthèse vocale synchrone v3

Générez de l’audio en mode synchrone ou créez des tâches asynchrones récupérables avec HTTP v3.

HTTP TTS v3 est le contrat neutre recommandé. La plateforme gère le fournisseur ; le client utilise des voiceId et modelId publics.

Base URL

https://fishaudio.org/api/open/v3

Choisir le mode synchrone ou asynchrone

Utilisez le mode synchrone pour les textes courts et les Jobs pour les textes longs, les lots ou les résultats récupérables.

Découvrir les modèles et les voix

curl "https://fishaudio.org/api/open/v3/speech/tts/capabilities"
curl "https://fishaudio.org/api/open/v3/voices?page=1&pageSize=20&includePersonal=false" \
  -H "Authorization: Bearer $FISHAUDIO_API_KEY"

Utilisez un modèle disponible et une voix dont modelIds contient ce modèle. Lisez limites, formats et contrôles via capabilities.

Générer en mode synchrone

POST /api/open/v3/speech/tts
curl "https://fishaudio.org/api/open/v3/speech/tts" \
  -H "Authorization: Bearer $FISHAUDIO_API_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Request-Id: tts-example-001" \
  -d '{"text":"Hello","voiceId":"00a1b221-6137-4b73-ad62-b0cbce134167","modelId":"fishaudio-s21pro-flash","format":"mp3"}' --output speech.mp3

Champs de requête

fieldtyperequiredconstraints
textstringyes1–10,000
voiceIdstringyesmust support modelId
modelIdstringnopublic model ID; omitted uses voice provider default
formatstringnomp3, wav, ogg; default mp3
speednumberno0.5–2; default 1
volumenumberno-20–20; default 0
pitchnumberno-12–12
stabilitynumberno0.5–1.5
similaritynumberno0.5–1.5
languagestringno1–64 characters in v3
emotionstringno1–64 characters in v3
instructionstringnoup to 1,600 characters
textNormalizationbooleannostructured-text normalization

Unknown fields are rejected. Unsupported generic controls are listed in X-OpenAPI-Ignored-Parameters.

Réponse réussie

HTTP/1.1 200 OK
Content-Type: audio/mpeg
X-Request-Id: tts-example-001
X-OpenAPI-Quota-Remaining: 99994
X-OpenAPI-Credits-Used: 6

<binary audio data>

Une réussite renvoie des octets audio. Vérifiez le statut HTTP puis Content-Type ; les erreurs sont en JSON.

Tâches asynchrones

POST /speech/tts/jobs
GET /speech/tts/jobs/{jobId}
GET /speech/tts/jobs/{jobId}/audio?download=1
Authorization: Bearer FISHAUDIO_API_KEY

Conservez task.taskId. pending et processing ne sont pas terminaux ; success, partial_fail et fail le sont.

Erreurs et nouvelles tentatives

Errors use {"code":"ERR_REQUEST_ID_CONFLICT","message":"...","requestId":"..."}. 400 requête invalide ; 401 clé invalide ; 402 quota insuffisant ; 404 ressource absente ; 409 conflit d’idempotence ; 413 trop volumineux ; 429 limite ; 500 échec.

Idempotence et facturation

Réutilisez une X-Request-Id stable uniquement pour la même requête. L’audio synchrone terminé n’est pas rejoué ; les Jobs restent consultables.

Contrat lisible par machine et migration

GET /api/open/v3/openapi.json

Les clients v1/v2 restent compatibles. Les nouvelles intégrations utilisent v3. Migration guide.