API belgelemesi

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

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

Genel Bakış

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 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.

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 Concurrent Maksimum Metin Uzunluğu
Pro 60 5 5000 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) 1 kredi 1000 karakter başına
TTS (Standart modelleri: Kokoro, CosyVoice 2, vb.) 2 kredi 1000 karakter başına
TTS (Premium modelleri: Tortoise, Chatterbox vb.) 4 kredi 1000 karakter başına
Konuşmadan MetneName 2 kredi dakikada ses
Ses Klonlama 4 kredi 1000 karakter başına
Ses DeğiştiriciComment 3 kredi dakikada ses
Ses iyileştirmesi 2 kredi dakikada ses
Vokal kaldırma / ses dalgası bölme 3-4 kredi dakikada ses
Konuşma Çevirisi 5 kredi dakikada ses
Sesli Sohbet 3 kredi 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 (Pro için en fazla 5.000 karakter, Enterprise için 50.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ı çarpanı. 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

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

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çilen model tarafından desteklenmelidir.

Cevap

Ses dosyasını TTS son noktası ile aynı ikili veri olarak 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-metin, çeviri ve metin-konuşmayı 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. Otomatik olarak seçilir eğer kullanılmazsa.
preserve_voice boolean Hayır. Orijinal konuşmacıyı korumaya çalış

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 faydalıdır.

İ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 köklere bölün.

file fileAyıracak ses dosyası
model stringdemucs (Öntanımlı) ya da spleeter
stems integerYaprak 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

Ses biçimleri arasında dönüştür.

file fileDöndürülecek 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 ya da 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 ya da 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. Yapay zeka 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
}

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 credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
HTTP DurumuError CodeAçıklama
400 bad_request Geçersiz istek parametreleri. Ayrıntılar için hata mesajını kontrol edin.
401 unauthorized Eksik veya geçersiz API anahtarı.
402 insufficient_credits Yeterli kredi yok. /pricing/ adresinden daha fazla satın alın.
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 büyüklük 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 deneyin.
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 indirilebilir. 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.