Documentazione API
Integra TTS.ai nelle tue applicazioni con la nostra API REST. Formato compatibile con OpenAI per una facile migrazione.
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
/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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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 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 | 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
Converte il testo in audio vocale. Restituisce il file audio nel formato richiesto.
Organo di richiesta
| Parametro | Tipo | Richiesto | Designazione 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 | Sì | Testo da convertire in discorso. Cappuccio per richiesta: 500 caratteri (anonimo), 5.000 (conto gratuito), 1.000.000 (piano pagato). |
| 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. |
| 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 -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 Formato della data predefinito per 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
interpreta-come Input Detto 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 mdy per l'inglese e dmy altrove; override con 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."
}Risposta
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.Esempio completo
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.
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 le caratteristiche vocali dell'altoparlante originale. Predefinito: false |
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
}
Lotto TTS
Inviare più testi per la generazione parallela di TTS. Ricevere opzionalmente un callback webhook quando tutti i lavori terminano.
Parametri
| Parametro | Tipo | Designazione delle merci |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | URL opzionale per i risultati POST quando il batch viene completato. |
Risposta
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Sondaggio dei progressi con GET /v1/tts/batch/result/?batch_id=abc123
Inserimento vocale
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
| Parametro | Tipo | Designazione delle merci |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Risposta
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Controllo dello stato di salute
Controlla lo stato del server GPU, i modelli caricati e la dimensione della coda. Non è richiesta alcuna autenticazione.
Risposta
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
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
}
Sottotitoli (SRT / VTT) nuovo
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
| Parametro | Richiesto | Designazione delle merci |
|---|---|---|
| uuid | Sì | Job UUID restituito da /v1/tts/ o /v1/voice-clone/. |
| format | No. | srt (default) o vtt. |
| download | No. | 1 per inviare Disposizione dei contenuti: allegato in modo che il browser salva piuttosto che visualizzare. |
| language | No. | Suggerimento al modello di allineamento (rilevato automaticamente se omesso). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Dizionario della pronuncia nuovo
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)
| Parametro | Tipo | Designazione delle merci |
|---|---|---|
| word | string | Word to override (es. GIF, Antropic). Word-boundary matched. |
| replacement | string | Come scriverlo per il modello (ad esempio jiff, ann ро ick). |
| language | string | Codice ISO opzionale. Vuoto = si applica a tutte le lingue. |
| case_sensitive | boolean | Valore predefinito false. Corrispondenza caso esattamente quando 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-..."
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 tag su qualsiasi pagina dell'articolo e i visitatori ottengono una barra di lettura fissa che narra la pagina su click. Rileva automaticamente il corpo dell'articolo, supporta il colore voce / modello / posizione / accento personalizzato.
<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>
Opzioni
| Parametro | Designazione delle merci |
|---|---|
data-pk | Chiave pubblicabile (pk-tts-...). Restrizioni di dominio applicate tramite il campo allowed_dominis della chiave. |
data-voice | ID voce. Predefinito af_bella. |
data-model | ID modello TTS. Codice predefinito kokoro. |
data-extract | auto (default) > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >;;; > > > > > > > > > > > > > > > > > > > > > > > > > >; > >;; > > > > > > > > >; >; > >;;;;; >;;;;; >;;;;;;;;;;;;;;;;;; |
data-position | bottom (default) o top. |
data-color | Colore dell'accento (qualsiasi colore CSS). Default #e60000. |
data-min-chars / data-max-chars | Salta la barra se l'articolo è più corto di min-chars (default 200). Ingresso Cap a max-chars (default 50.000). |
Widget pulsante Ascolta
Inline button-style embed. Rende accanto al tag e riproduce uno snippet corto attivato da pulsante. Differente forma dal Narratore dell'articolo sopra (che auto-installa una barra di apertura della pagina e narra l'intero articolo).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Voci salvate (cloni persistenti)
Caricare un audio di riferimento una volta, recuperare un voice_id persistente, quindi riferimento che id in TTS richiede invece di ricaricare audio ogni chiamata. Ideale per integrazioni ad alto volume.
Carica una voce
POST
https://tts.ai/api/v1/user-voices/
Auth richiesta
Forme multiple. Campi: file (richiesto, audio 5-30s), nome (richiesto), lingua (opzionale, di default en), modello (opzionale cosyvoice cosypicks opzionale per zh/ja/ko altro openvoice), consenso_confermato (richiesto, qualsiasi valore veritiero).
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"
}
Usa la voce salvata in TTS
POST a /api/v1/tts/ (NOTA: host web VPS, non api.tts.ai) con user_voice_id. Caricamo l'audio memorizzato e il percorso alla pipeline di clonazione.
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.
Elenca / elimina
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
Archivio / riattivare (gratuito)
Le voci archiviate rimangono nel tuo account ma non possono essere utilizzate in TTS. Utile per gli utenti finali inattivo in modo che la tua lista rimanga pulita.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
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 characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| Stato HTTP | Codice errore | 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 caratteri. Acquista di più a /pricing/. |
| 403 | forbidden |
Non hai il permesso di accedere a questa risorsa (ad es. interrogare il lavoro di un altro utente). L'accesso API è incluso in ogni 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 tua chiave API e inizia a integrare TTS.ai nelle tue applicazioni.