@ action
Haɗa TTS.ai cikin aikace-aikacenku tare da API ɗinmu na REST. OpenAI-compatible format for easy migration.
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.
Authorization: Bearer sk-tts-your-api-key-here
URL na Tushe
Dukan maɓallan ƙarshe sun danganta ga wannan URL na asali. Misali, maɓallin ƙarshe na TTS shine:
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
@ action
QDialogButtonBox
| Parameters | @ action | QDialogButtonBox | Bayani |
|---|---|---|---|
| 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 -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.).
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 | QDialogButtonBox | Bayani |
|---|---|---|---|
| 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
{
"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 | QDialogButtonBox | Bayani |
|---|---|---|---|
| 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
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 | QDialogButtonBox | Bayani |
|---|---|---|---|
| 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 -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 ɗaya zuwa wani. Yana haɗa magana zuwa rubutu, fassara, da rubutu zuwa magana cikin kira ɗaya.
QDialogButtonBox (multipart/form-data)
| Parameters | @ action | QDialogButtonBox | Bayani |
|---|---|---|---|
| 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
{
"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: inmenu
QDialogButtonBox (multipart/form-data)
| Parameters | @ action | QDialogButtonBox | Bayani |
|---|---|---|---|
| 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.
@ 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 | Default: 2 |
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 | Maɗaukaki: 2, 4, 5, ko 6 (diff: 2) |
| format string | Nau'in fitarwa: wav, mp3, flac |
@ action
| file file | Fayil ɗin sauti da za'a aiwatar |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Ana yin nazarin sauti don gano maɓalli, BPM, da alama ta lokaci.
| file file | Audio file to analyze |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Sauya sauti tsakanin sifofi.
| file file | Fayil ɗin sauti da za'a canza |
| format string | Tsarin manufa: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Bitrate na fitarwa cikin kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | @ label: textbox |
| 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 | QDialogButtonBox | Bayani |
|---|---|---|---|
| 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
{
"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
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 tare da error & Mawallafi
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough credits for this request.",
"credits_required": 4,
"credits_available": 2
}
}
| Halin HTTP | Error Code | Bayani |
|---|---|---|
| 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.
{
"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"
}
Shin kun shirya?
Ka samu maɓallinka na API kuma ka fara haɗa TTS.ai cikin sifofinka.