Skip to main content
Cette interface est basée sur Fish Audio Official TTS API, avec des différences uniquement dans le mode d’authentification (utilisation du token de cette plateforme) et le rappel asynchrone (extension callback_url), la structure du corps de la requête étant identique à celle de l’upstream. L’adresse est POST https://api.acedata.cloud/fish/tts.

Processus de demande

Pour utiliser l’API Fish TTS, commencez par obtenir votre API Token sur Ace Data Cloud Console pour le garder en réserve. Si vous n’êtes pas encore connecté ou inscrit, vous serez automatiquement redirigé vers la page de connexion pour vous inviter à vous inscrire et à vous connecter, après quoi vous serez automatiquement renvoyé à la page actuelle. Un seul API Token suffit pour appeler tous les services de la plateforme, il n’est pas nécessaire de demander un pour chaque service. La première demande vous donnera un quota gratuit pour une expérience sans frais ; en cas de quota insuffisant, vous pouvez recharger le solde général dans la console.
📘 Documentation complète : Fish TTS API →

En-têtes de requête

Champs du corps de la requête

La nomenclature des champs est identique à celle de l’upstream. À l’exception de callback_url, les autres champs ont la même signification et les mêmes valeurs que celles indiquées dans Fish Official TTS Documentation.

Exemple 1 : Requête minimale (text + format=mp3)

Retour (testé) :
audio_url pointe vers le CDN de cette plateforme, pouvant être téléchargé directement par GET ou joué dans <audio>. Le lien est valable à long terme, mais il est toujours conseillé de conserver une copie dans votre propre stockage.

Exemple 2 : Utilisation de la voix clonée reference_id

Voici un exemple avec une voix espagnole publique sur la plateforme Fish (_id pouvant être récupéré via Fish Model Query) :
Retour (testé) :

Exemple 3 : Ajustement de la vitesse / volume (prosody)

Retour (testé) :
speed supérieur à 1 accélère, inférieur à 1 ralentit ; volume en dB, 0 signifie inchangé, les nombres positifs augmentent, les négatifs diminuent.

Exemple 4 : Changement de modèle + contrôle du débit binaire

En utilisant l’en-tête HTTP model: s1 pour passer au modèle stable, ajoutez mp3_bitrate: 128 dans le corps de la requête pour contrôler le débit binaire MP3 :
Retour (testé) :

Exemple 5 : Onde PCM brute

Pour les scénarios nécessitant un assemblage en temps réel dans le navigateur, ou un traitement ultérieur côté client (mixage, changement de vitesse), il est recommandé d’utiliser pcm :
Retour (testé) :
L’extension du lien suit le format dans la requête : mp3 donne .mp3, wav et pcm donnent .wav (conteneur WAV, PCM 16 bits).

Rappel asynchrone (callback_url)

La synthèse d’un long texte peut prendre de quelques secondes à plusieurs dizaines de secondes, si la connexion est interrompue, il faut réessayer. En passant callback_url dans le corps de la requête, l’API renverra immédiatement {task_id, started_at}, et lorsque le traitement est réellement terminé, le résultat complet sera rappelé à cette URL sous forme de POST JSON, avec le même task_id dans le corps de la requête.
Retour immédiat (testé) :
Plus tard, callback_url recevra un message de la forme :
Il est également possible d’utiliser Fish Tasks API pour récupérer les résultats par task_id, voir ce document pour plus de détails.

Gestion des erreurs

  • 400 token_mismatched : Paramètres de requête manquants ou non valides (le plus courant est que text est vide, ou que format a une valeur autre que mp3/wav/pcm).
  • 401 invalid_token : Le token d’authentification n’existe pas ou est invalide.
  • 429 too_many_requests : Limite de taux déclenchée pour le compte.
  • 500 api_error : Erreur interne du serveur.
Exemple de réponse d’erreur :
Les erreurs de validation des paramètres incluront le message d’erreur d’origine de pydantic dans le champ message, facilitant l’identification du champ non valide, par exemple :

Conclusion

Le coût minimal pour intégrer Fish TTS est : dans le code déjà appelant api.fish.audio/v1/tts, remplacer l’authentification par le token de la plateforme, et dans le corps de la requête inclure explicitement format: "mp3". Pour les scénarios de long texte, il est conseillé d’utiliser le rappel asynchrone callback_url ; pour la découverte de l’id de référence de la voix clonée, veuillez utiliser Fish Model Query et Fish Model Get.