Documentation de l'API
Intégrez TTS.ai dans vos applications avec notre API REST. Format compatible OpenAI pour faciliter la migration.
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.
Authorization: Bearer sk-tts-your-api-key-here
URL de base
Tous les paramètres sont relatifs à cette URL de base. Par exemple, le paramètre TTS est :
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
Convertissez le texte en audio vocal. Retourne le fichier audio dans le format demandé.
Organe de demande
| Paramètre | Type | Requis | Dé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 -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.).
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498
Discours au texte
Traçez l'audio au texte. Prend en charge 99 langues avec détection automatique.
Organe de demande (multipart/form-data)
| Paramètre | Type | Requis | Dé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
{
"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
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ètre | Type | Requis | Dé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
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ètre | Type | Requis | Dé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 -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
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ètre | Type | Requis | Dé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
{
"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
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ètre | Type | Requis | Dé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.
Améliorer la qualité audio: denoise, améliorer la clarté, la super résolution.
| file file | Fichier audio à améliorer |
| denoise boolean | Activer la déshydratation (par défaut: true) |
| enhance_clarity boolean | Améliorer la clarté de la parole (par défaut: true) |
| super_resolution boolean | Qualité audio haut de gamme (par défaut: false) |
| strength integer | 1-3 (léger, moyen, fort). |
Séparer les voix des instruments (suppression vocale) ou les diviser en tiges.
| file file | Fichier audio à séparer |
| model string | demucs (par défaut) ou spleeter |
| stems integer | Nombre de tiges: 2, 4, 5 ou 6 (par défaut: 2) |
| format string | Format de sortie: wav, mp3, flac |
Supprimer l'écho et la réverbération des enregistrements audio.
| file file | Fichier audio à traiter |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analyser l'audio pour détecter la clé, le BPM et la signature temporelle.
| file file | Fichier audio à analyser |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Convertir l'audio entre les formats.
| file file | Fichier audio à convertir |
| format string | Format cible : mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Débit de sortie en kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Taux d'échantillonnage: 22050, 44100, 48000 |
| channels string | mono ou stereo |
Clavardage vocal
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ètre | Type | Requis | Dé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
{
"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
Retourne une liste de tous les modèles disponibles avec leurs capacités.
Réponse
{
"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
Retourne une liste de toutes les voix disponibles, éventuellement filtrées par le modèle ou la langue.
Paramètres de requête
| Paramètre | Type | Dé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
{
"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
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
# 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
# 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
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
// 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
# 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
# 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
# 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
# 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.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough credits for this request.",
"credits_required": 4,
"credits_available": 2
}
}
| État HTTP | Error Code | Dé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.
{
"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"
}
Prêt à construire?
Obtenez votre clé API et commencez à intégrer TTS.ai dans vos applications.