API belgelemesi
TTS.ai'i REST API'mizle uygulamalarınıza entegre edin. Kolay geçiş için OpenAI uyumlu format.
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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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');
Temel URL
Tüm son noktalar bu temel URL ile ilişkilidir. Örneğin, TTS son noktası:
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
Metin sesli konuşmaya dönüştürülür. Ses dosyasını istenen biçimde geri döndürür.
İstek Vücudu
| Parametreler | Tipi | Gerekir | Açı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 -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.).
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498
Konuşmadan MetneName
Sesleri metin haline çevirin. Otomatik tespit ile 99 dili destekler.
İstek Vücudu (multipart/form-data)
| Parametreler | Tipi | Gerekir | Açı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
{
"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
Klonlanmış bir sesle konuşma oluştur. Referans ses ve metin yükle.
İstek Vücudu (multipart/form-data)
| Parametreler | Tipi | Gerekir | Açı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
Sesleri farklı bir ses gibi çalmaya dönüştür. Kaynak sesi yükle ve hedef ses seç.
İstek Vücudu (multipart/form-data)
| Parametreler | Tipi | Gerekir | Açı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 -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
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)
| Parametreler | Tipi | Gerekir | Açı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
{
"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
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)
| Parametreler | Tipi | Gerekir | Açı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ı.
Ses kalitesini artırın: gürültüyü azaltın, netliği artırın, süper çözünürlük.
| file file | Geliştirilecek ses dosyası |
| denoise boolean | Gürültü azaltmayı etkinleştir (varsayılan: doğru) |
| enhance_clarity boolean | Konuşmanın netliğini artır (varsayılan: doğru) |
| super_resolution boolean | Ses kalitesini yükselt (varsayılan: yanlış) |
| strength integer | 1- 3 (hafif, orta, güçlü). Varsayılan: 2 |
Vokalleri enstrümantallerden ayırın (vokal çıkarma) veya çiçeklere bölün.
| file file | Ayrılabilecek ses dosyası |
| model string | demucs (Ö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 |
Ses kayıtlarından yankı ve yansımayı kaldırın.
| file file | İşlenecek ses dosyası |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Sesleri anahtar, BPM ve zaman imzasını tespit etmek için analiz edin.
| file file | Analiz edilecek ses dosyası |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Sesleri biçimler arasında dönüştürün.
| file file | Çevirilecek ses dosyası |
| format string | Hedef biçimi: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Kbps' de çıkış bit hızı: 64, 128, 192, 256, 320 |
| sample_rate integer | Örnekleme oranı: 22050, 44100, 48000 |
| channels string | mono veya stereo |
Sesli Sohbet
Ses veya metin gönderin ve sentezlenmiş konuşmayla yapay zeka yanıtını alın.
İstek Vücudu (multipart/form-data veya JSON)
| Parametreler | Tipi | Gerekir | Açı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
{
"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
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
| Parametreler | Tipi | Açıklama |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
Cevap
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
GET /v1/tts/batch/result/?batch_id=abc123 ile anket ilerlemesi
Ses Ekleme
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
| Parametreler | Tipi | Açıklama |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Cevap
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Sağlık Kontrolü
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
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Modelleri Listele
Tüm mevcut modellerin ve onların özelliklerinin bir listesini geri verir.
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
Tüm mevcut seslerin bir listesini, seçenek olarak model veya dil tarafından filtrelenmiş olarak geri verir.
Soru Parametreleri
| Parametreler | Tipi | Açı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
{
"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
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
# 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
# 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
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
// 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
# 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
# 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
# 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
# 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.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| HTTP Durumu | Hata Kodu | Açı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.
{
"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"
}
İ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.