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
/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.
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 | 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
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 | 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 -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ı Tarih biçimi varsayılan olarak İngilizce için The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result. Poll this endpoint every 1-2 seconds until Fetch the Streaming alternative: For supported models (Kokoro, MeloTTS), use
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 mdy ve diğer yerler için dmy'dir; format=\ ile değiştirilebilir.{
"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
Step 1: Submit request
{
"uuid": "77b71db532874ce98e84a69a2d740d4c",
"job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
"status": "queued",
"credits_used": 11,
"credits_remaining": 15000
}Step 2: Poll for result
status is completed or failed.{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}{
"status": "processing"
}Step 3: Download audio
result_url from the completed response to download the audio file.Full example
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)POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.
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
}
Altyazılar (SRT / VTT) yeni
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
| Parametreler | Gerekir | Açıklama |
|---|---|---|
| uuid | Evet | İş UUID'si /v1/tts/ veya /v1/voice-clone/ tarafından geri döndürüldü. |
| format | Hayır. | srt (varsayılan) veya vtt. |
| download | Hayır. | 1 Content-Disposition: attachment göndermek için, böylece tarayıcı görüntülemek yerine kaydeder. |
| language | Hayır. | Doğrulama modeline dair ipucu (eğer bırakılırsa otomatik olarak tespit edilir). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Telaffuz Sözlüğü yeni
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)
| Parametreler | Tipi | Açıklama |
|---|---|---|
| word | string | Üstüne geçilecek kelime (örneğin GIF, Anthropic). Sözcük sınırı eşleşti. |
| replacement | string | Model için nasıl yazıldığı (örneğin jiff, ann THROP ick). |
| language | string | ISO kodu seçeneği. Boş = tüm dillere uygulanır. |
| case_sensitive | boolean | Varsayılan false. true olduğunda büyüklük ayrımı yapılmaz. |
# 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 etiketi bırakın ve ziyaretçiler tıklandığında sayfayı anlatan sabit bir okuyucu çubuğu alır. Makalenin bedenini otomatik olarak tespit eder, özel ses / model / konum / aksan rengini destekler.
<script src="https://tts.ai/narrator.js"
data-pk="pk-tts-your-publishable-key"
data-voice="af_bella"
data-model="kokoro"
data-extract="auto"
data-position="bottom"
data-color="#e60000"
data-locale="en"></script>
Seçenekleri
| Parametreler | Açıklama |
|---|---|
data-pk | Yayınlanabilir anahtar (pk-tts-…). Alan kısıtlamaları anahtarın allowed_domains alanı üzerinden uygulanır. |
data-voice | Ses kimliği. Varsayılan af_bella. |
data-model | TTS model ID. Varsayılan kokoro. |
data-extract | auto (varsayılan) — article/main/.post-content/.entry-content seçicilerini dener, en yoğun paragraf kümesine geri döner. Ya da belirli bir elemanı hedeflemek için herhangi bir CSS seçicisini geçer. |
data-position | bottom (varsayılan) veya top. |
data-color | Açı renk (herhangi bir CSS renk). Varsayılan #e60000. |
data-min-chars / data-max-chars | Madde min-karakterden (varsayılan 200) kısa ise çizgiyi atla. Girişi max-karakterde sınırla (varsayılan 50.000). |
Dinle düğmesi parçasıName
Satır içinde düğme tarzı gömme. etiketinin yanında gösterir ve düğme ile tetiklenen kısa bir kısım oynatır. Üstteki Makale Anlatıcısından farklı bir şekil (otomatik olarak sayfayı kapsayan bir çubuğu ekler ve tüm makaleyi anlatır).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Kaydedilmiş Sesler (Daimi Klonlar)
Referans ses bir kez yüklenir, sürekli bir voice_id alınır, sonra her çağrıda ses tekrar yüklemek yerine TTS talebinde bu id'ye referans verilir. Yüksek sesli entegrasyonlar için ideal.
Bir ses yükle
POST
https://tts.ai/api/v1/user-voices/
Kimlik doğrulaması gerekiyor
Çok parçalı form. Alanlar: dosya (gerekli, 5-30s ses), isim (gerekli), dil (izin verilen, varsayılan en), model (izin verilen — zh/ja/ko için cosyvoice2'yi otomatik olarak seçer, aksi takdirde openvoice), consent_confirmed (gerekli, herhangi bir doğru değer).
curl -X POST https://tts.ai/api/v1/user-voices/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@reference.wav" \
-F "name=My Narrator" \
-F "language=en" \
-F "consent_confirmed=true"
# Response:
{
"public_id": "uv_a1b2c3d4e5f6",
"id": 42,
"name": "My Narrator",
"model_name": "openvoice",
"language": "en",
"reference_audio_url": "https://tts.ai/media/user-voices/....wav",
"storage_status": "active",
"created_at": "2026-04-17T03:45:00+00:00"
}
TTS'de kaydedilmiş sesi kullan
POST /api/v1/tts/ (DIKKATE: web VPS hosti, api.tts.ai değil) ile user_voice_id ile. Depolanan sesinizi ve klonlama boru hattına giden yolu yükliyoruz.
curl -X POST https://tts.ai/api/v1/tts/ \
-H "Authorization: Bearer sk-tts-your-key" \
-H "Content-Type: application/json" \
-d '{"text":"Hello from my saved voice","user_voice_id":"uv_a1b2c3d4e5f6"}'
# Returns a queued job — poll /v1/speech/results/?uuid=... for the audio URL.
Listele / sil
GET https://tts.ai/api/v1/user-voices/ # list your saved voices + quota info
DELETE https://tts.ai/api/v1/user-voices/?public_id=uv_a1b2c3d4e5f6
Arşivle / yeniden etkinleştir (ücretsiz)
Arşivlenen sesler hesabınızda kalır ama TTS'de kullanılamaz. Listeniz temiz kalacak şekilde uyku halinde olan son kullanıcılar için faydalıdır.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
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 |
Bu kaynakta erişim izniniz yok (örneğin başka bir kullanıcının işini sorgulamak). API erişimi her planda dahildir. |
| 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.