API belgelemesi

TTS.ai'i REST API'mizle uygulamalarınıza entegre edin. Kolay geçiş için OpenAI uyumlu format.

REST API OpenAI Uyumlu JSON Cevapları Akış Desteği

Genel Bakış

TTS.ai API, tüm platform özelliklerine programlanmış erişim sağlar: metin-söz sentezi, konuşma-söz transkripsiyonu, ses klonlama, ses artırımı ve daha fazlası. API, JSON talep / yanıt organlarıyla standart REST konvansiyonlarını kullanır.

API Anahtarı

API anahtarınızı buradan alın Hesap Ayarları. Pro ve Enterprise planlarında mevcuttur.

Temel URL

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

Yetkilendirme

Taşıyıcı token yoluyla Authorization başlık

Kimlik doğrulama

Özgür katman — anahtar gerekmez. Anonymous POSTs to /v1/tts/ herhangi bir kimlik doğrulama olmadan çalışabilir, IP başına günde 5.000 karaktere kadar, ücretsiz modellerimizin herhangi birini kullanarak (piper, vits, melotts, kokoro). 15.000 bonus karakter ve premium modellere erişim için ücretsiz bir hesap için kayıt olun.

Ücretli modellerde ve daha yüksek oran limitleri için, kullanıcının kimliğini taşıyıcı token ile doğrulayın. Authorization başlık.

HTTP Başlığı
Authorization: Bearer sk-tts-your-api-key-here
API anahtarınızı gizli tutun. Bunu istemci tarafı kodlarında, kamu depolarında veya loglarda paylaşmayın. Hesabınızdaki ayarlardan anahtarları düzenli olarak döndürün.

SDK' lar

Resmi SDK'lar TTS.ai'i uygulamanıza entegre etmeyi kolaylaştırır. Her ikisi de açık kaynaklı ve GitHub'da mevcuttur.

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

Temel URL

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

Tüm son noktalar bu temel URL ile ilişkilidir. Örneğin, TTS son noktası:

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

Hız Limitleri

API hız sınırları planlara göre değişir:

Plan İstekler/dk Aynı anda Maksimum Metin Uzunluğu
Özgür 10 2 500 karakter
Başlatıcı 30 3 1.000.000 karakter
Pro 60 5 1.000.000 karakter
Enterprise. 300 20 50.000 karakter

Hız sınırı başlıkları her cevaba dahil edilir: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kredi Maliyetleri

Hizmet Maliyeti Birim
TTS (Bedava model: Piper, VITS, MeloTTS) 1000 karakter 1000 karakter başına
TTS (Standart modelleri: Kokoro, CosyVoice 2, vb.) 2000 karakter 1000 karakter başına
TTS (Premium modelleri: Tortoise, Chatterbox vb.) 4000 karakter 1000 karakter başına
Konuşmadan MetneName 2000 karakter dakikada ses
Ses Klonlama 4000 karakter 1000 karakter başına
Ses DeğiştiriciComment 3000 karakter dakikada ses
Ses iyileştirmesi 2000 karakter dakikada ses
Vokal Silme / Ses Çıkartma 3000-4000 karakter dakikada ses
Konuşma Çevirisi 5000 karakter dakikada ses
Sesli Sohbet 3000 karakter tur başına
Anahtarlar & BPM Aracı Özgür --
Ses dönüştürücüsüName Özgür --

Metinden KonuşmayaName

POST /v1/tts/

Metin sesli konuşmaya dönüştürülür. Ses dosyasını istenen biçimde geri döndürür.

İstek Vücudu

ParametrelerTipiGerekirAçıklama
model string Hayır. Model ID (örneğin, kokoro, chatterbox, piper). Eğer bırakılırsa, istenen language'ı destekleyen bir modeli otomatik olarak seçiyoruz — en/ja/zh/ko/fr/de/it/pt/es/hi/ru için kokoro, diğer desteklenen dillerde (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.) piper.
text string Evet Konuşmaya dönüştürülecek metin. İstek başına sınır: 500 karakter (anonymous), 5,000 (free account), 1,000,000 (pay plan). Uzun girdiler sunucu tarafında otomatik olarak parçalanır.
voice string Evet Ses Kimliği (var olan sesleri listelemek için /v1/voices/ kullanın)
format string Hayır. Çıkış biçimi: mp3 (varsayılan), wav, flac, ogg
speed float Hayır. Konuşma hızı çarpıcısı. Varsayılan: 1.0. Aralık: 0.5 ile 2.0
language string Hayır. Dil kodu (örneğin, en, es). Eğer bırakılırsa otomatik olarak tespit edilir.
instructions string Hayır. Etkileşim / teslimat işaretleri (≤500 karakter). örneğin \
pronunciations object | array Hayır. İstek başına telaffuz üstten geçer. Ya {\
stream boolean Hayır. Akış cevabını etkinleştir. Varsayılan: false

Örnek İstek

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 etiketleri

Sayıları, tarihleri, para birimini, telefon numaralarını ve kısaltmaları

yorumlayın.GirişKonuştuğu dil
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-31December thirty-first, nineteen ninety-nine
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

Tarih biçimi varsayılan olarak İngilizce için mdy ve diğer yerler için dmy'dir; format=\ ile değiştirilebilir.

Örnek
{
  "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."
}

Cevap

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.

Full example

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.

Konuşmadan MetneName

POST /v1/stt/

Sesleri metin haline çevirin. Otomatik tespit ile 99 dili destekler.

İstek Vücudu (multipart/form-data)

ParametrelerTipiGerekirAçıklama
file file Evet Ses dosyası (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). En fazla 100MB.
model string Hayır. STT modeli: whisper (varsayılan), faster-whisper, sensevoice
language string Hayır. Dil kodu. auto otomatik tespit için (varsayılan).
timestamps boolean Hayır. Sözcük düzeyindeki zaman damgalarını dahil et. Varsayılan: false
diarize boolean Hayır. Hoparlör diarizasyonunu etkinleştir. Varsayılan: false

Cevap

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

Ses Klonlama

POST /v1/tts/clone/

Klonlanmış bir sesle konuşma oluştur. Referans ses ve metin yükle.

İstek Vücudu (multipart/form-data)

ParametrelerTipiGerekirAçıklama
reference_audio file Evet Referans ses ses (10-30 saniye tavsiye edilir). Maksimum 20MB.
text string Evet Klonlanmış sesle konuşmak için mesaj.
model string Hayır. Klon modeli: chatterbox (varsayılan), cosyvoice2, gpt-sovits
format string Hayır. Çıkış biçimi: mp3 (varsayılan), wav, flac
language string Hayır. Hedef dil kodu. Seçili model tarafından desteklenmelidir.

Cevap

Ses dosyasını ikili veri olarak, TTS son noktası ile aynı şekilde geri döndürür.

Ses DeğiştiriciComment

POST /v1/voice-convert/

Sesleri farklı bir ses gibi çalmaya dönüştür. Kaynak sesi yükle ve hedef ses seç.

İstek Vücudu (multipart/form-data)

ParametrelerTipiGerekirAçıklama
file file Evet Kaynak ses dosyası (MP3, WAV, FLAC). Maksimum 50MB.
target_voice string Evet Dönüştürülecek hedef ses kimliği (olası sesleri listelemek için /v1/voices/ kullanın)
model string Hayır. Ses dönüşüm modeli: openvoice (varsayılan), knn-vc
format string Hayır. Çıkış biçimi: wav (varsayılan), mp3, flac

Örnek İstek

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

Cevap

Dönüştürülmüş ses dosyasını ikili veri olarak geri verir.

Konuşma Çevirisi

POST /v1/speech-translate/

Konuşulan sesleri bir dilden diğerine çevirin. Tek bir çağrıda konuşma-metinde, çeviri ve metin-konuşmada birleştirir.

İstek Vücudu (multipart/form-data)

ParametrelerTipiGerekirAçıklama
file file Evet Orijinal dilde kaynak ses dosyası. Maksimum 100MB.
target_language string Evet Hedef dil kodu (örneğin, es, fr, de, ja)
voice string Hayır. Çeviri çıkışı için ses. Eğer kullanılmazsa otomatik olarak seçilir.
preserve_voice boolean Hayır. Konuşan kişinin ses özelliklerini korumaya çalış. Önbellek: false

Cevap

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

Konuşmadan KonuşmayaName

POST /v1/speech-to-speech/

Konuşma tarzını, duyguyu veya sunumu içeriği korurken değiştirin. Tonu, tempoyu ve ifadeyi ayarlamak için yararlı.

İstek Vücudu (multipart/form-data)

ParametrelerTipiGerekirAçıklama
file file Evet Kaynak konuşma ses dosyası. Maksimum 50MB.
voice string Evet Çıkış konuşması için hedef ses kimliği
model string Hayır. Model: openvoice (varsayılan), chatterbox
emotion string Hayır. Hedef duygu: neutral, happy, sad, angry, excited
speed float Hayır. Hız ayarlaması. Varsayılan: 1.0. Aralık: 0.5 ile 2.0

Cevap

Dönüştürülmüş ses dosyasını ikili veri olarak geri verir.

Ses AraçlarıName

İyileştirme, vokal kaldırma, kök bölme ve daha fazlası için ses işleme son noktaları.

POST /v1/audio/enhance/

Ses kalitesini artırın: gürültüyü azaltın, netliği artırın, süper çözünürlük.

file fileGeliştirilecek ses dosyası
denoise booleanGürültü azaltmayı etkinleştir (varsayılan: doğru)
enhance_clarity booleanKonuşmanın netliğini artır (varsayılan: doğru)
super_resolution booleanSes kalitesini yükselt (varsayılan: yanlış)
strength integer1- 3 (hafif, orta, güçlü). Varsayılan: 2
POST /v1/audio/separate/

Vokalleri enstrümantallerden ayırın (vokal çıkarma) veya çiçeklere bölün.

file fileAyrılabilecek ses dosyası
model stringdemucs (Öntanımlı) veya spleeter
stems integerÇubuk sayısı: 2, 4, 5 veya 6 (varsayılan: 2)
format stringÇıkış biçimi: wav, mp3, flac
POST /v1/audio/dereverb/

Ses kayıtlarından yankı ve yansımayı kaldırın.

file fileİşlenecek ses dosyası
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Özgür

Sesleri anahtar, BPM ve zaman imzasını tespit etmek için analiz edin.

file fileAnaliz edilecek ses dosyası
Cevap
{
  "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/ Özgür

Sesleri biçimler arasında dönüştürün.

file fileÇevirilecek ses dosyası
format stringHedef biçimi: mp3, wav, flac, ogg, m4a, aac
bitrate integerKbps' de çıkış bit hızı: 64, 128, 192, 256, 320
sample_rate integerÖrnekleme oranı: 22050, 44100, 48000
channels stringmono veya stereo

Sesli Sohbet

POST /v1/voice-chat/

Ses veya metin gönderin ve sentezlenmiş konuşmayla yapay zeka yanıtını alın.

İstek Vücudu (multipart/form-data veya JSON)

ParametrelerTipiGerekirAçıklama
audio file Hayır.* Ses girişi (ya audio ya da text gerekli)
text string Hayır.* Metin girişi (ya audio ya da text gereklidir)
voice string Hayır. AI cevabı için ses. Varsayılan: af_bella
tts_model string Hayır. Cevap için TTS modeli. Varsayılan: kokoro
system_prompt string Hayır. AI için özel sistem mesajı
conversation_id string Hayır. Mevcut bir sohbete devam et

Cevap

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

Grup TTS

POST /v1/tts/batch/

Paralel TTS üretimi için birden fazla metin gönder. Tüm işler tamamlandığında bir webhook geri çağrısı almayı seç.

Parametreler

ParametrelerTipiAçıklama
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

Cevap

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

GET /v1/tts/batch/result/?batch_id=abc123 ile anket ilerlemesi

Ses Ekleme

POST /v1/voice-embed/

Referans seslerden bir ses entegresini önceden hesapla. Neredeyse anlık üretim için geri dönen embed_id'yi sonraki ses klonlama taleplerinde kullan.

Parametreler

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

Cevap

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

Sağlık Kontrolü

GET /v1/health/

GPU sunucu durumunu, yüklü modelleri ve kuyruk büyüklüğünü kontrol et. Kimlik doğrulaması gerekmez. 30 saniye için önbelleğe alınmıştır.

Cevap

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

Modelleri Listele

GET /v1/models/

Tüm mevcut modellerin ve onların özelliklerinin bir listesini geri verir.

Cevap

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

Sesleri Listele

GET /v1/voices/

Tüm mevcut seslerin bir listesini, seçenek olarak model veya dil tarafından filtrelenmiş olarak geri verir.

Soru Parametreleri

ParametrelerTipiAçıklama
model string Model ID'sine göre filtreleme (örneğin, kokoro)
language string Dil koduna göre filtreleme (örn. tr)
gender string Cinsiyete göre filtreleme: erkek, kadın, tarafsız

Cevap

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

Altyazılar (SRT / VTT) yeni

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

Herhangi bir tamamlanmış TTS işi için senkronize altyazı oluştur. Ses üzerinde Whisper doğrulamasını yürütür ve SRT veya WebVTT geri verir. Sonuç diskte önbelleklenir, böylece aynı uuid için ikinci bir çağrı disk okunuşu olur.

Soru Parametreleri

ParametrelerGerekirAçıklama
uuidEvetİş UUID'si /v1/tts/ veya /v1/voice-clone/ tarafından geri döndürüldü.
formatHayır.srt (varsayılan) veya vtt.
downloadHayır.1 Content-Disposition: attachment göndermek için, böylece tarayıcı görüntülemek yerine kaydeder.
languageHayır.Doğrulama modeline dair ipucu (eğer bırakılırsa otomatik olarak tespit edilir).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

Telaffuz Sözlüğü yeni

GET POST DELETE /api/v1/pronunciations/

TTS motoruna belirli kelimelerin nasıl telaffuz edileceğini söyleyin. Kayıtlı girdiler yaptığınız her TTS talebine otomatik olarak uygulanır. Hesap başına 200 giriş limiti.

İstek Vücudu (POST)

ParametrelerTipiAçıklama
wordstringÜstüne geçilecek kelime (örneğin GIF, Anthropic). Sözcük sınırı eşleşti.
replacementstringModel için nasıl yazıldığı (örneğin jiff, ann THROP ick).
languagestringISO kodu seçeneği. Boş = tüm dillere uygulanır.
case_sensitivebooleanVarsayılan false. true olduğunda büyüklük ayrımı yapılmaz.
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-..."

Ayrıca, onları kaydetmeden isteğe bağlı üst üste geçmeleri de geçebilirsiniz - herhangi bir /v1/tts/ çağrısında pronunciations'u bir nesne veya bir dizi olarak dahil edebilirsiniz (TTS son nokta parametrelerine bakınız).

Makale Sunucusu yeni

Herhangi bir makale sayfasına tek bir