API dokumentacija

Integruokite TTS.ai į savo programas su mūsų REST API. OpenAI suderinama forma lengva migracija.

REST API Suderinama su OpenAI JSON atsakymai Srauto palaikymas

Apžvalga

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.

API raktas

Gauti API raktą iš Paskyros nustatymai. Galima rasti Pro ir Enterprise planuose.

Pagrindinis URL

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

Auth

Meškerio simbolis per Authorization antraštė

Autentikacija

Visi API prašymai reikalauja autentiškumo patvirtinimo per Beaner žetoną Authorization antraštė.

HTTP antraštė
Authorization: Bearer sk-tts-your-api-key-here
Laikyti savo API raktą paslaptį. Nesidalinkite klientas kodas, viešų saugyklų ar rąstų. Pasukite klavišus reguliariai iš savo paskyros nustatymus.

Pagrindinis URL

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

All endpoints are relative to this base URL. For example, the TTS endpoint is:

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

Norminės ribos

API rate limits vary by plan:

Planas Prašymai/min. Concurrent Maksimalus teksto ilgis
Pro 60 5 5 000 chars
Įmonė 300 20 50 000 chars

Dažnio ribos antraštės yra įtrauktos į kiekvieną atsakymą: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kredito išlaidos

Dokumentų įteikimas Išlaidos Vienetas
TTS (nemokami modeliai: Piper, VITS, MeloTTS) 1 kreditas 1 000 simbolių
TTS (standartiniai modeliai: Kokoro, CosyVoice 2 ir t. t.) 2 kreditai 1 000 simbolių
TTS (Premijos modeliai: Tortoise, Chatterbox ir t. t.) 4 kreditai 1 000 simbolių
Kalba tekstui 2 kreditai per minutę garso
Balso klonavimas 4 kreditai 1 000 simbolių
Balso keitėjas 3 kreditai per minutę garso
Garso pagerinimas 2 kreditai per minutę garso
Vokalinis pašalinimas / suskaidymas 3–4 kreditai per minutę garso
Kalbų vertimas 5 kreditai per minutę garso
Balso pokalbis 3 kreditai Posūkio metu
Raktų ir BPM ieškiklis Neapmuitinama --
Garso konverteris Neapmuitinama --

Tekstas į kalbą

POST /v1/tts/

Konvertuoti tekstą į kalbos garso. Grąžina garso failą prašomu formatu.

Prašymą teikianti institucija

ParametrasTipasReikalingaAprašymas
model string Taip Pavyzdys ID (pvz., kokoro , chatterbox , piper )
text string Taip Tekstas konvertuoti į kalbą (maksimalus 5000 chars Pro, 50,000 Enterprise)
voice string Taip Balso ID (galimų balsų sąrašui naudoti /v1/balsai/ )
format string Nr. Išvesties formatas: mp3 (numatyta), wav , flac , g
speed float Nr. Kalba greičio daugiklis. Numatytasis: 1.0 . Intervalas: 0.5 iki < kodas> 2.0
language string Nr. Kalbos kodas (pvz., en , es ). Automatiškai nustatomas, jei jis praleistas.
stream boolean Nr. Įjungti srautinį atsaką. Numatytasis: < code> false

Pavyzdžio užklausa

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

Atsakas

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

Antraštės atsakymui
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

Kalba tekstui

POST /v1/stt/

Perrašyti garsą į tekstą. Palaiko 99 kalbas su automatiniu aptikimu.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
file file Taip Garso failas (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Maks. 100MB.
model string Nr. STT modelis: whisper (numatyta), fasher-whisper , sensessount
language string Nr. Kalbos kodas. Auto automatiniam aptikimui (numatyta).
timestamps boolean Nr. Įtraukti žodžio lygio žymeles. Numatytasis: < code> false
diarize boolean Nr. Įjungti garsiakalbio diarizaciją. Numatytasis: < code> false

Atsakas

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

Balso klonavimas

POST /v1/tts/clone/

Generuoti kalbą klonuotu balsu. Įkelkite referencinį garsą ir tekstą.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
reference_audio file Taip Atskaitos balso garsas (10-30 sekundžių rekomenduojama). Maks. 20MB.
text string Taip Tekstas kalbėti klonuotame balse.
model string Nr. Klono modelis: chatterbox (numatyta), cosyvoice2 , gpt-sovits
format string Nr. Išvesties formatas: mp3 (numatyta), wav , flac
language string Nr. Tikslinės kalbos kodas. Turi būti palaikomas pasirinktu modeliu.

Atsakas

Grąžina garso failą kaip dvejetainius duomenis, tą patį kaip ir TTS vertinamoji baigtis.

Balso keitėjas

POST /v1/voice-convert/

Konvertuoti garsą į kitą garsą. Įkelkite šaltinį ir pasirinkite tikslinį balsą.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
file file Taip Pradinis garso failas (MP3, WAV, FLAC).
target_voice string Taip Tikslinio balso ID konvertuoti į (naudoti / v1/balsai / sąrašą turimus balsus)
model string Nr. Balso konvertavimo modelis: openvoice (numatyta), knn-vc
format string Nr. Išvesties formatas: wav (numatyta), mp3, flac

Pavyzdžio užklausa

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

Atsakas

Grąžina konvertuoto garso failą kaip dvejetainius duomenis.

Kalbų vertimas

POST /v1/speech-translate/

Išversti garsą iš vienos kalbos į kitą. Sujungti kalbą į tekstą, vertimas, ir tekstas-į-speech į vieną skambutį.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
file file Taip Pradinis garso failas originalo kalba. Max 100MB.
target_language string Taip Tikslinės kalbos kodas (pvz., es , fr , de , ja )
voice string Nr. Balsas išverstam išvedimui. Auto- parinkta, jei praleista.
preserve_voice boolean Nr. Bandymas išsaugoti originalų kalbėtoją

Atsakas

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

Kalba pokalbiui

POST /v1/speech-to-speech/

Transform speech style, emotion, or delivery while keeping the content. Useful for adjusting tone, pacing, and expressiveness.

Prašymą teikianti institucija (multipart/form-data)

ParametrasTipasReikalingaAprašymas
file file Taip Pradinės kalbos garso failas. Maks. 50MB.
voice string Taip Tikslinio balso ID išvesties kalbai
model string Nr. Modelis: openvoice (numatyta), chatterbox
emotion string Nr. Tikslinė emocija: neutrali , Happy , sad , angry , excited
speed float Nr. Greičio reguliavimas. Numatytasis: 1.0 . Intervalas: 0.5 iki < kodas> 2.0

Atsakas

Grąžina transformuotą garso failą kaip dvejetainius duomenis.

Garso įrankiai

Audio processing endpoints for enhancement, vocal removal, stem splitting, and more.

POST /v1/audio/enhance/

Gerinti garso kokybę: denoise, padidinti aiškumą, super raiška.

file fileGarso failas stiprinimui
denoise booleanĮjungti denoizavimą (numatyta: true)
enhance_clarity booleanPadidinti kalbos aiškumą (numatyta: tiesa)
super_resolution booleanAtnaujinta garso kokybė (numatyta: klaidinga)
strength integer1-3 (šviesa, vidutinis, stiprus). Numatytasis: 2
POST /v1/audio/separate/

Atskiri vokalai nuo instrumentinių priemonių (vokų pašalinimas) arba padalinti į stiebus.

file fileGarso failas atskiriamas
model stringdemucs (įprastas) arba spleeter
stems integerKolonėlių skaičius: 2, 4, 5 arba 6 (numatyta: 2)
format stringIšvesties formatas: wav , mp3, flac
POST /v1/audio/dereverb/

Pašalinti aidą ir atgal iš garso įrašų.

file fileGarso failas apdorojamas
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Neapmuitinama

Analizuoti garso aptikti raktą, BPM, ir laiko parašas.

file fileAudio file to analyze
Atsakas
{
  "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/ Neapmuitinama

Konvertuoti garsą tarp formatų.

file fileKonvertuotinas garso failas
format stringTarget format: mp3, wav, flac, ogg, m4a, aac
bitrate integerIšvedimo bitų dažnis kbps: 64, 128, 192, 256, 320
sample_rate integerBandinių ėmimo greitis: 22050, 44100, 48000
channels stringmono arba stereo

Balso pokalbis

POST /v1/voice-chat/

Siųsti garsą ar tekstą ir gauti AI atsakymą su sintezuota kalba.

Prašymą teikianti institucija (multipart/form-data arba JSON)

ParametrasTipasReikalingaAprašymas
audio file Nr.* Garso įvestis (reikia arba audio , arba teksto )
text string Nr.* Teksto įvestis (reikalingas arba tekstas )
voice string Nr. Balsas AI atsakymui. Numatytasis: af_ bella
tts_model string Nr. TTS modelis atsakymui. Numatytasis: kokoro
system_prompt string Nr. Pasirinkta sistema greita AI
conversation_id string Nr. Tęsti esamą pokalbį

Atsakas

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

Rodyti modelių sąrašą

GET /v1/models/

Grąžina visų turimų modelių su savo galimybėmis sąrašą.

Atsakas

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

Rodyti balsus

GET /v1/voices/

Grąžina visų turimų balsų sąrašą, filtruojant pagal modelį ar kalbą.

Užklausos parametrai

ParametrasTipasAprašymas
model string Filtruoti pagal modelį ID (pvz., kokoro )
language string Filtruoti pagal kalbos kodą (pvz., en )
gender string Filtruoti pagal lytį: vyriškis , moterų , neutralus

Atsakas

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

Kodo pavyzdžiai

Tekstas į kalbą

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

Kalba tekstui

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

Balso klonavimas

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)

Tekstas į kalbą

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

Kalba tekstui

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

Tekstas į kalbą

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

Kalba tekstui

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"

Balso klonavimas

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

Garso pagerinimas

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

Klaidų kodai

Visos klaidos grąžinti JSON atsakymą su error laukas.

Klaidos atsakymo formatas
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
HTTP būsenaError CodeAprašymas
400 bad_request Netinkami užklausos parametrai. Norėdami sužinoti daugiau, patikrinkite klaidos pranešimą.
401 unauthorized Trūksta arba neteisingas API raktas.
402 insufficient_credits Neužtenka kreditų. Daugiau pirkite už /kainojimą/.
403 forbidden API prieiga jūsų plane neprieinama.
404 not_found Modelis arba balsas nerastas.
413 file_too_large Išsiunttas failas viršija dydžio ribą.
429 rate_limited Pernelyg daug užklausų. Check rate limit headers.
500 internal_error Serverio klaida. Pabandykite vėliau.
503 model_loading Modelis įkelia.

Žiniatinklio vožtuvai

Ilgai valdomoms užduotims (temų skaidymas, part TTS), galite pateikti Webhook_url parametrą. Kai užduotis bus baigta, mes perkelsime rezultatą į jūsų 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"
}
Webhook rezultatai yra prieinami atsisiųsti 24 valandas po užbaigimo. Įsitikinkite, kad juos nedelsiant atsisiųsti.

Pasiruošę statyti?

Gauti savo API raktą ir pradėti integruoti TTS.ai į savo programas.