Dokumentacja API

Integruj 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

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.

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

Wszystkie żądania API wymagają uwierzytelnienia za pośrednictwem tokena 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.

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 Concurrent Maksymalna długość tekstu
Prof. 60 5 5000 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) 1 kredyt na 1000 znaków
TTS (Standardne modele: Kokoro, CosyVoice 2, itp.) 2 kredyty na 1000 znaków
TTS (Modele premium: Tortoise, Chatterbox itp.) 4 kredyty na 1000 znaków
Przemówienie do tekstu 2 kredyty za minutę dźwięku
Klonowanie głosu 4 kredyty na 1000 znaków
Zmiana głosu 3 kredyty za minutę dźwięku
Poprawa dźwięku 2 kredyty za minutę dźwięku
Usunięcie głosów / rozdzielenie stemów Kredyty 3-4 za minutę dźwięku
Tłumaczenie mowy 5 kredytów za minutę dźwięku
Rozmowa głosowa 3 kredyty 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 Tak. Wzór ID (np. kokoro, chatterbox , piper)
text string Tak. Tekst do konwersji na przemówienie (max 5000 znaków dla Pro, 50 000 dla Enterprise)
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.
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

Odpowiedź

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

Nagłówki odpowiedzi
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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ć oryginalnego głośnika

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 fileAudio file to analyze
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
}

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
}

Przykłady kodu

Tekst do mowy

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')}")

Przemówienie do tekstu

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"])

Klonowanie głosu

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)

Tekst do mowy

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();

Przemówienie do tekstu

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

Tekst do mowy

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

Przemówienie do tekstu

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"

Klonowanie głosu

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

Poprawa dźwięku

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

Kody błędów

Wszystkie błędy zwracają odpowiedź JSON z error Pole.

Format odpowiedzi na błąd
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
Status HTTPError CodeOpis
400 bad_request Nieprawidłowe parametry żądania. Sprawdź wiadomość o błędzie w celu uzyskania szczegółów.
401 unauthorized Brak lub nieprawidłowy klucz API.
402 insufficient_credits Za mało kredytów. Zakup więcej w /pricing /.
403 forbidden Dostęp API nie jest dostępny w planie.
404 not_found Nie znaleziono modelu ani głosu.
413 file_too_large Wysłany plik przekracza limit rozmiaru.
429 rate_limited Zbyt wiele zapytań. Sprawdź zagłówki ograniczeń częstotliwości.
500 internal_error Błąd serwera. Spróbuj później.
503 model_loading Model jest załadowany. Powtórz za kilka sekund.

Witryny internetowe

Dla długich zadań (rozdzielenie stemów, serial TTS) można podać parametr webhook_url. Po zakończeniu zadania pokażemy wynik na Twój 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"
}
Wyniki Webhook są dostępne do pobrania przez 24 godziny po zakończeniu. Upewnij się, że pobierz je szybko.

Gotowy do budowy?

Weź klucz API i zacznij integrować TTS.ai do aplikacji.