Dokumentacja API

Iнтегрuj TTS.ai do aplikacji z naszym REST API. Kompatybilny z OpenAI format dla łatwej migracji.

REST API Kompatybilny z OpenAI Odpowiedzi JSON Streaming Wsparcie

Przegląd

API TTS.ai zapewnia dostęp programowy do wszystkich funkcji platformy: syntezy tekstu do języka, transkrypcji mowy do tekstu, klonowania głosu, poprawy dźwięku i innych. API wykorzystuje standardowe konwencje REST z JSON request/response.

Klucz API

Weź klucz API z Ustawienia konta. Dostępne na planach Pro i Enterprise.

Podstawowy URL

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

Auth

Token nośnika za pośrednictwem Authorization Nagłówek

Uwierzytelnienie

Bezpłatny poziom – nie jest wymagany klucz. Anonimowe POST do /v1/tts/ praca bez autoryzacji, do 5000 znaków/dzień na IP, korzystając z któregokolwiek z naszych wolnych modeli (piper, vits, melotts, kokoro). Zarejestruj się na bezpłatne konto, aby otrzymać 15 000 bonusowych znaków i dostęp do modeli premium.

W przypadku modeli premium i ograniczeń stawek wyższych, uwierzytelniać z tokenem Nośnika w Authorization Nagłówek.

Nagłówek HTTP
Authorization: Bearer sk-tts-your-api-key-here
Trzymaj klucz API w tajemnicy. Nie dzielić się nim w kodze klienta, w repozytorium publicznym lub logach. Owracać klawisze regularnie z ustawienia konta.

SDKs

Oficjalne SDK ułatwiają włączenie TTS.ai do aplikacji. Obydwa są otwarte źródła i dostępne na 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

Podstawowy URL

Podstawowy URL: https://api.tts.ai/v1/

Wszystkie punkty końcowe są w stosunku do tego podstawowego URL. Na przykład punkt końcowy TTS to:

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

Ograniczenia stawki

Limity stawek API różnią się w zależności od planu:

Plan Wnioski/min Równoczesne Maksymalna długość tekstu
Darmowe 10 2 500 znaków
Rozpoczynacz 30 3 1 000 000 znaków
Prof. 60 5 1 000 000 znaków
Przedsiębiorstwo 300 20 50 000 znaków

Nagłówki ograniczeń częstotliwości są włączone do każdej odpowiedzi: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Koszty kredytowe

Usługa Koszt Jednostka
TTS (Bezpłatne modele: Piper, VITS, Melotts) 1000 znaków na 1000 znaków
TTS (Standardne modele: Kokoro, CosyVoice 2, itp.) 2000 znaków na 1000 znaków
TTS (Modele premium: Tortoise, Chatterbox itp.) 4000 znaków na 1000 znaków
Przemówienie do tekstu 2000 znaków za minutę dźwięku
Klonowanie głosu 4000 znaków na 1000 znaków
Zmiana głosu 3000 znaków za minutę dźwięku
Poprawa dźwięku 2000 znaków za minutę dźwięku
Usunięcie głosów / rozdzielenie stemów 3000-4 000 znaków za minutę dźwięku
Tłumaczenie mowy 5000 znaków za minutę dźwięku
Rozmowa głosowa 3000 znaków na skręt
Znajdź klucz & BPM Darmowe --
Konwerter audio Darmowe --

Tekst do mowy

POST /v1/tts/

Przekonwertuj tekst do dźwięku. Zwraca plik audio w wymaganym formacie.

Organ wniosku

ParametrRodzajWymaganeOpis
model string Nie. Wzorzec ID (np., kokoro, chatterbox, piper. Jeśli nie wybierzemy modelu, który obsługuje wymagany kod <>jezyk -- kokoro dla en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper dla innych obsługiwanych języków (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.).
text string Tak. Tekst do konwersji w przemówienie. Na żądanie cap: 500 znaków (anonimowe), 5000 (bezpłatne konto), 1 000 000 (płatny plan). Długie wejście są automatycznie zdjęte serwerem.
voice string Tak. ID głosu (użyj /v1/woices/, aby wykazać dostępne głosy)
format string Nie. Format wyjściowy: < kod > mp3 (domyślnie), < kod>wav, < kod>flac, < kod>ogg
speed float Nie. Mnożnik prędkości mnożnik mnożnik. Domyślnie: 1.0. Zakres: 0.5 do 2.0
language string Nie. Kod języka (np. en, es ). Autowykrywane, jeśli pominięto.
instructions string Nie. Wskazówki/wysyłki (≤500 znaków). np. \
pronunciations object | array Nie. Wymowa na żądanie przeważa. Albo {\
stream boolean Nie. Włącz odpowiedź strumieniową. Domyślnie: false

Przykładowy wniosek

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

SSML tagi

Numery zawijania, daty, waluty, numery telefoniczne i skróty w

interpret-jasWejścieMów jak
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31Trzydzieści pierwsze, dziewiętnaście dziewięć dziewięć dziewięć
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

Domyślny format daty mdy dla języka angielskiego i dmy gdzie indziej; zamocować za pomocą format=\

Przykład
{
  "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."
}

Odpowiedź

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.

Pełny przykład

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.

Przemówienie do tekstu

POST /v1/stt/

Transscribe audio to text. Obsługuje 99 języków automatycznie wykrywaniem.

Organ wniosku (multipart/form-data)

ParametrRodzajWymaganeOpis
file file Tak. Plik audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Nie. Model STT: whisper (domyślnie), szybszy-whisper , czucie
language string Nie. Kod języka. auto dla automatycznego wykrywania (domyślnie).
timestamps boolean Nie. Domyślne: false
diarize boolean Nie. Włącz diaryzację głośnika. Domyślnie: false

Odpowiedź

Odpowiedź JSON
{
  "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"
    }
  ]
}

Klonowanie głosu

POST /v1/tts/clone/

Generuj mowy w sklonowanym głosie. Wyślij odnośny dźwięk i tekst.

Organ wniosku (multipart/form-data)

ParametrRodzajWymaganeOpis
reference_audio file Tak. Głos referencyjny (10-30 sekund zalecane). Max 20MB.
text string Tak. Sms do wypowiedzenia w sklonowanym głosie.
model string Nie. Model klonowania: chatterbox (domyślnie), cosyvoice2, gpt-sovits
format string Nie. Format wyjściowy: < kod > mp3 (domyślnie), < kod>wav , < kod>flac
language string Nie. Kod języka docelowego. Musi być obsługiwany przez wybrany model.

Odpowiedź

Zwraca plik audio jako dane binarne, takie same jak punkt końcowy TTS.

Zmiana głosu

POST /v1/voice-convert/

Konwertuj dźwięk na dźwięk jak inny głos. Wyślij dźwięk źródłowy i wybierz głos docelowy.

Organ wniosku (multipart/form-data)

ParametrRodzajWymaganeOpis
file file Tak. Źródłowy plik audio (MP3, WAV, FLAC). Max 50MB.
target_voice string Tak. Docelowy ID głosu do konwersji (użyj /v1/woices/, aby wykazać dostępne głosy)
model string Nie. Model konwersji głosu: openvoice (domyślnie), knn-vc
format string Nie. Format wyjściowy: < kod>wav (domyślnie), < kod>>mp3, flac

Przykładowy wniosek

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

Odpowiedź

Zwraca konwertowany plik audio jako dane binarne.

Tłumaczenie mowy

POST /v1/speech-translate/

Przetłumacz głośny dźwięk z jednego języka do drugiego. Łączy mówka-do-tekstu, tłumaczenie, i tekst-to-speech w jednym połączenia.

Organ wniosku (multipart/form-data)

ParametrRodzajWymaganeOpis
file file Tak. Plik dźwiękowy źródłowy w języku oryginalnym. Max 100MB.
target_language string Tak. Kod docelowy język (np. es , fr, , de, ja)
voice string Nie. Głos dla przetłumaczonego wyjścia. Automatycznie wybrany, jeśli nie zostanie.
preserve_voice boolean Nie. Próbuj zachować charakterystyki głosowe oryginalnego głośnika. Domyślnie: false

Odpowiedź

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

Przemówienie do mowy

POST /v1/speech-to-speech/

Przekształcenie stylu mowy, emocji lub dostawy przy zachowaniu treści. Przydatne do dostosowania tonu, kroczenia i ekspresywności.

Organ wniosku (multipart/form-data)

ParametrRodzajWymaganeOpis
file file Tak. Źródłowy plik głośności. Max 50MB.
voice string Tak. Docelowy identyfikator głosu dla mowy wyjściowej
model string Nie. Model: openvoice (domyślnie), chatterbox
emotion string Nie. Emocja docelowa: neutralny , chappy, sad , angry , wzbudzony
speed float Nie. Modyfikacja prędkości. Domyślnie: < kod>1.0. Zakres: < kod>0.5 do 2.0

Odpowiedź

Zwraca przekształcony plik audio jako dane binarne.

Narzędzia audio

Przetwarzanie dźwięku punkt końcowy dla poprawy, usuwania wokału, dzielenia ścien i więcej.

POST /v1/audio/enhance/

Poprawa jakości dźwięku: denoize, poprawa jasności, super rozdzielczość.

file filePlik audio do poprawy
denoise booleanWłącz denoizację (domyślnie: true)
enhance_clarity booleanZwiększenie jasności mowy (domyślnie: true)
super_resolution booleanJakość dźwięku (domyślnie: false)
strength integer1-3 (lekkie, średnie, silne). Domyślnie: 2
POST /v1/audio/separate/

Oddzielne wokały od instrumentów (usunięcie dźwięku) lub podzielone na stebla.

file filePlik audio do oddzielenia
model stringdemucs (domyślne) lub spleeter
stems integerLiczba statek: 2, 4, 5 lub 6 (domyślnie: 2)
format stringFormat wyjściowy: wav, mp3, flac
POST /v1/audio/dereverb/

Usuń echo i odzwierciedlenie z nagrań audio.

file filePlik audio do przetwarzania
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Darmowe

Analiza dźwięku do wykrycia klucza, BPM i podpisu czasu.

file filePlik audio do analizy
Odpowiedź
{
  "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/ Darmowe

Konwertuj dźwięk między formatami.

file filePlik audio do konwersji
format stringFormat docelowy: < kod>> mp3, < kod>wav, < kod>flac, kod>, m4a, aac
bitrate integerPrędkość wyjściowa w kbps: 64, 128, 192, 256, 320
sample_rate integerCzęstotliwość próbki: 22050, 44100, 48000
channels stringmono lub stereo

Rozmowa głosowa

POST /v1/voice-chat/

Wyślij dźwięk lub tekst i otrzymaj odpowiedź AI z syntetyczną mową.

Organ wniosku (multipart/form-data lub JSON)

ParametrRodzajWymaganeOpis
audio file Nie.* Wejście dźwiękowe (lub audio lub text wymagane)
text string Nie.* Wejście tekstu (lub audio lub text wymagane)
voice string Nie. Głos do odpowiedzi AI. Domyślnie: af_bella
tts_model string Nie. Model TTS dla odpowiedzi. Domyślnie: kokoro
system_prompt string Nie. Właściwy zapytanie systemu dla AI
conversation_id string Nie. Kontynuuj istniejącą rozmowę

Odpowiedź

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

Nr serii TTS

POST /v1/tts/batch/

Przekazywanie wielu tekstów dla równoległego generowania TTS. Opcjonalnie otrzymywanie powrotnego telefonu internetowego po zakończeniu wszystkich zadań.

Parametry

ParametrRodzajOpis
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOpcjonalne URL do wyników POST po zakończeniu partii.

Odpowiedź

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

Analiza postępów z GET / v1/tts/batch/result/?batch_id=abc123

Wbudowanie głosu

POST /v1/voice-embed/

Wstępne komputuj wbudowanie głosu z dźwięku referencyjnego. Użyj zwrotnego embed_id w kolejnych żądaniach klonowania głosu dla niemal instant generacji.

Parametry

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

Odpowiedź

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

Kontrola zdrowia

GET /v1/health/

Sprawdź stan serwera GPU, wczytane modele i rozmiar kolejki. Nie jest wymagane uwierzytelnienie. Cached przez 30 sekund.

Odpowiedź

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

Modele listy

GET /v1/models/

Zwraca listę wszystkich dostępnych modeli z ich możliwościami.

Odpowiedź

Odpowiedź JSON
{
  "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
    }
  ]
}

Lista głosów

GET /v1/voices/

Zwraca listę wszystkich dostępnych głosów, opcjonalnie filtrowanych za pomocą modelu lub języka.

Parametry zapytania

ParametrRodzajOpis
model string Filtrować według wzoru ID (np. kokoro)
language string Filtrować według kodu językowego (np. en )
gender string Filtrować według płci: male , żeński , neutralny

Odpowiedź

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

Napisy (SRT / VTT) nowy

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

Generuj zsynchronizowane napisy dla dowolnego zakończonego zadania TTS. Uruchomia skojarzenie Whisper nad dźwiękiem i zwraca SRT lub WebVTT. Wynik jest klawiaturowany na dysku, więc drugi wyzwanie dla tego samego uuid jest odczytem dysku.

Parametry zapytania

ParametrWymaganeOpis
uuidTak.Job UUID zwrócił /v1/tts/ or / v1/voice- klone/.
formatNie.Srt (domyślnie) lub vt .
downloadNie.1, aby wysłać Content- Disposition: załącznik , więc przeglądarka zapisuje zamiast wyświetlać.
languageNie.Podpowiedź do modelu dostosowywania (wykryta automatycznie, jeśli została pominięta).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Słownik wymówek nowy

GET POST DELETE /api/v1/pronunciations/

Powiedź silnikowi TTS jak wymówić konkretne słowa. Zapisywane wpisy automatycznie zastosować do każdego TTS wymagania, które uczynisz. 200 wejściowych limitów na rachunek.

Organ wniosku (POST)

ParametrRodzajOpis
wordstringSłowo do zamocowania (np. GIF, Antropic). Dopasowuje się do granicznych słów.
replacementstringJak napisać to dla modelu (np. jiff, ann THROP ick).
languagestringOpcjonalny kod ISO. Pusty = ma zastosowanie do wszystkich języków.
case_sensitivebooleanDomyślny false . Dopasowanie litery dokładnie wtedy, gdy 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-..."

Można również przekazywać zamocowania na żądanie bez ich zapisywania – zawierać wypowiedzi na dowolnym /v1/tts/ call jako obiekt lub tablicę (patrz parametry końcowe TTS).

Artykuł Narrator nowy

Wyrzuć pojedynczy