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

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.

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.

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

POST /v1/tts/

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

Organo di richiesta

ParametroTipoRichiestoDesignazione delle merci
model string Modello ID (ad esempio, kokoro, chatterbox, piper)
text string Testo da convertire in discorso (max 5.000 caratteri per Pro, 50.000 per Enterprise)
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.
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

Risposta

Returns the audio file as binary data with appropriate Content-Type header (audio/mpeg, audio/wav, etc.).

Intestazioni di risposta
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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 l'altoparlante originale

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
}

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
}

Esempi di codice

Testo al discorso

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

Python - requests
# 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

Python - requests
# 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

JavaScript - fetch
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

JavaScript - fetch
// 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

cURL
# 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

cURL
# 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

cURL
# 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

cURL
# 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.

Formato di risposta dell'errore
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
Stato HTTPError CodeDesignazione 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.

Webhook Payload
{
  "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"
}
I risultati di Webhook sono disponibili per il download per 24 ore dopo il completamento. Assicurati di scaricarli immediatamente.

Pronto a costruire?

Ottieni la chiave API e inizia a integrare TTS.ai nelle tue applicazioni.