Documentation de l'API

Intégrez TTS.ai dans vos applications avec notre API REST. Format compatible OpenAI pour faciliter la migration.

API REST Compatible OpenAI Réponses de JSON Appui à la diffusion de l'information

Aperçu général

The TTS.ai API provides programmatic access to all platform features: text-to-speech synthesis, speech-to-text transcription, voice cloning, audio enhancement, and more. The API uses standard REST conventions with JSON request/response bodies.

Clé de l'API

Obtenez votre clé API à partir de Paramètres du compte. Disponible sur les plans Pro et Enterprise.

URL de base

https://api.tts.ai/v1/

Resp.: Ministère de l'Economie et de l'Economie

Jeton porteur via Authorization en-tête

Authentification

Toutes les requêtes API nécessitent une authentification via un jeton Bearer dans le Authorization en-tête.

En-tête HTTP
Authorization: Bearer sk-tts-your-api-key-here
Gardez votre clé API secrète. Ne le partagez pas dans le code client, les dépôts publics ou les journaux. Faites pivoter les clés régulièrement à partir des paramètres de votre compte.

URL de base

URL de base: https://api.tts.ai/v1/

Tous les paramètres sont relatifs à cette URL de base. Par exemple, le paramètre TTS est :

POST https://api.tts.ai/v1/tts/

Limites de taux

Les limites de taux de l'API varient selon le plan :

Plan Demandes/min Concurrent Longueur maximale du texte
Pour 60 5 5 000 charniers
Entreprise 300 20 50 000 chars

Les en-têtes limites de taux sont inclus dans chaque réponse: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Coûts de crédit

Agents des services généraux Coût Unité
TTS (Modèles libres: Piper, VITS, MeloTTS) 1 crédit pour 1 000 caractères
TTS (Modèles standard: Kokoro, CosyVoice 2, etc.) 2 crédits pour 1 000 caractères
TTS (Modèles premium: Tortoise, Chatterbox, etc.) 4 crédits pour 1 000 caractères
Discours au texte 2 crédits par minute d'audio
Clonage de la voix 4 crédits pour 1 000 caractères
Changement de voix 3 crédits par minute d'audio
Amélioration de l'audio 2 crédits par minute d'audio
Suppression vocale / fractionnement de la tige 3-4 crédits par minute d'audio
Traduction des discours 5 crédits par minute d'audio
Clavardage vocal 3 crédits par tour
Recherche de clé & BPM Gratuit --
Convertisseur audio Gratuit --

Texte au discours

POST /v1/tts/

Convertissez le texte en audio vocal. Retourne le fichier audio dans le format demandé.

Organe de demande

ParamètreTypeRequisDésignation des marchandises
model string Oui ID du modèle (p. ex. kokoro, chatterbox, piper)
text string Oui Texte à convertir en discours (max 5 000 caractères pour Pro, 50 000 pour Enterprise)
voice string Oui ID vocal (utiliser /v1/voix/ pour lister les voix disponibles)
format string Numéro Format de sortie: mp3 (par défaut), wav, flac, ogg
speed float Numéro Valeur par défaut : 1.0. Plage : 0.5 à 2.0
language string Numéro Code de langue (p. ex. fr, es). Détecté automatiquement si omis.
stream boolean Numéro Activer la réponse en streaming. Par défaut : false

Exemple de demande

cURL
curl -X POST https://api.tts.ai/v1/tts/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "kokoro",
    "text": "Hello from TTS.ai! This is a test.",
    "voice": "af_bella",
    "format": "mp3"
  }' \
  --output output.mp3

Réponse

Returns the audio file as binary data with appropriate Content-Type header (audio/mpeg, audio/wav, etc.).

En-têtes de réponse
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

Discours au texte

POST /v1/stt/

Traçez l'audio au texte. Prend en charge 99 langues avec détection automatique.

Organe de demande (multipart/form-data)

ParamètreTypeRequisDésignation des marchandises
file file Oui Fichier audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100 Mo.
model string Numéro Modèle STT : whisper (par défaut), faster-whisper, sensevoice
language string Numéro Code de langue. auto pour la détection automatique (par défaut).
timestamps boolean Numéro Inclure les timestamps de niveau word. Par défaut : false
diarize boolean Numéro Activer la diarisation des haut-parleurs. Par défaut : false

Réponse

Réponse de JSON
{
  "text": "Hello, this is a transcription test.",
  "language": "en",
  "duration": 3.5,
  "segments": [
    {
      "start": 0.0,
      "end": 1.8,
      "text": "Hello, this is",
      "speaker": "SPEAKER_00"
    },
    {
      "start": 1.8,
      "end": 3.5,
      "text": "a transcription test.",
      "speaker": "SPEAKER_00"
    }
  ]
}

Clonage de la voix

POST /v1/tts/clone/

Générer la parole dans une voix clonée. Télécharger un audio de référence et du texte.

Organe de demande (multipart/form-data)

ParamètreTypeRequisDésignation des marchandises
reference_audio file Oui Audio vocal de référence (10-30 secondes recommandées). Max 20 Mo.
text string Oui Texte pour parler dans la voix clonée.
model string Numéro Modèle cloné : chatterbox (par défaut), cosyvoice2, gpt-sovits
format string Numéro Format de sortie: mp3 (par défaut), wav, flac
language string Numéro Code de langue cible. Doit être supporté par le modèle choisi.

Réponse

Renvoie le fichier audio sous forme de données binaires, comme le paramètre TTS.

Changement de voix

POST /v1/voice-convert/

Convertissez l'audio en son comme une voix différente. Chargez l'audio source et choisissez une voix cible.

Organe de demande (multipart/form-data)

ParamètreTypeRequisDésignation des marchandises
file file Oui Fichier audio source (MP3, WAV, FLAC). Max 50MB.
target_voice string Oui Cibler l'ID vocal à convertir en (utiliser /v1/voix/ pour lister les voix disponibles)
model string Numéro Modèle de conversion vocale : openvoice (par défaut), knn-vc
format string Numéro Format de sortie: wav (par défaut), mp3, flac

Exemple de demande

cURL
curl -X POST https://api.tts.ai/v1/voice-convert/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@source_audio.mp3" \
  -F "target_voice=af_bella" \
  -F "model=openvoice" \
  -o converted.wav

Réponse

Renvoie le fichier audio converti en données binaires.

Traduction des discours

POST /v1/speech-translate/

Traduire l'audio parlé d'une langue à l'autre. Combine la parole en texte, la traduction et la parole en un seul appel.

Organe de demande (multipart/form-data)

ParamètreTypeRequisDésignation des marchandises
file file Oui Source fichier audio dans la langue originale. Max 100MB.
target_language string Oui Code de langue cible (p. ex. es, fr, de, ja)
voice string Numéro Voix pour la sortie traduite. Sélection automatique si omis.
preserve_voice boolean Numéro Tentative de préserver l'orateur original

Réponse

Réponse de JSON
{
  "original_text": "Hello, how are you?",
  "translated_text": "Hola, como estas?",
  "source_language": "en",
  "target_language": "es",
  "audio_url": "https://api.tts.ai/v1/results/translate_abc123.mp3",
  "credits_used": 5
}

Discours au discours

POST /v1/speech-to-speech/

Transformez le style de parole, l'émotion ou la livraison tout en gardant le contenu. Utile pour ajuster le ton, le rythme et l'expressivité.

Organe de demande (multipart/form-data)

ParamètreTypeRequisDésignation des marchandises
file file Oui Fichier audio source de la parole. Max 50MB.
voice string Oui ID vocal cible pour le discours de sortie
model string Numéro Modèle: openvoice (par défaut), chatterbox
emotion string Numéro émotion cible : neutre, happy, sad, angry, excité
speed float Numéro Réglage de la vitesse par défaut : 1.0. Plage : 0.5 à 2.0

Réponse

Renvoie le fichier audio transformé sous forme de données binaires.

Outils audio

Paramètres de traitement audio pour l'amélioration, l'élimination vocale, le fractionnement de la tige, et plus encore.

POST /v1/audio/enhance/

Améliorer la qualité audio: denoise, améliorer la clarté, la super résolution.

file fileFichier audio à améliorer
denoise booleanActiver la déshydratation (par défaut: true)
enhance_clarity booleanAméliorer la clarté de la parole (par défaut: true)
super_resolution booleanQualité audio haut de gamme (par défaut: false)
strength integer1-3 (léger, moyen, fort).
POST /v1/audio/separate/

Séparer les voix des instruments (suppression vocale) ou les diviser en tiges.

file fileFichier audio à séparer
model stringdemucs (par défaut) ou spleeter
stems integerNombre de tiges: 2, 4, 5 ou 6 (par défaut: 2)
format stringFormat de sortie: wav, mp3, flac
POST /v1/audio/dereverb/

Supprimer l'écho et la réverbération des enregistrements audio.

file fileFichier audio à traiter
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Gratuit

Analyser l'audio pour détecter la clé, le BPM et la signature temporelle.

file fileFichier audio à analyser
Réponse
{
  "key": "C",
  "scale": "Major",
  "bpm": 120.0,
  "time_signature": "4/4",
  "camelot": "8B",
  "compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
POST /v1/audio/convert/ Gratuit

Convertir l'audio entre les formats.

file fileFichier audio à convertir
format stringFormat cible : mp3, wav, flac, ogg, m4a, aac
bitrate integerDébit de sortie en kbps: 64, 128, 192, 256, 320
sample_rate integerTaux d'échantillonnage: 22050, 44100, 48000
channels stringmono ou stereo

Clavardage vocal

POST /v1/voice-chat/

Envoyez du son ou du texte et recevez une réponse AI avec un discours synthétisé.

Organe de demande (multipart/form-data ou JSON)

ParamètreTypeRequisDésignation des marchandises
audio file Numéro* Entrée audio (soit audio ou texte requis)
text string Numéro* Entrée du texte (soit audio ou text requise)
voice string Numéro Voix pour la réponse AI. Par défaut : af_bella
tts_model string Numéro Modèle TTS pour la réponse. Par défaut: kokoro
system_prompt string Numéro Indicatif de système personnalisé pour l'IA
conversation_id string Numéro Poursuivre une conversation existante

Réponse

Réponse de JSON
{
  "conversation_id": "conv_abc123",
  "user_text": "What is the capital of France?",
  "ai_text": "The capital of France is Paris.",
  "audio_url": "https://api.tts.ai/v1/audio/tmp/resp_xyz.mp3",
  "credits_used": 3
}

Liste des modèles

GET /v1/models/

Retourne une liste de tous les modèles disponibles avec leurs capacités.

Réponse

Réponse de JSON
{
  "models": [
    {
      "id": "kokoro",
      "name": "Kokoro",
      "type": "tts",
      "tier": "standard",
      "languages": ["en", "ja", "ko", "zh", "fr"],
      "supports_cloning": false,
      "supports_streaming": true,
      "credits_per_1k_chars": 2
    },
    {
      "id": "chatterbox",
      "name": "Chatterbox",
      "type": "tts",
      "tier": "premium",
      "languages": ["en"],
      "supports_cloning": true,
      "supports_streaming": true,
      "credits_per_1k_chars": 4
    }
  ]
}

Liste des voix

GET /v1/voices/

Retourne une liste de toutes les voix disponibles, éventuellement filtrées par le modèle ou la langue.

Paramètres de requête

ParamètreTypeDésignation des marchandises
model string Filtrer par l'ID du modèle (p. ex. kokoro)
language string Filtrer par code de langue (p. ex. fr)
gender string Filtrer par sexe : male, female, neutre

Réponse

Réponse de JSON
{
  "voices": [
    {
      "id": "af_bella",
      "name": "Bella",
      "model": "kokoro",
      "language": "en",
      "gender": "female",
      "preview_url": "https://api.tts.ai/v1/voices/preview/af_bella.mp3"
    }
  ],
  "total": 142
}

Exemples de codes

Texte au discours

Python - requests
import requests

API_KEY = "sk-tts-your-key"

# Text to Speech
response = requests.post(
    "https://api.tts.ai/v1/tts/",
    headers={"Authorization": f"Bearer {API_KEY}"},
    json={
        "model": "kokoro",
        "text": "Hello from TTS.ai!",
        "voice": "af_bella",
        "format": "mp3"
    }
)

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

print(f"Credits used: {response.headers.get('X-Credits-Used')}")

Discours au texte

Python - requests
# Speech to Text
with open("recording.mp3", "rb") as f:
    response = requests.post(
        "https://api.tts.ai/v1/stt/",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"file": f},
        data={"model": "faster-whisper", "timestamps": "true"}
    )

result = response.json()
print(result["text"])

Clonage de la voix

Python - requests
# Voice Cloning
with open("reference.wav", "rb") as ref:
    response = requests.post(
        "https://api.tts.ai/v1/tts/clone/",
        headers={"Authorization": f"Bearer {API_KEY}"},
        files={"reference_audio": ref},
        data={
            "text": "This speech uses a cloned voice.",
            "model": "chatterbox"
        }
    )

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

Texte au discours

JavaScript - fetch
const API_KEY = 'sk-tts-your-key';

// Text to Speech
const response = await fetch('https://api.tts.ai/v1/tts/', {
  method: 'POST',
  headers: {
    'Authorization': `Bearer ${API_KEY}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'kokoro',
    text: 'Hello from TTS.ai!',
    voice: 'af_bella',
    format: 'mp3'
  })
});

const audioBlob = await response.blob();
const audioUrl = URL.createObjectURL(audioBlob);
const audio = new Audio(audioUrl);
audio.play();

Discours au texte

JavaScript - fetch
// Speech to Text
const formData = new FormData();
formData.append('file', audioFile);
formData.append('model', 'faster-whisper');

const response = await fetch('https://api.tts.ai/v1/stt/', {
  method: 'POST',
  headers: { 'Authorization': `Bearer ${API_KEY}` },
  body: formData
});

const result = await response.json();
console.log(result.text);

Texte au discours

cURL
# Text to Speech
curl -X POST https://api.tts.ai/v1/tts/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -H "Content-Type: application/json" \
  -d '{"model":"kokoro","text":"Hello!","voice":"af_bella","format":"mp3"}' \
  -o output.mp3

Discours au texte

cURL
# Speech to Text
curl -X POST https://api.tts.ai/v1/stt/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@recording.mp3" \
  -F "model=faster-whisper" \
  -F "timestamps=true"

Clonage de la voix

cURL
# Voice Cloning
curl -X POST https://api.tts.ai/v1/tts/clone/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "reference_audio=@reference.wav" \
  -F "text=This uses a cloned voice." \
  -F "model=chatterbox" \
  -o cloned.mp3

Amélioration de l'audio

cURL
# Audio Enhancement
curl -X POST https://api.tts.ai/v1/audio/enhance/ \
  -H "Authorization: Bearer sk-tts-your-key" \
  -F "file=@noisy_audio.mp3" \
  -F "denoise=true" \
  -F "enhance_clarity=true" \
  -o enhanced.mp3

Codes d'erreur

Toutes les erreurs retournent une réponse JSON avec un error sur le terrain.

Format de réponse d'erreur
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
État HTTPError CodeDésignation des marchandises
400 bad_request Paramètres de requête non valides. Vérifiez les détails du message d'erreur.
401 unauthorized Clé API manquante ou invalide.
402 insufficient_credits Pas assez de crédits. Achetez plus à /pricing/.
403 forbidden L'accès à l'API n'est pas disponible sur votre plan.
404 not_found Modèle ou voix introuvable.
413 file_too_large Le fichier téléchargé dépasse la limite de taille.
429 rate_limited Trop de demandes. Vérifiez les en-têtes des limites de taux.
500 internal_error Erreur de serveur. Réessayez plus tard.
503 model_loading Le modèle est en cours de chargement. Réessayez dans quelques secondes.

Machines et appareils pour le travail des métaux, y compris les machines et appareils pour le travail des métaux (à l'exclusion des machines et appareils pour le travail des métaux)

Pour les tâches à long terme (découpage de la tige, batch TTS), vous pouvez fournir un paramètre webhook_url. Lorsque la tâche s'achève, nous allons POST le résultat à votre URL.

Charge utile Webhook
{
  "event": "task.completed",
  "task_id": "task_abc123",
  "status": "success",
  "result_url": "https://api.tts.ai/v1/results/task_abc123",
  "credits_used": 12,
  "created_at": "2025-01-15T10:30:00Z",
  "completed_at": "2025-01-15T10:30:45Z"
}
Les résultats de Webhook sont disponibles pour le téléchargement pendant 24 heures après l'achèvement. Assurez-vous de les télécharger rapidement.

Prêt à construire?

Obtenez votre clé API et commencez à intégrer TTS.ai dans vos applications.