Dokumen

Ngagabungkeun TTS.ai kana aplikasi anjeun nganggo REST API kami. Format kompatibel OpenAI pikeun migrasi anu gampang.

REST API OpenAI kompatibel Jawaban JSON Сүрөттөр

Gambaran Umum

API TTS.ai nyayogikeun aksés program kana sadaya fitur platform: sintésis teks-ka-wacana, transkripsi basa-ka-wacana, kloning sora, paningkatan audio, sareng sajabana. API nganggo konvensi REST standar sareng awak pamundut / tanggapan JSON.

Kunci API

Njupuk kunci API sampeyan saka Pengaturan Akun. Digunakaké ing industri lan pertambangan.

URL Dasar

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

Autentikasi

Bearer token via Authorization header

Autentikasi

Kabeh pitakonan API mbutuhake autentikasi liwat token Bearer ing Authorization header.

Kepala HTTP
Authorization: Bearer sk-tts-your-api-key-here
Kajaba iku, dheweke uga dadi juru main kunci. Henteu dibagikeun kana kode sisi klien, repositori umum, atawa log. Puterkeun konci sacara rutin tina pangaturan akun anjeun.

URL Dasar

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

Kabeh titik pungkasan relatif marang URL dasar iki. Contone, titik pungkasan TTS ya iku:

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

Batas kecepatan

API watesan kacepetan beda-beda miturut rencana:

Plane Takon/menit Sampurna Panjang Teks Maksimum
Pro 60 5 5000 aksara
Enterprise 300 20 50,000 aksara

Rate limit headers are included in every response: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Credit Costs

Layanan Biaya Unit
TTS (model gratis: Piper, VITS, MeloTTS) 1 кредит saben 1,000 aksara
TTS (model standar: Kokoro, CosyVoice 2, lsp.) 2 credits saben 1,000 aksara
TTS (model Premium: Tortoise, Chatterbox, lsp.) 4 кредит saben 1,000 aksara
Suara menyang Teks 2 credits per minute of audio
Kloning Suara 4 кредит saben 1,000 aksara
Pengubah SuaraName 3 кредит per minute of audio
Tambahan Audio 2 credits per minute of audio
Voice Removal / Stem Splitting 3-4 kredit per minute of audio
Terjemah 5 кредит per minute of audio
Chat Suara 3 кредит per turn
Pencari Kunci & BPM Bebas --
Аудио конвертер Bebas --

Teks-ka-waca

POST /v1/tts/

Ngowahi teks dadi swara. Ngembalikeun file audio nganggo format anu dibutuhkeun.

Tubuh Panggonan

Parameter_JenisDiperlukanKeterangan
model string Iya Model ID (misal, kokoro, chatterbox, piper)
text string Iya Teks kanggo dikonversi dadi swara (maksimum 5,000 aksara kanggo Pro, 50,000 kanggo Enterprise)
voice string Iya ID Suara (gunakake /v1/voices/ kanggo nyaring suara-suara sing ana)
format string Ora Bentuk output: mp3 (piawai), wav, flac, ogg
speed float Ora Multiplier kecepatan ngomong. Piawai: 1.0. Jarak: 0.5 nganti 2.0
language string Ora Kode basa (misalna, en, es). Dideteksi sacara otomatis lamun diabaikan.
stream boolean Ora Aktifake balasan streaming. Piawai: 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

Balikkeun berkas audio minangka data biner kalawan Content-Type header anu pas (audio/mpeg, audio/wav, jsb.)

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

Suara menyang Teks

POST /v1/stt/

Nerjemahkeun audio kana teks. Dukungan 99 basa kalayan deteksi otomatis.

Tubuh Panggonan (multipart/form-data)

Parameter_JenisDiperlukanKeterangan
file file Iya File audio (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string Ora STT model: whisper (piawai), faster-whisper, sensevoice
language string Ora Kode basa. auto pikeun deteksi otomatis (default).
timestamps boolean Ora Ngemot tanda wektu tingkat tembung. Piawai: false
diarize boolean Ora Aktifake diarisasi pembicara. Piawai: false

Balasan

Jawaban 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 Suara

POST /v1/tts/clone/

Ngembangake swara kloning. Ngunggah audio lan teks referensi.

Tubuh Panggonan (multipart/form-data)

Parameter_JenisDiperlukanKeterangan
reference_audio file Iya Referensi swara audio (10-30 detik dianjurake). Max 20MB.
text string Iya Teks kanggo diucapake nganggo swara kloning.
model string Ora Model klon: chatterbox (piawai), cosyvoice2, gpt-sovits
format string Ora Bentuk hasil: mp3 (piawai), wav, flac
language string Ora Kode basa target. Kudu didukung ku model anu dipilih.

Balasan

Balikkeun berkas audio minangka data biner, sami sareng titik akhir TTS.

Pengubah SuaraName

POST /v1/voice-convert/

Ngowahi audio dadi swara sing beda. Unggah audio sumber lan pilih swara target.

Tubuh Panggonan (multipart/form-data)

Parameter_JenisDiperlukanKeterangan
file file Iya Berkas audio sumber (MP3, WAV, FLAC). Maksimum 50MB.
target_voice string Iya ID suara target kanggo dikonversi (gunakan /v1/voices/ kanggo nyaring suara-suara sing ana)
model string Ora Model konversi swara: openvoice (piawai), knn-vc
format string Ora Bentuk hasil: 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 file audio yang dikonversi sebagai data biner.

Terjemah

POST /v1/speech-translate/

Terjemahkeun audio anu diucapkeun ti hiji basa ka basa séjén. Ngagabungkeun pangucap-ka-teks, panerjemahan, jeung teks-ka-pangucap dina hiji telepon.

Tubuh Panggonan (multipart/form-data)

Parameter_JenisDiperlukanKeterangan
file file Iya Berkas audio sumber ing basa asli. Maksimum 100MB.
target_language string Iya Kode basa target (kayata, es, fr, de, ja)
voice string Ora Suara kanggo output terjemahan. Dipilih sacara otomatis yen ora ana.
preserve_voice boolean Ora Coba kanggo nyimpen pembicara asli

Balasan

Jawaban 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/

Ngarobah gaya pangucapan, emosi, atawa pangiriman bari ngajaga isina. Mampuh pikeun ngaluyukeun nada, laju, jeung ekspresi.

Tubuh Panggonan (multipart/form-data)

Parameter_JenisDiperlukanKeterangan
file file Iya Fail audio swara sumber. Maksimum 50MB.
voice string Iya ID suara target kanggo pidato hasil
model string Ora Model: openvoice (piawai), chatterbox
emotion string Ora Emosi target: neutral, happy, sad, angry, excited
speed float Ora Pangowahan kecepatan. Piawai: 1.0. Jarak: 0.5 nganti 2.0

Balasan

Kembalikan berkas audio sing ditransformasi minangka data biner.

Alat Audio

Digunakaké kanggo nyegah gangguan pernafasan, nyeri sirah, nyeri punggung, lan liya-liyane.

POST /v1/audio/enhance/

Ngaronjatkeun kualitas audio: denoise, ningkatake kajelasan, resolusi super.

file fileFail audio kanggo dioptimalake
denoise booleanAktifake denoisising (piawai: bener)
enhance_clarity booleanNambah kejelasan swara (piawai: bener)
super_resolution booleanNingkatake kualitas audio (piawai: salah)
strength integer1-3 (cetha, menengah, kuat). Piawai: 2
POST /v1/audio/separate/

Vokal dipisahkeun tina instrumen (vokal removal) atanapi dipisahkeun kana stems.

file fileFayl audio kanggo dipisahkan
model stringdemucs (_Piawai) utawa spleeter
stems integerJumlah batang: 2, 4, 5, utawa 6 (piawai: 2)
format stringFormat hasil: wav, mp3, flac
POST /v1/audio/dereverb/

Mbusak gema lan reverberasi saka rekaman audio.

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

Nganalisis audio kanggo ndeteksi kunci, BPM, lan tanda wektu.

file fileFayl 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

Ngganti audio ing antarane format.

file fileFayl audio kanggo dikonversi
format stringFormat target: mp3, wav, flac, ogg, m4a, aac
bitrate integerBitrate output ing kbps: 64, 128, 192, 256, 320
sample_rate integerKacepetan sampel: 22050, 44100, 48000
channels stringmono utawa stereo

Chat Suara

POST /v1/voice-chat/

Kirim audio utawa teks lan nampa tanggapan AI nganggo basa sintetis.

Tubuh Panggonan (multipart/form-data utawa JSON)

Parameter_JenisDiperlukanKeterangan
audio file Ora* Input audio (audio utawa text dibutuhake)
text string Ora* Input teks (audio utawa teks dibutuhake)
voice string Ora Suara kanggo balasan AI. Lawas: af_bella
tts_model string Ora Model TTS kanggo balasan. Piawai: kokoro
system_prompt string Ora Prompt sistem standar kanggo AI
conversation_id string Ora Lanjutkan percakapan yang ada

Balasan

Jawaban 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/

Balikkeun daftar sadaya model anu aya sareng kamampuanna.

Balasan

Jawaban 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
    }
  ]
}

Daftar Suara

GET /v1/voices/

Balikkeun daftar sakabéh sora anu aya, disaring numutkeun model atawa basa.

Parameter Query

Parameter_JenisKeterangan
model string Sarana miturut ID model (misal, kokoro)
language string Sarana miturut kode basa (misalne, en)
gender string Saringan miturut jinis: laki, wanita, neutral

Balasan

Jawaban 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
}

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

Suara menyang Teks

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 Suara

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

Suara menyang Teks

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

Suara menyang Teks

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 Suara

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

Tambahan 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 bakal mbalekake balasan JSON karo error lapangan.

Bentuk 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 Parameter panjaluk ora sah. Priksa kabar ralat kanggo rincian.
401 unauthorized Kunci API ilang utawa ora valid.
402 insufficient_credits Ora cukup kredit. Tuku luwih ing / pricing /.
403 forbidden Akses API ora ana ing rencanamu.
404 not_found Model utawa swara ora ditemokake.
413 file_too_large Berkas sing diunggah ngluwihi wates ukuran.
429 rate_limited Akeh banget panjaluk. Priksa header wates kecepatan.
500 internal_error Kesalahan pelayan. Coba maneh mengko.
503 model_loading Model lagi dimuat. Coba maneh sawisé sawetara detik.

Webhooks

Pikeun tugas anu dijalankeun salami lami (pilah-pilah akar, TTS batches), anjeun tiasa nyayogikeun parameter webhook_url. Nalika tugas réngsé, urang bakal POST hasilna ka URL anjeun.

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 diunduh salami 24 jam sanggeus réngsé. Pastikeun diunduh gancang-gancang.

Siap kanggo mbangun?

Njupuk kunci API lan miwiti nggabungake TTS.ai menyang aplikasi sampeyan.