Aller au contenu principal

Réponse audio et tarification

Mis à jour le 30 juillet 2026

Traiter la réponse et maîtriser les coûts

Quand l’API TTS répond avec succès, elle retourne un flux d’octets audio directement dans le corps HTTP. Comprendre comment traiter cette réponse et anticiper les coûts est essentiel pour intégrer le TTS en production.

Anatomie de la réponse HTTP

La réponse a un code 200 et le corps contient exclusivement les octets audio. Il n’y a pas d’enveloppe JSON. Les en-têtes HTTP importants sont :

  • Content-Type : indique le format audio (audio/mpeg pour MP3, audio/wav pour WAV, audio/pcm pour PCM)
  • Content-Length : la taille du fichier audio en octets
response = requests.post("https://api.x.ai/v1/tts", ...)

# Vérifier le succès
if response.status_code == 200:
    content_type = response.headers["Content-Type"]
    audio_size = len(response.content)
    print(f"Format: {content_type}, Taille: {audio_size} octets")

Écrire dans un fichier

La méthode la plus simple est d’écrire la réponse directement dans un fichier :

with open("sortie.mp3", "wb") as f:
    f.write(response.content)

Streamer la réponse

Pour les fichiers volumineux, vous pouvez streamer la réponse pour éviter de charger tout l’audio en mémoire :

response = requests.post(
    "https://api.x.ai/v1/tts",
    headers={"Authorization": f"Bearer {api_key}"},
    json={"text": long_text, "voice_id": "eve", "language": "fr"},
    stream=True
)

with open("sortie.mp3", "wb") as f:
    for chunk in response.iter_content(chunk_size=8192):
        f.write(chunk)

Jouer directement dans le navigateur

En JavaScript côté client (après avoir relayé l’audio via votre backend), vous pouvez créer un élément audio à la volée :

const audioBlob = new Blob([audioBuffer], { type: "audio/mpeg" });
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
audio.play();

N’oubliez pas de libérer l’URL Blob après la lecture pour éviter les fuites mémoire (vous verrez cela en détail dans la leçon sur la production).

Correspondance codec / Content-Type

Codec demandéContent-Type reçuExtension fichier
mp3audio/mpeg.mp3
wavaudio/wav.wav
pcmaudio/pcm.pcm
mulawaudio/basic.ul
alawaudio/alaw.al

Tarification détaillée

Le TTS est facturé à 4,20 $ par million de caractères. La facturation est basée sur le contenu du champ text, tags expressifs inclus.

Estimation des coûts

VolumeCaractèresCoût estimé
1 phrase~1000,00042 $
1 paragraphe~5000,0021 $
1 page A4~2 0000,0084 $
1 article de blog~5 0000,021 $
1 livre (200 pages)~400 0001,68 $
1 million de caractères1 000 0004,20 $

Tags et facturation

Les tags expressifs comme [pause], <whisper>, <loud> sont comptés dans le décompte de caractères. Un texte de 1 000 caractères avec 50 caractères de tags sera facturé pour 1 050 caractères. Cela représente généralement moins de 5 % du texte total.

Limites de concurrence

L’API autorise jusqu’à 100 requêtes concurrentes par compte. Au-delà, vous recevrez une erreur 429 (rate limited). Pour les volumes importants, espacez vos requêtes ou implémentez un système de file d’attente.

Calculer la durée audio

La durée de l’audio généré dépend du texte, de la voix et de la vitesse de parole. En moyenne, comptez :

  • Français : environ 150 mots par minute, soit ~900 caractères par minute
  • Anglais : environ 160 mots par minute, soit ~850 caractères par minute

Un texte de 15 000 caractères (la limite) produit donc environ 16 minutes d’audio en français.

Points clés à retenir

  • La réponse TTS est un flux binaire, pas du JSON
  • Le Content-Type indique le format audio reçu
  • Utilisez le streaming pour les fichiers volumineux
  • Le coût est de 4,20 $ par million de caractères, tags inclus
  • La limite est de 100 requêtes concurrentes par compte
  • Un texte de 15 000 caractères produit environ 16 minutes d’audio