Documentazione API
Integra TTS.ai nelle tue applicazioni con la nostra API REST. Formato compatibile con OpenAI per una facile migrazione.
Panoramica
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.
Chiave API
Ottieni la tua chiave API da Impostazioni account. Disponibile su piani Pro e Enterprise.
URL di base
https://api.tts.ai/v1/
AuthCity name (optional, probably does not need a translation)
Token del portatore tramite Authorization intestazione
Autenticazione
Tutte le richieste API richiedono autenticazione tramite un token Portatore nel Authorization intestazione.
Authorization: Bearer sk-tts-your-api-key-here
URL di base
Tutti gli endpoint sono relativi a questo URL di base. Ad esempio, l'endpoint TTS è:
Limiti di frequenza
I limiti di velocità API variano a seconda del piano:
| Piano | Richieste/min | Concurrent | Lunghezza massima testo |
|---|---|---|---|
| Pro | 60 | 5 | 5.000 caratteri |
| Impresa | 300 | 20 | 50.000 caratteri |
Le intestazioni dei limiti di velocità sono incluse in ogni risposta: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Costi del credito
| Servizio | Costo | Unità |
|---|---|---|
| TTS (Modelli gratuiti: Piper, VITS, MeloTTS) | 1 credito | per 1.000 caratteri |
| TTS (Modelli standard: Kokoro, CosyVoice 2, ecc.) | 2 crediti | per 1.000 caratteri |
| TTS (Modelli premium: Tortoise, Chatterbox, ecc.) | 4 crediti | per 1.000 caratteri |
| Discorso al testo | 2 crediti | per minuto di audio |
| Clonazione vocale | 4 crediti | per 1.000 caratteri |
| Cambio voce | 3 crediti | per minuto di audio |
| Miglioramento audio | 2 crediti | per minuto di audio |
| Rimozione vocale / Dividere lo stem | 3-4 crediti | per minuto di audio |
| Traduzione vocale | 5 crediti | per minuto di audio |
| Chat vocale | 3 crediti | per giro |
| Cerca & BPM chiave | Libero | -- |
| Convertitore audio | Libero | -- |
Testo al discorso
Converte il testo in audio vocale. Restituisce il file audio nel formato richiesto.
Organo di richiesta
| Parametro | Tipo | Richiesto | Designazione delle merci |
|---|---|---|---|
| model | string | Sì | Modello ID (ad esempio, |
| text | string | Sì | Testo da convertire in discorso (max 5.000 caratteri per Pro, 50.000 per Enterprise) |
| voice | string | Sì | ID voce (usare /v1/voices/ per elencare le voci disponibili) |
| format | string | No. | Formato di uscita: mp3 (default), wav, flac, ogg |
| speed | float | No. | Moltiplicatore di velocità parlante. Predefinito: 1.0. Ampiezza: 0.5 a 2.0 |
| language | string | No. | Codice lingua (ad esempio, en, es). Rilevato automaticamente se omesso. |
| stream | boolean | No. | Abilita risposta in streaming. Predefinito: false |
Richiesta di esempio
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
Risposta
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
Discorso al testo
Trascrivi audio a testo. Supporta 99 lingue con rilevamento automatico.
Organo di richiesta (multipart/form-data)
| Parametro | Tipo | Richiesto | Designazione delle merci |
|---|---|---|---|
| file | file | Sì | File audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB. |
| model | string | No. | Modello STT: whisper (default), faster-whisper, sensevoice |
| language | string | No. | Codice lingua. auto per la rilevazione automatica (default). |
| timestamps | boolean | No. | Includi timestamp a livello di parola. Predefinito: false |
| diarize | boolean | No. | Abilita la diarizzazione degli altoparlanti. Predefinito: false |
Risposta
{
"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"
}
]
}
Clonazione vocale
Generare il discorso in una voce clonata. Caricare un audio e un testo di riferimento.
Organo di richiesta (multipart/form-data)
| Parametro | Tipo | Richiesto | Designazione delle merci |
|---|---|---|---|
| reference_audio | file | Sì | Audio vocale di riferimento (10-30 secondi consigliati). Max 20MB. |
| text | string | Sì | Scrivi per parlare con la voce clonata. |
| model | string | No. | Modello di clone: chatterbox (default), cosyvoice2, gpt-sovits |
| format | string | No. | Formato di uscita: mp3 (default), wav, flac |
| language | string | No. | Codice del linguaggio di destinazione. Deve essere supportato dal modello scelto. |
Risposta
Restituisce il file audio come dati binari, come l'endpoint TTS.
Cambio voce
Converti l'audio in voce diversa. Carica l'audio sorgente e scegli una voce di destinazione.
Organo di richiesta (multipart/form-data)
| Parametro | Tipo | Richiesto | Designazione delle merci |
|---|---|---|---|
| file | file | Sì | File audio sorgente (MP3, WAV, FLAC). Max 50MB. |
| target_voice | string | Sì | ID vocale da convertire in (usare /v1/voices/ per elencare le voci disponibili) |
| model | string | No. | Modello di conversione vocale: openvoice (default), knn-vc |
| format | string | No. | Formato di uscita: wav (default), mp3, flac |
Richiesta di esempio
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
Risposta
Restituisce il file audio convertito come dati binari.
Traduzione vocale
Tradurre l'audio parlato da una lingua all'altra. Combina discorso-testo, traduzione e testo-voce in una singola chiamata.
Organo di richiesta (multipart/form-data)
| Parametro | Tipo | Richiesto | Designazione delle merci |
|---|---|---|---|
| file | file | Sì | File audio sorgente in lingua originale. Max 100MB. |
| target_language | string | Sì | Codice della lingua di destinazione (ad esempio, |
| voice | string | No. | Voce per l'output tradotto. Auto-selezionato se omesso. |
| preserve_voice | boolean | No. | Tentativo di preservare l'altoparlante originale |
Risposta
{
"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
}
Discorso al Discorso
Trasforma lo stile del discorso, l'emozione o la consegna mantenendo il contenuto. Utile per regolare il tono, il ritmo e l'espressività.
Organo di richiesta (multipart/form-data)
| Parametro | Tipo | Richiesto | Designazione delle merci |
|---|---|---|---|
| file | file | Sì | File audio vocale sorgente. Max 50MB. |
| voice | string | Sì | ID della voce di destinazione per il discorso di output |
| model | string | No. | Modello: openvoice (default), chatterbox |
| emotion | string | No. | Emozione di destinazione: neutral, happy, sad, angry, excited |
| speed | float | No. | Regolazione della velocità. Predefinito: 1.0. Ampiezza: 0.5 a 2.0 |
Risposta
Restituisce il file audio trasformato come dati binari.
Strumenti audio
Endpoint di elaborazione audio per il miglioramento, la rimozione vocale, la divisione dello stelo, e altro ancora.
Migliorare la qualità audio: denoising, migliorare la chiarezza, super risoluzione.
| file file | File audio da migliorare |
| denoise boolean | Abilita denoising (default: true) |
| enhance_clarity boolean | Migliorare la chiarezza del linguaggio (default: true) |
| super_resolution boolean | Qualità audio superiore (predefinita: falsa) |
| strength integer | 1-3 (leggero, medio, forte). Predefinito: 2 |
Separare la voce dagli strumenti (rimozione vocale) o dividere in steli.
| file file | File audio da separare |
| model string | demucs (predefinito) oppure spleeter |
| stems integer | Numero di steli: 2, 4, 5 o 6 (default: 2) |
| format string | Formato di uscita: wav, mp3, flac |
Rimuovere l'eco e il riverbero dalle registrazioni audio.
| file file | File audio da elaborare |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analizza l'audio per rilevare la chiave, il BPM e la firma temporale.
| file file | File audio da analizzare |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Converti l'audio tra i formati.
| file file | File audio da convertire |
| format string | Formato obiettivo: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Bitrate di uscita in kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Tasso di campionamento: 22050, 44100, 48000 |
| channels string | mono oppure stereo |
Chat vocale
Inviare audio o testo e ricevere una risposta AI con discorso sintetizzato.
Organo di richiesta (multipart/form-data oppure JSON)
| Parametro | Tipo | Richiesto | Designazione delle merci |
|---|---|---|---|
| audio | file | No.* | Input audio (richiesto audioo text) |
| text | string | No.* | Input di testo (richiesto audioo text) |
| voice | string | No. | Voce per la risposta AI. Predefinito: af_bella |
| tts_model | string | No. | Modello TTS per la risposta. Predefinito: kokoro |
| system_prompt | string | No. | Prompt di sistema personalizzato per l'AI |
| conversation_id | string | No. | Continua una conversazione esistente |
Risposta
{
"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
}
Modelli elenco
Restituisce un elenco di tutti i modelli disponibili con le loro capacità.
Risposta
{
"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
}
]
}
Elenca voci
Restituisce un elenco di tutte le voci disponibili, filtrate opzionalmente per modello o lingua.
Parametri di interrogazione
| Parametro | Tipo | Designazione delle merci |
|---|---|---|
| model | string | Filtra per ID modello (ad esempio, |
| language | string | Filtrare per codice della lingua (ad esempio, en) |
| gender | string | Filtro per genere: male, femmina, neutro |
Risposta
{
"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
}
Esempi di codice
Testo al discorso
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')}")
Discorso al testo
# 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"])
Clonazione vocale
# 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)
Testo al discorso
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();
Discorso al testo
// 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);
Testo al discorso
# 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
Discorso al testo
# 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"
Clonazione vocale
# 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
Miglioramento 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
Codici di errore
Tutti gli errori restituiscono una risposta JSON con un error campo.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough credits for this request.",
"credits_required": 4,
"credits_available": 2
}
}
| Stato HTTP | Error Code | Designazione delle merci |
|---|---|---|
| 400 | bad_request |
Parametri di richiesta non validi. Controllare il messaggio di errore per i dettagli. |
| 401 | unauthorized |
Chiave API mancante o non valida. |
| 402 | insufficient_credits |
Non abbastanza crediti. Acquistare di più a /pricing/. |
| 403 | forbidden |
Accesso API non disponibile sul tuo piano. |
| 404 | not_found |
Modello o voce non trovata. |
| 413 | file_too_large |
Il file caricato supera il limite di dimensione. |
| 429 | rate_limited |
Troppe richieste. Controllare le intestazioni limite di frequenza. |
| 500 | internal_error |
Errore del server. Riprova più tardi. |
| 503 | model_loading |
La modella si sta caricando. |
WebhooksCity name (optional, probably does not need a translation)
Per le attività a lungo termine (divisioni stem, TTS batch), è possibile fornire un parametro webhook_url. Quando l'attività completa, POSTeremo il risultato al tuo 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"
}
Pronto a costruire?
Ottieni la chiave API e inizia a integrare TTS.ai nelle tue applicazioni.