API belgelemesi
TTS.ai'yi REST API'mizle uygulamalarınıza entegre edin. Kolay geçiş için OpenAI uyumlu biçim.
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.
Authorization: Bearer sk-tts-your-api-key-here
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 | 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
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 (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 -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.).
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ç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
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-metin, çeviri ve metin-konuşmayı 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. Otomatik olarak seçilir eğer kullanılmazsa. |
| preserve_voice | boolean | Hayır. | Orijinal konuşmacıyı korumaya çalış |
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 faydalıdır.
İ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 köklere bölün.
| file file | Ayıracak ses dosyası |
| model string | demucs (Öntanımlı) ya da spleeter |
| stems integer | Yaprak 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"]
}
Ses biçimleri arasında dönüştür.
| file file | Döndürülecek 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 ya da 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 ya da 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. | Yapay zeka 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
}
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 credits for this request.",
"credits_required": 4,
"credits_available": 2
}
}
| HTTP Durumu | Error Code | Açı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.
{
"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.