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

Tüm API talepleri bir Bearer token aracılığıyla kimlik doğrulaması gerektirir. 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 100.000 karakter
Pro 60 5 100.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 Evet Model ID (örneğin, kokoro, chatterbox, piper)
text string Evet Konuşmaya dönüştürülecek metin (isteğe göre en fazla 100.000 karakter)
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.
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

Cevap

Ses dosyasını uygun Content-Type başlığıyla ikili veri olarak geri verir (audio/mpeg, audio/wav, vb.).

Cevap Başlıkları
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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
}

Kod Örnekleri

Metinden KonuşmayaName

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

Konuşmadan MetneName

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

Ses Klonlama

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)

Metinden KonuşmayaName

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

Konuşmadan MetneName

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

Metinden KonuşmayaName

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

Konuşmadan MetneName

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"

Ses Klonlama

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

Ses iyileştirmesi

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

Hata Kodları

Tüm hatalar bir JSON cevabı ile geri döner error - Sahada.

Hata Yanıtı Biçimi
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
HTTP DurumuHata KoduAçıklama
400 bad_request Geçersiz isteme parametreleri. Ayrıntılar için hata mesajını kontrol edin.
401 unauthorized Eksik veya geçersiz API anahtarı.
402 insufficient_credits Yeterli karakter yok. /pricing/ adresinden daha fazlasını satın al.
403 forbidden Planınızda API erişimi mevcut değil.
404 not_found Model veya ses bulunamıyor.
413 file_too_large Yüklenen dosya boyutu sınırını aştı.
429 rate_limited Çok fazla talep. Hız sınırı başlıklarını kontrol et.
500 internal_error Sunucu hatası. Daha sonra tekrar deneyelim.
503 model_loading Model yükleniyor. Birkaç saniye içinde tekrar deneyin.

Webhooks

Uzun süreli görevler için (kök bölme, grup TTS), bir webhook_url parametresi sağlayabilirsiniz. Görev tamamlandığında, sonuçları URL'nize POST edeceğiz.

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 sonuçları tamamlandıktan sonra 24 saat boyunca indirilebilecek durumdadır. Onları derhal indirdiğinizden emin olun.

İnşa etmeye hazır mısın?

API anahtarınızı alın ve TTS.ai'yi uygulamalarınıza entegre etmeye başlayın.