@ action

Haɗa TTS.ai cikin aikace-aikacenku tare da API ɗinmu na REST. OpenAI-compatible format for easy migration.

API na REST KCharselect unicode block name QDialogButtonBox QDialogButtonBox

QShortcut

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.

URL na Tushe

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

Dukan maɓallan ƙarshe sun danganta 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 Concurrent Max Text Length
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

Shiryoyin Ayuka QSoftKeyManager Unit
TTS (Free models: Piper, VITS, MeloTTS) 1 credit @ action
TTS (Standard models: Kokoro, CosyVoice 2, etc.) 2 credits @ action
TTS (Premium models: Tortoise, Chatterbox, da dai sauransu) 4 credits @ action
QShortcut 2 credits per minute of audio
QShortcut 4 credits @ action
Mai Sauya Sauti 3 credits per minute of audio
QShortcut 2 credits per minute of audio
KCharselect unicode block name 3-4 credits per minute of audio
QFontDatabase 5 credits per minute of audio
QDialogButtonBox 3 credits @ action
keyboard- key- name QDialogButtonBox --
Mai Sauya Sauti QDialogButtonBox --

@ action

POST /v1/tts/

@ action

QDialogButtonBox

Parameters@ actionQDialogButtonBoxBayani
model string A' a Model ID (misali, kokoro, chatterbox, piper)
text string A' a Wani rubutu da za'a canza zuwa magana (maksimal 5,000 characters for Pro, 50,000 for Enterprise)
voice string A' a Zane-Zane na Sauti (yi amfani da /v1/voices/ don lissafa sautuka da ake dasu)
format string QFileDialog Nau'in fitarwa: mp3 (diff), wav, flac, ogg
speed float QFileDialog Matsakaici na gudun magana. Diff: 1.0. Range: 0.5 zuwa 2.0
language string QFileDialog Kudin harshe (misali, en, es). An gano shi da kai idan an manta da shi.
stream boolean QFileDialog Yi aiki 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

Returns the audio file as binary data with appropriate Content-Type header (audio/mpeg, audio/wav, etc.).

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@ actionQDialogButtonBoxBayani
file file A' a Fayil na sauti (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Max 100MB.
model string QFileDialog STT model: whisper (default), faster-whisper, sensevoice
language string QFileDialog Kuɗi na harshe. auto domin ganowa da kai (diff).
timestamps boolean QFileDialog Ka haɗa lokaci na mataki na kalma. Diff: false
diarize boolean QFileDialog 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@ actionQDialogButtonBoxBayani
reference_audio file A' a Maɓallin maganar sauti (10-30 seconds recommended). Max 20MB.
text string A' a Tef ɗin da za'a faɗa cikin maganar da aka halitta.
model string QFileDialog Clone model: chatterbox (default), cosyvoice2, gpt-sovits
format string QFileDialog Nau'in fitarwa: mp3 (diff), wav, flac
language string QFileDialog Shirin harshe na manufa. Ya kamata a goyi bayan shi da nau'in da aka zaɓa.

Mawallafi

Mai mayar da fayil ɗin sauti a matsayin bayanai na biyu, 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@ actionQDialogButtonBoxBayani
file file A' a Fayil ɗin sauti na asali (MP3, WAV, FLAC). Max 50MB.
target_voice string A' a Sanarwar murya na manufa da za'a canja zuwa (yi amfani da /v1/voices/ domin lissafa muryoyin da ake da su)
model string QFileDialog Nau'in canji na magana: openvoice (diff), knn-vc
format string QFileDialog 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 ɗaya zuwa wani. Yana haɗa magana zuwa rubutu, fassara, da rubutu zuwa magana cikin kira ɗaya.

QDialogButtonBox (multipart/form-data)

Parameters@ actionQDialogButtonBoxBayani
file file A' a Fayil ɗin sauti na asali cikin harshen asali. Max 100MB.
target_language string A' a Kudin harshe na manufa (misali, es, fr, de, ja)
voice string QFileDialog Sauti don fitarwa da aka fassara. Za'a zaɓa ta atomatik idan an manta da shi.
preserve_voice boolean QFileDialog QShortcut

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: inmenu

QDialogButtonBox (multipart/form-data)

Parameters@ actionQDialogButtonBoxBayani
file file A' a Fayil na sauti na maganar asali. Max 50MB.
voice string A' a Shirin shaidar magana don maganar fitarwa
model string QFileDialog Model: openvoice (diff), chatterbox
emotion string QFileDialog Target emotion: neutral, happy, sad, angry, excited
speed float QFileDialog Ƙirƙirar gudu. Diff: 1.0. Rarraba: 0.5 zuwa 2.0

Mawallafi

QDialogButtonBox

@ 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 integerDefault: 2
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 integerMaɗaukaki: 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 aiwatar
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ QDialogButtonBox

Ana yin nazarin sauti don gano maɓalli, BPM, da alama ta lokaci.

file fileAudio file to analyze
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

Sauya sauti tsakanin sifofi.

file fileFayil ɗin sauti da za'a canza
format stringTsarin manufa: mp3, wav, flac, ogg, m4a, aac
bitrate integerBitrate na fitarwa cikin kbps: 64, 128, 192, 256, 320
sample_rate integer@ label: textbox
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@ actionQDialogButtonBoxBayani
audio file QFileDialog* Input audio (ko audio ko text ake buƙata)
text string QFileDialog* Insert text (either audio or text required)
voice string QFileDialog Sauti don amsawa daga AI. Diff: af_bella
tts_model string QFileDialog Nau'in TTS na amsawa. Diff: kokoro
system_prompt string QFileDialog QShortcut
conversation_id string QFileDialog 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
}

@ 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 tare da error & Mawallafi

QFileDialog
{
  "error": {
    "code": "insufficient_credits",
    "message": "You do not have enough credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
Halin HTTPError CodeBayani
400 bad_request Parameters na tambaya ba daidai ba. Bincika sakon kuskure domin ƙarin bayani.
401 unauthorized An rasa maɓallin API ko kuma ba'a yarda da shi ba.
402 insufficient_credits Ba ka da kuɗaɗe da yawa. Ka saya a /pricing/.
403 forbidden An kasa samun damar API a cikin shirinka.
404 not_found An kasa samun nau'i ko sauti.
413 file_too_large Fayil ɗin da aka shigar ya wuce iyakar girmansa.
429 rate_limited QODBCResult
500 internal_error Kuskure a cikin mai ba da sabis. Yi kokarin sa'an nan.
503 model_loading Ana loda kwalaye. 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"
}
Webhook results are available for download for 24 hours after completion. Make sure to download them promptly.

Shin kun shirya?

Ka samu maɓallinka na API kuma ka fara haɗa TTS.ai cikin sifofinka.