Skip to main content
Cette interface fournit la conversion de texte en parole, l’appel de voix enregistrées et le clonage instantané de voix, à l’adresse POST https://api.acedata.cloud/fish/tts.

Processus de demande

Pour utiliser l’API Fish TTS, commencez par obtenir votre API Token sur le tableau de bord Ace Data Cloud 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, sans avoir à en demander un pour chaque service. La première demande vous donnera un quota gratuit pour une expérience sans frais ; si le quota est insuffisant, vous pouvez recharger le solde général dans le tableau de bord.
📘 Documentation complète : Fish TTS API →

En-têtes de requête

Champs du corps de la requête

Le clonage instantané n’accepte que les URL audio HTTPS, n’accepte pas MessagePack, Base64, data URI ou URL avec des identifiants. L’audio de référence est recommandé pour 10 à 270 secondes ; Studio utilise une plage plus conservatrice de 10 à 60 secondes.

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>. La réponse réussie finale renverra également le cost de niveau supérieur, où amount est le montant de crédits réellement déduits ; en cas de remise sur le compte, list_amount indique le montant avant remise. Le lien est utilisable à long terme, mais il est 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 : Clonage instantané de voix (references)

Placez l’audio de référence à une adresse HTTPS publique et fournissez le texte exact prononcé. Cette voix est uniquement utilisée pour cette synthèse et ne créera pas de modèle à long terme :
Réponse réussie testée :

Exemple 3 : Régler la vitesse / le volume (prosody)

Retour (testé) :
speed supérieur à 1 accélère, inférieur à 1 ralentit ; volume en dB, 0 signifie inchangé, nombre positif pour un gain, nombre négatif pour une atténuation.

Exemple 5 : Changer de modèle + Contrôler le débit binaire

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

Exemple 6 : Onde PCM brute

Pour des scénarios nécessitant un assemblage en temps réel dans le navigateur ou un traitement ultérieur (mixage, changement de vitesse) côté client, 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’interface 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 et le cost final de cette demande. La tâche initiale confirmée n’ayant pas encore terminé la synthèse, elle ne contient donc pas de cost.
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 ; le response.cost de l’état final est identique au cost dans le rappel, 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 : Déclenchement de la limite de débit du compte.
  • 500 api_error : Erreur interne du serveur.
Exemple de réponse d’erreur :
Les erreurs de validation des paramètres seront expliquées dans le champ message, par exemple :

Conclusion

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