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
L'API TTS.ai offre un accès programmatique à toutes les fonctionnalités de la plate-forme : synthèse texte-à-discours, transcription parole-à-texte, clonage vocal, amélioration audio, etc. L'API utilise des conventions REST standard avec les organismes de demande/réponse JSON.
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
/v1/tts/ travailler sans auth, jusqu'à 5 000 caractères par jour par IP, en utilisant l'un de nos modèles gratuits (piper, vits, melotts, kokoro). Inscrivez-vous à un compte gratuit pour obtenir 15 000 caractères bonus et l'accès aux modèles premium.
Pour les modèles haut de gamme et les limites de taux plus élevées, authentifier avec un jeton au porteur dans le Authorization en-tête.
Authorization: Bearer sk-tts-your-api-key-here
SDKs
Les SDK officiels facilitent l'intégration de TTS.ai dans votre application. Les deux sont open source et disponibles sur GitHub.
Python
pip install ttsai
from tts_ai import TTSClient
client = TTSClient(api_key="sk-tts-...")
audio = client.generate(
text="Hello world!",
model="kokoro"
)
client.save(audio, "output.wav")
JavaScript / Node.js
npm install @ttsainpm/ttsai
const { TTSClient } = require('@ttsainpm/ttsai');
const client = new TTSClient({
apiKey: 'sk-tts-...'
});
const audio = await client.generate({
input: 'Hello world!',
model: 'kokoro'
});
await client.saveToFile(audio, 'output.wav');
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 |
|---|---|---|---|
| Gratuit | 10 | 2 | 500 chars |
| Démarreur | 30 | 3 | 1 000 000 d'ombles |
| Pour | 60 | 5 | 1 000 000 d'ombles |
| 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 000 caractères | pour 1 000 caractères |
| TTS (Modèles standard: Kokoro, CosyVoice 2, etc.) | 2 000 caractères | pour 1 000 caractères |
| TTS (Modèles premium: Tortoise, Chatterbox, etc.) | 4 000 caractères | pour 1 000 caractères |
| Discours au texte | 2 000 caractères | par minute d'audio |
| Clonage de la voix | 4 000 caractères | pour 1 000 caractères |
| Changement de voix | 3000 caractères | par minute d'audio |
| Amélioration de l'audio | 2 000 caractères | par minute d'audio |
| Suppression vocale / fractionnement de la tige | 3 000 à 4 000 caractères | par minute d'audio |
| Traduction des discours | 5 000 caractères | par minute d'audio |
| Clavardage vocal | 3000 caractères | 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 | Numéro | Modèle ID (p. ex., kokoro, chatterbox, piper). Si nous avons omis, nous avons automatiquement pick-up un modèle qui supporte la langue demandée — kokokoro pour en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper pour d'autres langues supportées (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.). |
| text | string | Oui | Texte à convertir en parole. Cap par demande : 500 caractères (anonyme), 5 000 caractères (compte libre), 1 000 000 (plan payant). |
| 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. |
| instructions | string | Numéro | Points d'exécution/de livraison (=500 caractères). p.ex. \ |
| pronunciations | object | array | Numéro | La prononciation par demande prime, soit |
| 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
Balises SSML
Numéros, dates, monnaie, numéros de téléphone et acronymes dans Par défaut, le format de la date est The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result. Poll this endpoint every 1-2 seconds until Fetch the Streaming alternative: For supported models (Kokoro, MeloTTS), use
interpréter comme Entrée tel qu'il a été dit cardinal1234one thousand two hundred thirty-four ordinal21twenty-first date1999-12-31Trente et unième décembre, dix-neuf-vingt-dix-neuf time14:30two thirty PM telephone+1-555-867-5309plus one five five five eight six seven… currency$1,234.56one thousand two hundred thirty-four dollars and fifty-six cents spell-outNASAN A S A mdy pour l'anglais et dmy ailleurs; remplacer format=\{
"model": "kokoro",
"voice": "af_bella",
"text": "Your appointment is on <say-as interpret-as=\"date\">2026-04-26</say-as> at <say-as interpret-as=\"time\">14:30</say-as>. Please call <say-as interpret-as=\"telephone\">+1-555-867-5309</say-as> if you need to reschedule."
}Réponse
Step 1: Submit request
{
"uuid": "77b71db532874ce98e84a69a2d740d4c",
"job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
"status": "queued",
"credits_used": 11,
"credits_remaining": 15000
}Step 2: Poll for result
status is completed or failed.{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}{
"status": "processing"
}Step 3: Download audio
result_url from the completed response to download the audio file.Exemple complet
import requests, time
API_KEY = "sk-tts-your-key"
BASE = "https://api.tts.ai"
# 1. Submit TTS request
resp = requests.post(f"{BASE}/v1/tts/", json={
"model": "kokoro",
"text": "Hello from TTS.ai!",
"voice": "af_bella"
}, headers={"Authorization": f"Bearer {API_KEY}"})
data = resp.json()
uuid = data["uuid"]
# 2. Poll for result
while True:
result = requests.get(f"{BASE}/v1/speech/results/",
params={"uuid": uuid}).json()
if result["status"] == "completed":
# 3. Download audio
audio = requests.get(result["result_url"])
with open("output.mp3", "wb") as f:
f.write(audio.content)
break
elif result["status"] == "failed":
raise Exception(result.get("error", "Generation failed"))
time.sleep(1.5)POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.
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 | Essayez de préserver les caractéristiques vocales de l'enceinte originale. Par défaut : false |
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
}
Lot TTS
Soumettre plusieurs textes pour la génération parallèle TTS. En option, recevez un callback webhook lorsque tous les travaux sont terminés.
Paramètres
| Paramètre | Type | Désignation des marchandises |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | L'URL optionnelle du POST est obtenue lorsque le lot est terminé. |
Réponse
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Progrès du sondage avec GET /v1/tts/batch/result/?batch_id=abc123
Intégration de la voix
Pré-calculez un ancrage vocal à partir de l'audio de référence. Utilisez l'intégration_id renvoyée dans les requêtes subséquentes de clonage vocal pour une génération quasi-instantanée.
Paramètres
| Paramètre | Type | Désignation des marchandises |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Réponse
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Vérification de la santé
Vérifiez l'état du serveur GPU, les modèles chargés et la taille de la file d'attente. Aucune authentification requise. Caché pendant 30 secondes.
Réponse
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
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
}
Sous-titres (SRT/VTT) nouveaux
Générer des sous-titres synchronisés pour tout travail TTS terminé. Exécute l'alignement Whisper sur l'audio et retourne SRT ou WebVTT. Le résultat est mis en cache sur le disque de sorte qu'un deuxième appel pour le même uuid est une lecture de disque.
Paramètres de requête
| Paramètre | Requis | Désignation des marchandises |
|---|---|---|
| uuid | Oui | Job UUID retourné par /v1/tts/ ou /v1/voix-clone/. |
| format | Numéro | srt (par défaut) ou vtt. |
| download | Numéro | 1 pour envoyer Disposition de contenu: pièce jointe afin que le navigateur enregistre plutôt que d'afficher. |
| language | Numéro | Alignez-vous sur le modèle d'alignement (autodétecté si omis). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Dictionnaire de prononciation nouveaux
Dites au moteur TTS comment prononcer des mots spécifiques. Les entrées sauvegardées s'appliquent automatiquement à chaque demande TTS que vous faites. 200 entrées par compte limite.
Organe de demande (POST)
| Paramètre | Type | Désignation des marchandises |
|---|---|---|
| word | string | Mot à remplacer (p. ex. GIF, Anthropic). |
| replacement | string | Comment l'épeler pour le modèle (p. ex. jiff, ann THROP ick). |
| language | string | Code ISO facultatif. Vide = s'applique à toutes les langues. |
| case_sensitive | boolean | Par défaut false. Cas de correspondance exactement quand true. |
# Save an entry
curl -X POST https://tts.ai/api/v1/pronunciations/ \
-H "Authorization: Bearer sk-tts-..." \
-H "Content-Type: application/json" \
-d '{"word": "GIF", "replacement": "jiff"}'
# List your entries
curl https://tts.ai/api/v1/pronunciations/ -H "Authorization: Bearer sk-tts-..."
# Delete entry by id
curl -X DELETE "https://tts.ai/api/v1/pronunciations/?id=42" -H "Authorization: Bearer sk-tts-..."
Vous pouvez également passer des commandes par demande sans les enregistrer — inclure prononciations sur n'importe quel appel /v1/tts/ en tant qu'objet ou tableau (voir les paramètres du paramètre TTS).
Article Narrateur nouveaux
Déposer une seule balise sur n'importe quelle page d'article et les visiteurs obtiennent une barre de lecture fixe qui narrate la page en cliquant. Détecte automatiquement le corps de l'article, prend en charge la voix / modèle / position / couleur accent.
<script src="https://tts.ai/narrator.js"
data-pk="pk-tts-your-publishable-key"
data-voice="af_bella"
data-model="kokoro"
data-extract="auto"
data-position="bottom"
data-color="#e60000"
data-locale="en"></script>
Options
| Paramètre | Désignation des marchandises |
|---|---|
data-pk | Clé publiable (pk-tts-...). Restrictions de domaine appliquées via le champ allowed_domains de la clé. |
data-voice | ID vocal. Par défaut af_bella. |
data-model | ID du modèle TTS. Par défaut kokoro. |
data-extract | auto (par défaut) — trie les sélecteurs de contenu article/main/.post-content/.entry-content, revient à un cluster de paragraphe le plus dense. Ou passe n'importe quel sélecteur CSS pour cibler un élément spécifique. |
data-position | bottom (par défaut) ou top. |
data-color | Couleur exacte (toute couleur CSS). Par défaut #e60000. |
data-min-chars / data-max-chars | Sautez la barre si l'article est plus court que min-chars (par défaut 200). Capturez l'entrée à max-chars (par défaut 50 000). |
Écoute Bouton Widget
Inline bouton-style embed. Renders à côté de son tag et joue un petit extrait de bouton-déclenchement. Forme différente de l'article Narrator ci-dessus (qui injecte automatiquement une barre de spanning de page et narrate l'article entier).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Saved Voices (Clones persistantes)
Télécharger un audio de référence une fois, récupérer un vocal_id persistant, puis référencer que l'id dans TTS demande au lieu de recharger l'audio chaque appel. Idéal pour les intégrations à grand volume.
Télécharger une voix
POST
https://tts.ai/api/v1/user-voices/
Resp.: Ministère de l'Agriculture et de l'Agroalimentaire
Formulaire multipart. Champs: fichier (obligatoire, 5-30s audio), nom (obligatoire), langue (facultatif, par défaut en), modèle (facultatif — auto-picks cosyvoice2 pour zh/ja/ko other openvoice), consentement_confirmé (obligatoire, toute valeur vraie).
curl -X POST https://tts.ai/api/v1/user-voices/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@reference.wav" \
-F "name=My Narrator" \
-F "language=en" \
-F "consent_confirmed=true"
# Response:
{
"public_id": "uv_a1b2c3d4e5f6",
"id": 42,
"name": "My Narrator",
"model_name": "openvoice",
"language": "en",
"reference_audio_url": "https://tts.ai/media/user-voices/....wav",
"storage_status": "active",
"created_at": "2026-04-17T03:45:00+00:00"
}
Utilisez la voix enregistrée dans TTS
POST to /api/v1/tts/ (NOTE: web VPS host, pas api.tts.ai) avec user_voice_id. Nous chargeons votre audio stocké et le chemin vers le pipeline de clonage.
curl -X POST https://tts.ai/api/v1/tts/ \
-H "Authorization: Bearer sk-tts-your-key" \
-H "Content-Type: application/json" \
-d '{"text":"Hello from my saved voice","user_voice_id":"uv_a1b2c3d4e5f6"}'
# Returns a queued job — poll /v1/speech/results/?uuid=... for the audio URL.
Liste / supprimer
GET https://tts.ai/api/v1/user-voices/ # list your saved voices + quota info
DELETE https://tts.ai/api/v1/user-voices/?public_id=uv_a1b2c3d4e5f6
Archive / réactiver (gratuit)
Les voix archivées restent dans votre compte mais ne peuvent pas être utilisées dans le TTS. Utile pour les utilisateurs finaux dormants afin que votre liste reste propre.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
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 characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| État HTTP | Code d'erreur | 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 caractères. Achetez plus à /pricing/. |
| 403 | forbidden |
Vous n'avez pas la permission d'accéder à cette ressource (p. ex., sondage auprès d'un autre utilisateur). L'accès à l'API lui-même est inclus dans chaque 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.