GUIDE

Une API de synthèse vocale en streaming : le premier son dès 300 ms

Une API de synthèse vocale qui renvoie un fichier terminé fait attendre l’auditeur tout le texte. Pour un chatbot, un personnage de jeu ou un long article, cette attente fait la différence entre une application qui répond et une application qui réfléchit.

L’API de SuperClonica peut diffuser en flux : envoyez "stream": true et l’audio arrive au fur et à mesure. Dans nos mesures sur le service en production, le premier son est arrivé dès 300 ms après la requête, et un long texte ne l’a pas retardé, car le texte est lu par morceaux et le premier part en premier.

Comment fonctionne le flux ici

Le texte est découpé aux limites des phrases, et les morceaux sont lus sur plusieurs workers à la fois. Le premier morceau est court et passe avant tout le reste dans la file, il est donc prêt vite, quoi qu’il suive. Le serveur assemble les morceaux dans l’ordre en un seul flux Ogg et envoie chacun dès qu’il est là, pendant que les autres sont encore lus.

  • Premier son : dès 300 ms dans nos mesures, jusqu’aux premiers octets audio.
  • Un texte de 3839 caractères : premier son en une demi-seconde environ, fichier complet en 5,6 secondes.
  • Environ 16 000 caractères, 15,6 minutes de parole : fichier complet en 25,6 secondes.
  • Les temps dépendent de la charge du moment ; sous forte charge, les requêtes attendent dans une file équitable.

L’appeler

Créez une clé dans la section API de votre espace de travail, puis envoyez le texte avec "stream": true. Avec curl, -N désactive la mise en mémoire tampon pour envoyer le flux directement à un lecteur :

curl -N https://superclonica.com/api/v1/speech -H "Authorization: Bearer $SUPERCLONICA_KEY" -H "Content-Type: application/json" -d '{"text": "Bonjour ! Cette phrase joue pendant que la suivante se prépare.", "voice": "F1", "language": "fr", "stream": true}' | ffplay -nodisp -autoexit -

En Python, requests avec stream=True et iter_content donne les octets à mesure qu’ils arrivent ; dans un navigateur, pointez un élément audio vers votre propre point d’accès qui relaie le flux.

À savoir avant de construire dessus

Ogg Vorbis, le format par défaut, est diffusé en flux quelle que soit la longueur ; mp3 et wav le sont dès que le texte dépasse environ une demi-minute de parole, sinon ils arrivent en un seul fichier. Si quelque chose échoue avant le premier son, la réponse est une erreur ordinaire avec un code d’état ; après, le transfert s’arrête plus tôt : considérez un flux interrompu comme un échec et renvoyez le texte. Une réponse 503 signifie que la file est pleine : attendez les secondes indiquées dans l’en-tête Retry-After et renvoyez avec le même Idempotency-Key.

Où d’autres services ont de l’avance

ElevenLabs et Cartesia acceptent aussi le texte lui-même en flux par WebSocket, pratique pour les agents vocaux qui parlent pendant qu’un modèle de langage écrit encore. L’API de SuperClonica prend le texte entier en une requête. Supertonic 3 ne parle pas encore chinois, et les grands clouds proposent le SSML et l’horodatage des mots. Si vous en avez besoin, ils sont le meilleur choix ; s’il vous faut un premier son rapide et beaucoup d’heures bon marché, essayez la nôtre avec l’offre gratuite.