@ action
Haɗa TTS.ai cikin aikace-aikacenku tare da API na REST. OpenAI-compatible format don canji mai sauƙi.
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.
Authorization: Bearer sk-tts-your-api-key-here
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")
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');
URL na Tushe
Dukkan maɓallan ƙarshe suna dangantacce ga wannan URL na asali. Misali, maɓallin ƙarshe na TTS shine:
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
@ action
QDialogButtonBox
| Parameters | @ action | @ action | Bayani |
|---|---|---|---|
| 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 -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).
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498
QShortcut
Fassara sauti zuwa rubutu. Yana goyon bayan harsuna 99 tare da ganewa-da-kanka.
QDialogButtonBox (multipart/form-data)
| Parameters | @ action | @ action | Bayani |
|---|---|---|---|
| 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
{
"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
Create speech in a cloned voice. Upload a reference audio and text.
QDialogButtonBox (multipart/form-data)
| Parameters | @ action | @ action | Bayani |
|---|---|---|---|
| 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
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 | @ action | Bayani |
|---|---|---|---|
| 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 -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
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 | @ action | Bayani |
|---|---|---|---|
| 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
{
"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
@ action
QDialogButtonBox (multipart/form-data)
| Parameters | @ action | @ action | Bayani |
|---|---|---|---|
| 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.
@ action: inmenu
| file file | Fayil ɗin sauti da za'a inganta |
| denoise boolean | @ action |
| enhance_clarity boolean | @ action |
| super_resolution boolean | Yi girman ingancin sauti (diff: ƙarya) |
| strength integer | Diflomasiyya: |
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 file | Fayil ɗin sauti da za'a raba |
| model string | demucs (diff) ko spleeter |
| stems integer | Adadin kwashe: 2, 4, 5, ko 6 (diff: 2) |
| format string | Nau'in fitarwa: wav, mp3, flac |
@ action
| file file | Fayil ɗin sauti da za'a yi aiki da shi |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Ana nazarin sauti don gano maɓalli, BPM, da kuma zamanin sa hannu.
| file file | Fayil ɗin sauti da za'a lissafa |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Mai sauya sauti tsakanin sifofi.
| file file | Fayil ɗin sauti da za'a canja |
| format string | Nau'in manufa: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Bitrate na fitarwa cikin kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | @ action |
| channels string | mono ko stereo |
QDialogButtonBox
Aika sauti ko rubutu kuma ka karɓi amsa daga AI tare da maganar synthesized.
QDialogButtonBox (multipart/form-data ko JSON)
| Parameters | @ action | @ action | Bayani |
|---|---|---|---|
| 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
{
"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
QDialogButtonBox
Parameters
| Parameters | @ action | @ action |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
Mawallafi
{
"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
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 |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Mawallafi
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
QSoftKeyManager
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
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
@ action
QDialogButtonBox
Mawallafi
{
"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
@ action
@ action
| Parameters | @ action | Bayani |
|---|---|---|
| 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
{
"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
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
# 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
# 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
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
// 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
# 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
# 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
# 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
# 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
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| Halin HTTP | Lambar Kuskure | Bayani |
|---|---|---|
| 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.
{
"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 shirya?
Ka samu maɓallin API ka kuma fara haɗa TTS.ai cikin aikace-aikacenka.