Dokumen

Ing basa Indonésia, basa iki digolongaké dadi basa Austronesia lan basa Austronesia Kidul.

REST API Kompatibel karo OpenAI Balasan JSON Dukungan streaming

Jembaré

TTS.ai API nawakake akses program kanggo kabeh fitur platform: sintesis teks-kanggo-ucapan, transkripsi teks-kanggo-ucapan, kloning swara, peningkatan audio, lan liya-liyane. API nggunakake konvensi REST standar karo awak permintaan / tanggapan JSON.

Kunci API

Ngundhuh kunci API saka Akun. Dhèwèké miwiti karir ing industri filem lan televisi.

URL Dasar

https://api.tts.ai/v1/

Otoritas

Bearer token liwat Authorization bagéan ndhuwur

Otentikasi

Saben pitakonan API mbutuhaké otentikasi liwat Bearer token ing Authorization bagéan ndhuwur.

HTTP Header
Authorization: Bearer sk-tts-your-api-key-here
Saliyané iku, dhèwèké uga dadi juru main bal-balan. Aja nyawisaké ing kode klien-sisi, repositori umum, utawa log. Rotasi kunci kanthi rutin saka pangaturan akun sampeyan.

URL Dasar

URL Dasar: https://api.tts.ai/v1/

Saben titik pungkasan relatif marang URL dasar iki. Contoné, titik pungkasan TTS ya iku:

POST https://api.tts.ai/v1/tts/

Batas laju

API rate limits vary by plan:

Planit Panjaluk/menit Konkordan Panjang Teks Maksimal
Pro 60 5 5000 aksara
Enterprise 300 20 50,000 karakter

% 1:% 2size in 2^30 bytes X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Kredit

Layanan Biaya Unit
TTS (model bébas: Piper, VITS, MeloTTS) credits saben 1,000 aksara
TTS (model standar: Kokoro, CosyVoice2, etc.) 2 kredit saben 1,000 aksara
TTS (model Premium: Tortoise, Chatterbox, lsp.) 4 kredit saben 1,000 aksara
Prasasti 2 kredit per menit of audio
Kloning swara 4 kredit saben 1,000 aksara
Pengubah SuaraName 3 kredit per menit of audio
Peningkatan Audio 2 kredit per menit of audio
Pemisahan vokal / pemisahan swara 3-4 kredit per menit of audio
Terjemah 5 kredit per menit of audio
Sesambetan 3 kredit saben gulungan
Key & BPM Finder Bebas --
Konversi Audio Bebas --

Teks-ka-waca

POST /v1/tts/

Ngganti teks dadi swara. Kembalikan file audio ing format sing dibutuhaké.

Badan pitakonan

ParamèterTipeDiperlukanKeterangan
model string Ya ID model (kayata, kokoro, chatterbox, piper)
text string Ya Teks kang kudu dikonversi dadi swara (maksimum 5,000 aksara kanggo Pro, 50,000 kanggo Enterprise)
voice string Ya ID swara (gunakaké /v1/voices/ kanggo nyathet swara kang ana)
format string Ora Format output: mp3 (piawai), wav, flac, ogg
speed float Ora Multiplier kecepatan pangucapan. Panggonan: 1.0. Jarak: 0.5 nganti 2.0
language string Ora Kode basa (kayata, en, es). Dideteksi kanthi otomatis yèn ora ana.
stream boolean Ora Aktifaké tanggapan streaming. Panggonan: false

Conto pitakonan

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

Balasan

Kembalikan file audio minangka data biner kanthi Content-Type header sing pas (audio/mpeg, audio/wav, lsp.).

Balasan
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

Prasasti

POST /v1/stt/

Transkrip audio dadi teks. Dukung 99 basa kanthi deteksi otomatis.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
file file Ya Berkas audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Ora STT model: whisper (default), faster-whisper, sensevoice
language string Ora Kode basa. auto kanggo deteksi otomatis (default).
timestamps boolean Ora Ngandhut timestamp tingkat tembung. Panggonan: false
diarize boolean Ora Aktifaké diarisasi pembicara. Panggonan: false

Balasan

Balasan JSON
{
  "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"
    }
  ]
}

Kloning swara

POST /v1/tts/clone/

Nyiptakaké pidato ing swara kloning. Ngundhuh referensi audio lan teks.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
reference_audio file Ya Referensi swara audio (10-30 detik disaranaké). Max 20MB.
text string Ya Teks kanggo ngomong ing swara kloning.
model string Ora Model klon: chatterbox (piawai), cosyvoice2, gpt-sovits
format string Ora Format output: mp3 (piawai), wav, flac
language string Ora Kode basa target. Mesti didhukung déning modél kang dipilih.

Balasan

Kembalikan berkas audio minangka data biner, padha karo titik pungkasan TTS.

Pengubah SuaraName

POST /v1/voice-convert/

Konversi audio dadi swara kang beda. Unggah sumber audio lan pilih swara target.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
file file Ya Berkas audio sumber (MP3, WAV, FLAC). Maksimum 50MB.
target_voice string Ya ID swara target kanggo dikonversi (gunakaké /v1/voices/ kanggo nyathet swara kang ana)
model string Ora Model konversi swara: openvoice (piranti lunak), knn-vc
format string Ora Format output: wav (piawai), mp3, flac

Conto pitakonan

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

Balasan

Kembalikan berkas audio kang dikonversi dadi data biner.

Terjemah

POST /v1/speech-translate/

Nerjemahaké swara kang diucapaké saka siji basa menyang basa liya. Nggabungaké swara-ka-teks, terjemahan, lan teks-ka-swara ing telpon tunggal.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
file file Ya Berkas audio sumber ing basa asli. Maksimum 100MB.
target_language string Ya Kode basa target (kayata, es, fr, de, ja)
voice string Ora Suara kanggo output terjemahan. Dipilih kanthi otomatis yèn ora ana.
preserve_voice boolean Ora Ngupayakake nyimpen pamicara asli

Balasan

Balasan JSON
{
  "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
}

Speech to Speech

POST /v1/speech-to-speech/

Transformasi gaya pangucapan, emosi, utawa pangiriman nalika tetep isiné. Migunakaké kanggo nyetel ton, pacing, lan ekspresi.

Badan pitakonan (multipart/form-data)

ParamèterTipeDiperlukanKeterangan
file file Ya Fayl audio swara sumber. Maksimum 50MB.
voice string Ya ID swara target kanggo swara output
model string Ora Model: openvoice (piranti lunak), chatterbox
emotion string Ora Saliyané iku, ana uga tembung-tembung kang asalé saka basa Latin, kaya ta: , , , , .
speed float Ora Setel kacepetan. Panggonan: 1.0. Jarak: 0.5 nganti 2.0

Balasan

Kembalikan berkas audio kang ditransformasi dadi data biner.

Alat Audio

Akèh-akèhé digawé saka bahan-bahan alami, kaya ta sayuran, woh-wohan, lan liya-liyane.

POST /v1/audio/enhance/

Akèh-akèhé digawé saka bahan-bahan alami, kaya ta: godhong, wiji, lan woh-wohan.

file fileBerkas audio kanggo dioptimalake
denoise booleanAktifake denoisising (piawai: bener)
enhance_clarity booleanNgluwihi kajelasan swara (piranti loropaken: bener)
super_resolution booleanNingkat kualitas audio (latar mburi: salah)
strength integer1-3 (cetha, menengah, kuat). Lawas: 2
POST /v1/audio/separate/

Saliyané iku, ana uga vokal sing dipisahaké saka instrumen (vokal removal) utawa dipisahaké ing stem.

file fileBerkas audio kanggo dipisahake
model stringdemucs (default) utawa spleeter
stems integerJumlah batang: 2, 4, 5, utawa6(piawai: 2)
format stringFormat output: wav, mp3, flac
POST /v1/audio/dereverb/

Dhèwèké misuwur amarga karyané ing babagan rekaman audio.

file fileBerkas audio kanggo diproses
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Bebas

Analyze audio kanggo ndeteksi key, BPM, lan time signature.

file fileBerkas audio kanggo dianalisis
Balasan
{
  "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/ Bebas

Konversi audio antar format.

file fileBerkas audio kanggo dikonversi
format stringFormat target: mp3, wav, flac, ogg, m4a, aac
bitrate integerBitrate output ing kbps: 64, 128, 192, 256, 320
sample_rate integerKutha iki ndunungi 220.448 jiwa.
channels stringmono utawa stereo

Sesambetan

POST /v1/voice-chat/

Saliyané iku, dhèwèké uga dadi panulis lan juru basa basa Inggris.

Badan pitakonan (multipart/form-data utawa JSON)

ParamèterTipeDiperlukanKeterangan
audio file Ora* Input audio (audio utawa text dibutuhake)
text string Ora* Input teks (audio utawa text dibutuhake)
voice string Ora Suara kanggo balasan AI. Panggonan: af_bella
tts_model string Ora Model TTS kanggé balasan. Panggonan: kokoro
system_prompt string Ora Prompt sistem pribadi kanggo AI
conversation_id string Ora Nglanjutake percakapan kang wis ana

Balasan

Balasan JSON
{
  "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
}

Daftar Model

GET /v1/models/

Kembalikan dhaptar sadaya modél ingkang wonten kaliyan kapabilitasipun.

Balasan

Balasan JSON
{
  "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
    }
  ]
}

Senarai swara

GET /v1/voices/

Kembalikan dhaptar saka kabeh swara kang ana, kanthi pilihan disaring miturut modél utawa basa.

Paramèter pitakon

ParamèterTipeKeterangan
model string Saringan miturut ID model (misalné, kokoro)
language string Saringan miturut kodhe basa (misalné, en)
gender string Saringan miturut jinis: male, female, neutral

Balasan

Balasan JSON
{
  "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
}

Conto Kode

Teks-ka-waca

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

Prasasti

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

Kloning swara

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)

Teks-ka-waca

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

Prasasti

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

Teks-ka-waca

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

Prasasti

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"

Kloning swara

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

Peningkatan Audio

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

Kode Kesalahan

Kabeh kegagalan mbalekake balasan JSON karo error lapangan.

Format Balasan Kesalahan
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
Status HTTPKode KesalahanKeterangan
400 bad_request Paramèter panjaluk ora sah. Priksa pesen kesalahan kanggo rincian.
401 unauthorized Kunci API kang ora ana utawa ora sah.
402 insufficient_credits Ora cukup kredit. Tuku luwih ing /pricing/.
403 forbidden API akses ora ana ing rencana sampeyan.
404 not_found Model utawi swara boten kapanggih.
413 file_too_large Fayl kang diunggah ngluwihi wates ukuran.
429 rate_limited Akèh pitakonan. Priksa header wates laju.
500 internal_error Kesalahan penjelajah. Coba manèh sadurungé.
503 model_loading Model dipunundhuh. Coba malih ing sapérangan detik.

Webhooks

Kanggo tugas-tugas kang ora bisa dirampungaké ing wektu sing suwe, sampeyan bisa nyedhiyani parameter webhook_url. Nalika tugas wis rampung, kita bakal POST asil menyang URL sampeyan.

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"
}
Hasil Webhook bisa diundhuh nganti 24 jam sawisé rampung. Priksa manawa diundhuh kanthi cepet.

Siap kanggo mbangun?

Saliyané iku, dhèwèké uga misuwur amarga karyané ing filem-filem.