Documentazione API

Integra TTS.ai nelle tue applicazioni con la nostra API REST. Formato compatibile con OpenAI per una facile migrazione.

API REST OpenAI Compatibile JSON Responses Supporto per lo stream

Panoramica

L'API TTS.ai fornisce l'accesso programmatico a tutte le funzionalità della piattaforma: sintesi testuale-parlare, trascrizione vocale-testo, clonazione vocale, miglioramento audio e altro ancora. L'API utilizza le convenzioni standard REST con i corpi di richiesta/risposta JSON.

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

Livello libero non è richiesta alcuna chiave. POST anonimi a /v1/tts/ lavorare senza alcun auth, fino a 5.000 caratteri al giorno per IP, utilizzando uno qualsiasi dei nostri modelli gratuiti (piper, vits, melotts, kokoro). Iscriviti per un account gratuito per ottenere 15.000 personaggi bonus e l'accesso a modelli premium.

Per i modelli premium e i limiti di velocità più elevati, autenticarsi con un token Portatore nel Authorization intestazione.

Intestazione HTTP
Authorization: Bearer sk-tts-your-api-key-here
Mantenere il segreto della chiave API. Non condividerlo in codice lato client, archivi pubblici o log. Ruota regolarmente le chiavi dalle impostazioni dell'account.

SDK

Gli SDK ufficiali semplificano l'integrazione di TTS.ai nell'applicazione. Entrambi sono open source e disponibili su 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")
GitHub

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');
GitHub

URL di base

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

Tutti gli endpoint sono relativi a questo URL di base. Ad esempio, l'endpoint TTS è:

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

Limiti di frequenza

I limiti di velocità API variano a seconda del piano:

Piano Richieste/min Concorrente Lunghezza massima testo
Libero 10 2 500 caratteri
Avviatore 30 3 1.000.000 chars
Pro 60 5 1.000.000 chars
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.

Utilizzo caratteri

Servizio Costo Unità
TTS (Modelli gratuiti: Piper, VITS, MeloTTS) 1.000 caratteri per 1.000 caratteri
TTS (Modelli standard: Kokoro, CosyVoice 2, ecc.) 2.000 caratteri per 1.000 caratteri
TTS (Modelli premium: Tortoise, Chatterbox, ecc.) 4.000 caratteri per 1.000 caratteri
Discorso al testo 2.000 caratteri per minuto di audio
Clonazione vocale 4.000 caratteri per 1.000 caratteri
Cambio voce 3.000 caratteri per minuto di audio
Miglioramento audio 2.000 caratteri per minuto di audio
Rimozione vocale / Dividere lo stem 3.000-4.000 caratteri per minuto di audio
Traduzione vocale 5.000 caratteri per minuto di audio
Chat vocale 3.000 caratteri per giro
Cerca & BPM chiave Libero --
Convertitore audio Libero --

Testo al discorso

POST /v1/tts/

Converte il testo in audio vocale. Restituisce il file audio nel formato richiesto.

Organo di richiesta

ParametroTipoRichiestoDesignazione delle merci
model string No. Modello ID (ad esempio, kokoro, chatterbox, piper). Se omesso, scegliamo automaticamente un modello che supporta il lingua και kokoro per en/ja/zh/ko/fr/it/pt/es/hi/ru, piper per altre lingue supportate (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.).
text string Testo da convertire in discorso. Cappuccio per richiesta: 500 caratteri (anonimo), 5.000 (conto gratuito), 1.000.000 (piano pagato).
voice string 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.
instructions string No. Agizione / consegna (≤500 caratteri). per esempio \
pronunciations object | array No. La pronuncia per-richiesta sovrascrive. Entrambi {\\
stream boolean No. Abilita risposta in streaming. Predefinito: false

Richiesta di esempio

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

Etichette SSML

Avvolgi numeri, date, valuta, numeri di telefono e acronimi in

interpreta-comeInputDetto come
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Trentuno dicembre, diciannove novantanove
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

Formato della data predefinito per mdy per l'inglese e dmy altrove; override con format=\

Esempio
{
  "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."
}

Risposta

The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result.

Step 1: Submit request

Response (JSON)
{
  "uuid": "77b71db532874ce98e84a69a2d740d4c",
  "job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
  "status": "queued",
  "credits_used": 11,
  "credits_remaining": 15000
}

Step 2: Poll for result

GET /v1/speech/results/?uuid=<job_uuid>

Poll this endpoint every 1-2 seconds until status is completed or failed.

Polling response (completed)
{
  "status": "completed",
  "result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
Polling response (still processing)
{
  "status": "processing"
}

Step 3: Download audio

Fetch the result_url from the completed response to download the audio file.

Esempio completo

Python
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)

Streaming alternative: For supported models (Kokoro, MeloTTS), use POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.

Discorso al testo

POST /v1/stt/

Trascrivi audio a testo. Supporta 99 lingue con rilevamento automatico.

Organo di richiesta (multipart/form-data)

ParametroTipoRichiestoDesignazione delle merci
file file 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

JSON Response
{
  "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

POST /v1/tts/clone/

Generare il discorso in una voce clonata. Caricare un audio e un testo di riferimento.

Organo di richiesta (multipart/form-data)

ParametroTipoRichiestoDesignazione delle merci
reference_audio file Audio vocale di riferimento (10-30 secondi consigliati). Max 20MB.
text string 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

POST /v1/voice-convert/

Converti l'audio in voce diversa. Carica l'audio sorgente e scegli una voce di destinazione.

Organo di richiesta (multipart/form-data)

ParametroTipoRichiestoDesignazione delle merci
file file File audio sorgente (MP3, WAV, FLAC). Max 50MB.
target_voice string 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
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

POST /v1/speech-translate/

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)

ParametroTipoRichiestoDesignazione delle merci
file file File audio sorgente in lingua originale. Max 100MB.
target_language string Codice della lingua di destinazione (ad esempio, es, fr, de, ja)
voice string No. Voce per l'output tradotto. Auto-selezionato se omesso.
preserve_voice boolean No. Tentativo di preservare le caratteristiche vocali dell'altoparlante originale. Predefinito: false

Risposta

JSON Response
{
  "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

POST /v1/speech-to-speech/

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)

ParametroTipoRichiestoDesignazione delle merci
file file File audio vocale sorgente. Max 50MB.
voice string 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.

POST /v1/audio/enhance/

Migliorare la qualità audio: denoising, migliorare la chiarezza, super risoluzione.

file fileFile audio da migliorare
denoise booleanAbilita denoising (default: true)
enhance_clarity booleanMigliorare la chiarezza del linguaggio (default: true)
super_resolution booleanQualità audio superiore (predefinita: falsa)
strength integer1-3 (leggero, medio, forte). Predefinito: 2
POST /v1/audio/separate/

Separare la voce dagli strumenti (rimozione vocale) o dividere in steli.

file fileFile audio da separare
model stringdemucs (predefinito) oppure spleeter
stems integerNumero di steli: 2, 4, 5 o 6 (default: 2)
format stringFormato di uscita: wav, mp3, flac
POST /v1/audio/dereverb/

Rimuovere l'eco e il riverbero dalle registrazioni audio.

file fileFile audio da elaborare
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Libero

Analizza l'audio per rilevare la chiave, il BPM e la firma temporale.

file fileFile audio da analizzare
Risposta
{
  "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/ Libero

Converti l'audio tra i formati.

file fileFile audio da convertire
format stringFormato obiettivo: mp3, wav, flac, ogg, m4a, aac
bitrate integerBitrate di uscita in kbps: 64, 128, 192, 256, 320
sample_rate integerTasso di campionamento: 22050, 44100, 48000
channels stringmono oppure stereo

Chat vocale

POST /v1/voice-chat/

Inviare audio o testo e ricevere una risposta AI con discorso sintetizzato.

Organo di richiesta (multipart/form-data oppure JSON)

ParametroTipoRichiestoDesignazione 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

JSON Response
{
  "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
}

Lotto TTS

POST /v1/tts/batch/

Inviare più testi per la generazione parallela di TTS. Ricevere opzionalmente un callback webhook quando tutti i lavori terminano.

Parametri

ParametroTipoDesignazione delle merci
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringURL opzionale per i risultati POST quando il batch viene completato.

Risposta

JSON Response
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Sondaggio dei progressi con GET /v1/tts/batch/result/?batch_id=abc123

Inserimento vocale

POST /v1/voice-embed/

Pre-computare un'integrazione vocale dall'audio di riferimento. Usare l'embed_id restituito nelle richieste successive di clonazione vocale per la generazione quasi istantanea.

Parametri

ParametroTipoDesignazione delle merci
filefileReference audio file (WAV, MP3, FLAC).
modelstringCloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts.

Risposta

JSON Response
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Controllo dello stato di salute

GET /v1/health/

Controlla lo stato del server GPU, i modelli caricati e la dimensione della coda. Non è richiesta alcuna autenticazione.

Risposta

JSON Response
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

Modelli elenco

GET /v1/models/

Restituisce un elenco di tutti i modelli disponibili con le loro capacità.

Risposta

JSON Response
{
  "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

GET /v1/voices/

Restituisce un elenco di tutte le voci disponibili, filtrate opzionalmente per modello o lingua.

Parametri di interrogazione

ParametroTipoDesignazione delle merci
model string Filtra per ID modello (ad esempio, kokoro)
language string Filtrare per codice della lingua (ad esempio, en)
gender string Filtro per genere: male, femmina, neutro

Risposta

JSON Response
{
  "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
}

Sottotitoli (SRT / VTT) nuovo

GET /v1/speech/subtitles/?uuid=<job_uuid>&format=srt|vtt&download=1

Generare sottotitoli sincronizzati per qualsiasi lavoro TTS completato. Esegui l'allineamento Whisper sull'audio e restituisce SRT o WebVTT. Risultato è cached su disco in modo che una seconda chiamata per lo stesso uuid è un disco letto.

Parametri di interrogazione

ParametroRichiestoDesignazione delle merci
uuidJob UUID restituito da /v1/tts/ o /v1/voice-clone/.
formatNo.srt (default) o vtt.
downloadNo.1 per inviare Disposizione dei contenuti: allegato in modo che il browser salva piuttosto che visualizzare.
languageNo.Suggerimento al modello di allineamento (rilevato automaticamente se omesso).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Dizionario della pronuncia nuovo

GET POST DELETE /api/v1/pronunciations/

Dite al motore TTS come pronunciare parole specifiche. Le voci salvate si applicano automaticamente a ogni richiesta TTS che fate. Limite 200-entry per-account.

Organo di richiesta (POST)

ParametroTipoDesignazione delle merci
wordstringWord to override (es. GIF, Antropic). Word-boundary matched.
replacementstringCome scriverlo per il modello (ad esempio jiff, ann ро ick).
languagestringCodice ISO opzionale. Vuoto = si applica a tutte le lingue.
case_sensitivebooleanValore predefinito false. Corrispondenza caso esattamente quando true.
cURL
# 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-..."

Puoi anche passare le sovrascritture per request senza salvarle, incluso pronunci su qualsiasi /v1/tts/call come oggetto o array (vedere i parami dell'endpoint TTS).

Articolo Narratore nuovo

Lasciare un singolo