@ action

Haɗa TTS.ai cikin aikace-aikacenku tare da API na REST. OpenAI-compatible format don canji mai sauƙi.

API na REST KCharselect unicode block name QDialogButtonBox QDialogButtonBox

QPrintPreviewDialog

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.

Maɓallin API

Cire maɓallin API daga @ action. Available on Pro and Enterprise plans.

URL na Tushe

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

QFileDialog

@ info: status Authorization header

QFileDialog

Duk tambayoyin API suna buƙatar tabbatarwa ta hanyar wata alama ta mai ɗauka a cikin Authorization header.

HTTP Header
Authorization: Bearer sk-tts-your-api-key-here
Ka riƙe maɓallin API na sirri. Kada ka raba shi cikin lissafi na ɓangaren mai amfani da shi, rãyuka na jama'a, ko kuma rubuce-rubuce. Ka juya maɓallu da yawa daga ƙa'idodin aikace-aikacenka.

KCharselect unicode block name

SDKs na ofishinari suna sauki don haɗa TTS.ai cikin aikace-aikacen ku. Dukkansu suna da ma'ana mai budewa kuma suna da samuwa a GitHub.

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

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

URL na Tushe

URL na Tushe: https://api.tts.ai/v1/

Dukkan maɓallan ƙarshe suna dangantacce ga wannan URL na asali. Misali, maɓallin ƙarshe na TTS shine:

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

QDialogButtonBox

API rate limits vary by plan:

QPrintPreviewDialog Tambayoyi/dakika QDialogButtonBox @ action
QDialogButtonBox 10 2 @ action
@ action 30 3 @ action
QShortcut 60 5 @ action
QFontDatabase 300 20 @ action

An haɗa ƙayyadaddun ƙayyadaddun ƙayyadaddun cikin kowane amsa: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

QFileDialog

@ action QSoftKeyManager @ item partition flag
TTS (Free models: Piper, VITS, MeloTTS) @ action @ action
TTS (Standard models: Kokoro, CosyVoice 2, etc.) @ action @ action
TTS (Premium models: Tortoise, Chatterbox, da dai sauransu) 4,000 characters @ action
QShortcut @ action %s: %s per minute of audio
QShortcut 4,000 characters @ action
Mai Sauya Sauti @ action %s: %s per minute of audio
QShortcut @ action %s: %s per minute of audio
KCharselect unicode block name @ action %s: %s per minute of audio
QFontDatabase @ action %s: %s per minute of audio
QDialogButtonBox @ action @ action
keyboard- key- name QDialogButtonBox --
Mai Sauya Sauti QDialogButtonBox --

@ action

POST /v1/tts/

@ action

QDialogButtonBox

Parameters@ action@ actionBayani
model string QDialogButtonBox Model ID (misali, kokoro, chatterbox, piper)
text string QDialogButtonBox Waƙar da za'a canza zuwa magana (matsakaicin 100,000 na alamomin kowace tambaya)
voice string QDialogButtonBox Zane-Zane na Sauti (yi amfani da /v1/voices/ don lissafa sautuka da ake dasu)
format string QDialogButtonBox Nau'in fitarwa: mp3 (diff), wav, flac, ogg
speed float QDialogButtonBox Mai yawaita gudun magana. Diffanta: 1.0. Rarraba: 0.5 zuwa 2.0
language string QDialogButtonBox Kudin harshe (misali, en, es). An gano shi da kai idan an manta da shi.
stream boolean QDialogButtonBox Yi amfani da amsawar shirye-shirye. Diff: false

QDialogButtonBox

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

Mawallafi

Mai mayar da fayil ɗin sauti kamar bayanan binary tare da Content-Type mai dacewa (audio/mpeg, audio/wav, da dai sauransu).

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

QShortcut

POST /v1/stt/

Fassara sauti zuwa rubutu. Yana goyon bayan harsuna 99 tare da ganewa-da-kanka.

QDialogButtonBox (multipart/form-data)

Parameters@ action@ actionBayani
file file QDialogButtonBox Fayil na sauti (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string QDialogButtonBox STT model: whisper (diff), faster-whisper, sensevoice
language string QDialogButtonBox Kuɗi na harshe. auto domin ganowa da kai (diff).
timestamps boolean QDialogButtonBox Ka haɗa lokaci na mataki na kalma. Diff: false
diarize boolean QDialogButtonBox Yi wa mai maganar aiki. Diff: false

Mawallafi

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

QShortcut

POST /v1/tts/clone/

Create speech in a cloned voice. Upload a reference audio and text.

QDialogButtonBox (multipart/form-data)

Parameters@ action@ actionBayani
reference_audio file QDialogButtonBox Maɓallin maganar sauti (10-30 seconds recommended). Max 20MB.
text string QDialogButtonBox @ action
model string QDialogButtonBox Nau'in Clone: chatterbox (diff), cosyvoice2, gpt-sovits
format string QDialogButtonBox Nau'in fitarwa: mp3 (diff), wav, flac
language string QDialogButtonBox Shirin harshe na manufa. Ya kamata ya zama an goyi bayan shi da sigar da aka zaɓa.

Mawallafi

Mai mayar da fayil ɗin sauti kamar bayanan binary, kamar na ƙarshen TTS.

Mai Sauya Sauti

POST /v1/voice-convert/

Canja sauti don ya yi kama da wani sauti daban. Karɓi sauti na asali kuma ka zaɓi sauti na manufa.

QDialogButtonBox (multipart/form-data)

Parameters@ action@ actionBayani
file file QDialogButtonBox Fayil ɗin sauti na asali (MP3, WAV, FLAC). Max 50MB.
target_voice string QDialogButtonBox Sanarwar murya na manufa da za'a canja zuwa (yi amfani da /v1/voices/ domin lissafa muryoyin da ake da su)
model string QDialogButtonBox Nau'in canji na magana: openvoice (diff), knn-vc
format string QDialogButtonBox Nau'in fitarwa: wav (diff), mp3, flac

QDialogButtonBox

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

Mawallafi

QFileDialog

QFontDatabase

POST /v1/speech-translate/

Fassara sauti da aka faɗa daga harshe daya zuwa wani. Yana haɗa magana zuwa rubutu, fassara, da rubutu zuwa magana cikin kira ɗaya.

QDialogButtonBox (multipart/form-data)

Parameters@ action@ actionBayani
file file QDialogButtonBox Fayil ɗin sauti na asali cikin harshen asali. Max 100MB.
target_language string QDialogButtonBox Kudin harshe na manufa (misali, es, fr, de, ja)
voice string QDialogButtonBox Zaɓin sauti ga fitarwa da aka fassara. Za'a zaɓe shi da kai idan an manta da shi.
preserve_voice boolean QDialogButtonBox Yi kokarin kiyaye halayen sauti na mai maganar. Diff: false

Mawallafi

QDialogButtonBox
{
  "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
}

QShortcut

POST /v1/speech-to-speech/

@ action

QDialogButtonBox (multipart/form-data)

Parameters@ action@ actionBayani
file file QDialogButtonBox Fayil na sauti na maganar asali. Max 50MB.
voice string QDialogButtonBox An kasa gane kalmar shiga ga maganar fitarwa
model string QDialogButtonBox Nau'i: openvoice (diff), chatterbox
emotion string QDialogButtonBox Target emotion: neutral, happy, sad, angry, excited
speed float QDialogButtonBox Ƙirƙirar gudu. Diff: 1.0. Rarraba: 0.5 zuwa 2.0

Mawallafi

QFileDialog

@ item: inlistbox

Wuraren ƙarshe na sarrafa sauti don haɓakawa, cire sauti, raba ƙwaƙwalwa, da dai sauransu.

POST /v1/audio/enhance/

@ action: inmenu

file fileFayil ɗin sauti da za'a inganta
denoise boolean@ action
enhance_clarity boolean@ action
super_resolution booleanYi girman ingancin sauti (diff: ƙarya)
strength integerDiflomasiyya:
POST /v1/audio/separate/

Ka rarrabe mãsu magana daga masu amfani da magana (jĩrar da mãsu magana) ko ka raba su zuwa ga marẽmari.

file fileFayil ɗin sauti da za'a raba
model stringdemucs (diff) ko spleeter
stems integerAdadin kwashe: 2, 4, 5, ko 6 (diff: 2)
format stringNau'in fitarwa: wav, mp3, flac
POST /v1/audio/dereverb/

@ action

file fileFayil ɗin sauti da za'a yi aiki da shi
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ QDialogButtonBox

Ana nazarin sauti don gano maɓalli, BPM, da kuma zamanin sa hannu.

file fileFayil ɗin sauti da za'a lissafa
Mawallafi
{
  "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/ QDialogButtonBox

Mai sauya sauti tsakanin sifofi.

file fileFayil ɗin sauti da za'a canja
format stringNau'in manufa: mp3, wav, flac, ogg, m4a, aac
bitrate integerBitrate na fitarwa cikin kbps: 64, 128, 192, 256, 320
sample_rate integer@ action
channels stringmono ko stereo

QDialogButtonBox

POST /v1/voice-chat/

Aika sauti ko rubutu kuma ka karɓi amsa daga AI tare da maganar synthesized.

QDialogButtonBox (multipart/form-data ko JSON)

Parameters@ action@ actionBayani
audio file QDialogButtonBox* Input audio (ko audio ko text ake buƙata)
text string QDialogButtonBox* Insert text (either audio or text required)
voice string QDialogButtonBox Sauti don amsawa daga AI. Diff: af_bella
tts_model string QDialogButtonBox Nau'in TTS na amsawa. Diff: kokoro
system_prompt string QDialogButtonBox QDialogButtonBox
conversation_id string QDialogButtonBox QDialogButtonBox

Mawallafi

QDialogButtonBox
{
  "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
}

QShortcut

POST /v1/tts/batch/

QDialogButtonBox

Parameters

Parameters@ action@ action
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

Mawallafi

QDialogButtonBox
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Tallafin ci gaba da GET /v1/tts/batch/result/?batch_id=abc123

KCharselect unicode block name

POST /v1/voice-embed/

Yi ƙididdiga na gaba na ƙona sauti daga maɓallin sauti. Yi amfani da embed_id da aka mayar a cikin tambayoyin ƙona sauti na gaba domin samar da sauti cikin lokaci.

Parameters

Parameters@ action@ action
filefileReference audio file (WAV, MP3, FLAC).
modelstringCloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts.

Mawallafi

QDialogButtonBox
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

QSoftKeyManager

GET /v1/health/

Binciki halin mai masaukin GPU, nau'ikan da aka loda, da girman jerin gwano. Babu bukatar shaida. An adana a cikin ajiya na sakan 30.

Mawallafi

QDialogButtonBox
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

@ action

GET /v1/models/

QDialogButtonBox

Mawallafi

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

QShortcut

GET /v1/voices/

@ action

@ action

Parameters@ actionBayani
model string Cire ta hanyar shaidar nau'i (misali, kokoro)
language string Cire da lambar harshe (misali, en)
gender string Cire bisa jinsi: miji, mace, baƙin ciki

Mawallafi

QDialogButtonBox
{
  "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
}

@ action

@ action

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

QShortcut

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

QShortcut

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)

@ action

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

QShortcut

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

@ action

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

QShortcut

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"

QShortcut

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

QShortcut

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

QDialogButtonBox

Duk kurakurai suna mayar da amsa JSON da error & Mawallafi

QDialogButtonBox
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough characters for this request.",
    "characters_required": 4000,
    "characters_available": 2000
  }
}
Halin HTTPLambar KuskureBayani
400 bad_request Parameters na tambaya ba daidai ba. Bincika sakon kuskure domin ƙarin bayani.
401 unauthorized Maɓallin API da aka rasa ko kuma da ba'a yarda da shi.
402 insufficient_credits Ba da yawa ba.
403 forbidden An kasa samun damar API a cikin shirinka.
404 not_found An kasa samun nau'i ko sauti.
413 file_too_large An kasa fitar da fayil.
429 rate_limited QODBCResult
500 internal_error Kuskure a cikin mai ba da sabis. Yi kokarin sake sa'an nan.
503 model_loading Ana loda kwalin. Yi kokarin sake a cikin sakan kaɗan.

Webhooks

Ga ayyuka masu tafiyar da lokaci mai tsawo (tsaye-tsaye na ƙuƙumi, TTS na bangare-bangare), zaka iya bayar da wani webhook_url paramita. Lokacin da aikin ya ƙare, za mu POST sakamakon zuwa URL ɗinka.

QDialogButtonBox
{
  "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"
}
An samu sakamakon Webhook don saukewa na awa 24 bayan kammala. Ka tabbata ka sauke su cikin gaggawa.

An shirya?

Ka samu maɓallin API ka kuma fara haɗa TTS.ai cikin aikace-aikacenka.