API dokumentacija

Į jūsų programas integruoti TTS.ai su mūsų REST API. OpenAI suderinama forma lengva migracija.

REST API Suderinama su OpenAI JSON atsakymai Srauto palaikymas

Apžvalga

TTS.ai API užtikrina programinę prieigą prie visų platformos funkcijų: teksto-į-speech sintezės, kalbos-teksto transkripcijos, balso klonavimo, garso stiprinimo ir kt. API naudoja standartines REST konvencijas su JSON užklausų/atsakymo organais.

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.

SDKs

Oficialus SDKs leidžia lengvai integruoti TTS.ai į jūsų programą. Abu yra atviras šaltinis ir prieinama 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

Pagrindinis URL

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

Visos vertinamosios baigtys yra santykinės šiam baziniam URL. Pavyzdžiui, TTS vertinamoji baigtis yra:

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

Norminės ribos

API normos ribos skiriasi pagal planą:

Planas Prašymai/min. Kartu Maksimalus teksto ilgis
Neapmuitinama 10 2 500 chars
Pradžia 30 3 100 000 chars
Pro 60 5 100 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) 1000 simbolių 1 000 simbolių
TTS (standartiniai modeliai: Kokoro, CosyVoice 2 ir t. t.) 2 000 simbolių 1 000 simbolių
TTS (Premijos modeliai: Tortoise, Chatterbox ir t. t.) 4000 simbolių 1 000 simbolių
Kalba tekstui 2 000 simbolių per minutę garso
Balso klonavimas 4000 simbolių 1 000 simbolių
Balso keitėjas 3000 simbolių per minutę garso
Garso pagerinimas 2 000 simbolių per minutę garso
Vokalinis pašalinimas / suskaidymas 3 000–4 000 simbolių per minutę garso
Kalbų vertimas 5 000 ženklų per minutę garso
Balso pokalbis 3000 simbolių 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ą (ne daugiau kaip 100 000 chars užklausa)
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

Grąžina garso failą kaip dvejetainius duomenis su atitinkamu Content- type antraštės (audio/mpeg , audio/wav ir t. t.).

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 originalaus garsiakalbio balso savybes. Numatytasis: < code> false

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/

Transformuoti kalbos stilius, emocijos, ar pristatymas išlaikant turinį. Naudinga reguliuoti tonusą, pacing, ir išraiškingumą.

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

Garso apdorojimo vertinamosios baigtys pagerinimui, vokaliniam pašalinimui, kamienų dalijimuisi, ir daugiau.

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 fileAnalizuojamas garso failas
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 stringPaskirties formatas: mp3 , wav , flac , gg , 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
}

Partijos TTS

POST /v1/tts/batch/

Pateikite keletą tekstų lygiagrečiai TTS generacijai. Neprivalomai gausite Webhook skambutį, kai visi darbai baigti.

Parametrai

ParametrasTipasAprašymas
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

Atsakas

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

Pažanga taikant GET /v1/tts/partija/rezultatas/?partija_id=abc123

Balso įterpimas

POST /v1/voice-embed/

Iš anksto sukompiliuoti garsą, integruojantį iš referencinio garso. Naudokite grąžintą embed_id vėlesniuose balso klonavimo prašymuose, skirtuose netoliese generacijai.

Parametrai

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

Atsakas

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

Sveikatingumo patikrinimas

GET /v1/health/

Patikrinkite GPU serverio būseną, įkeltus modelius ir eilės dydį. Autentifikavimas nereikalingas.

Atsakas

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

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 characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP būsenaKlaidos kodasApraš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 Nepakanka simbolių. Pirkti daugiau at /pricing/.
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 API raktą ir pradėti integruoti TTS.ai į savo programas.