API-dokumentado
Integri TTS.ai en viajn aplikaĵojn per nia REST API. OpenAI-kongrua formato por facila migrado.
@ title: window
La TTS.ai API disponigas programaran aliron al ĉiuj funkcioj de la platformo: sintezo de teksto al parolado, transskribo de parolado al teksto, voĉo-klonado, aŭda plibonigo, kaj pli. La API uzas normajn REST-konvenciojn kun JSON-peto/respondaj korpoj.
API-ŝlosilo
Preni vian API-ŝlosilon de Kontoagordo. Disponebla en Pro kaj Enterprise planoj.
Baza URLo
https://api.tts.ai/v1/
Aŭtentigo
Portisto- Tokeno tra Authorization kapo
Aŭtentigo
Ĉiuj API-petoj bezonas aŭtentigon per portanta signoĉeno en la Authorization kapo.
Authorization: Bearer sk-tts-your-api-key-here
Baza URLo
Ĉiuj finpunktoj estas relative al tiu baza URLo. Ekzemple, la TTS- finpunkto estas:
Limigoj de rapideco
API-rapidecaj limoj varias laŭ plano:
| Plano | Petoj/min | Konkurenta | Maksimuma tekstolongo |
|---|---|---|---|
| Pro | 60 | 5 | 5,000 signoj |
| Enterpriseusa. kgm | 300 | 20 | 50,000 signoj |
Kaplinioj pri rapidolimo estas inkludataj en ĉiu respondo: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Kreditaj kostoj
| Servo | Kostoj | Unuo |
|---|---|---|
| TTS (liberaj modeloj: Piper, VITS, MeloTTS) | 1 kredito | por 1, 000 signoj |
| TTS (Normaj modeloj: Kokoro, CosyVoice 2, ktp.) | 2 kreditoj | por 1, 000 signoj |
| TTS (Premiaj modeloj: Tortoise, Chatterbox, ktp.) | 4 kreditoj | por 1, 000 signoj |
| Parolo al tekstoComment | 2 kreditoj | per minuto de aŭdo |
| Voĉa klonado | 4 kreditoj | por 1, 000 signoj |
| VoĉŝanĝiloName | 3 kreditoj | per minuto de aŭdo |
| Sona plibonigo | 2 kreditoj | per minuto de aŭdo |
| Voĉforigo / Voĉdivido | 3- 4 kreditoj | per minuto de aŭdo |
| ParoltradukoName | 5 kreditoj | per minuto de aŭdo |
| Voĉa babilejoName | 3 kreditoj | per vico |
| & BPM- serĉilo | Libera | -- |
| SonkonvertiloName | Libera | -- |
Teksto- al- ParoloComment
Konverti tekston al parola aŭdo. Redonas sondosieron en la dezirata formato.
Petokorpo
| Parametroj | & Tipo: | Necesa | Priskribo |
|---|---|---|---|
| model | string | Jes | Modelo-identigilo (ekz. kokoro, chatterbox, piper) |
| text | string | Jes | Teksto konvertenda al parolado (maksimume 5, 000 signoj por Pro, 50, 000 por Enterprise) |
| voice | string | Jes | Voĉa identigilo (uzu /v1/voices/ por listigi disponeblajn voĉojn) |
| format | string | @ info: status | Eliga formato: mp3 (default), wav, flac, ogg |
| speed | float | @ info: status | Parolrapideca multiplikilo. Defaŭlte: 1.0. Intervalo: 0.5 ĝis 2.0 |
| language | string | @ info: status | Lingva kodo (ekz. en, es). Aŭtomate detektita se omita. |
| stream | boolean | @ info: status | Ebligi fluan respondon. Defaŭlte: false |
Ekzemplopeto
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
Respondo
Redonas la sondosieron kiel duuma datumo kun taŭga Content-Type kapo (audio/mpeg, audio/wav, ktp.).
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498
Parolo al tekstoComment
Transskribi aŭdon al teksto. Subtenas 99 lingvojn kun aŭtomata detekto.
Petokorpo (multipart/form-data)
| Parametroj | & Tipo: | Necesa | Priskribo |
|---|---|---|---|
| file | file | Jes | Sona dosiero (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Maksimume 100 MB. |
| model | string | @ info: status | STT modelo: whisper (default), faster-whisper, sensevoice |
| language | string | @ info: status | Lingva kodo. auto por aŭtomata detekto (default). |
| timestamps | boolean | @ info: status | Include word-level timestamps. Default: false |
| diarize | boolean | @ info: status | Ebligi laŭtparolilon. Defaŭlte: false |
Respondo
{
"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"
}
]
}
Voĉa klonado
Generi paroladon per klonita voĉo. Alŝuti referencan sonon kaj tekston. Name
Petokorpo (multipart/form-data)
| Parametroj | & Tipo: | Necesa | Priskribo |
|---|---|---|---|
| reference_audio | file | Jes | Referenca voĉa aŭdo (10-30 sekundoj rekomenditaj). Maks. 20MB. |
| text | string | Jes | Teksto por paroli per la klonita voĉo. |
| model | string | @ info: status | Klona modelo: chatterbox (default), cosyvoice2, gpt-sovits |
| format | string | @ info: status | Eliga formato: mp3 (default), wav, flac |
| language | string | @ info: status | Cellingva kodo. Devas esti subtenata de la elektita modelo. |
Respondo
Redonas la sondosieron kiel duuma datumo, same kiel la TTS- finpunkto.
VoĉŝanĝiloName
Konverti sonon por soni kiel alia voĉo. Alŝutu fontan sonon kaj elektu celvoĉon.
Petokorpo (multipart/form-data)
| Parametroj | & Tipo: | Necesa | Priskribo |
|---|---|---|---|
| file | file | Jes | Fonta sondosiero (MP3, WAV, FLAC). Maks. 50MB. |
| target_voice | string | Jes | Celvoĉa identigilo konvertenda al (uzu /v1/voices/ por listigi disponeblajn voĉojn) |
| model | string | @ info: status | Voĉa konverta modelo: openvoice (default), knn-vc |
| format | string | @ info: status | Eliga formato: wav (default), mp3, flac |
Ekzemplopeto
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
Respondo
Returnas la konvertitan sondosieron kiel duuma datumo.
ParoltradukoName
Traduki parolitan sonon el unu lingvo al alia. Kombinas paroladon al teksto, tradukon, kaj tekston al parolado en ununura voko. Name
Petokorpo (multipart/form-data)
| Parametroj | & Tipo: | Necesa | Priskribo |
|---|---|---|---|
| file | file | Jes | Fonta sondosiero en la originala lingvo. Maks. 100MB. |
| target_language | string | Jes | Cellingva kodo (ekz. es, fr, de, ja) |
| voice | string | @ info: status | Voĉo por tradukita eligo. Aŭtomate elektita se omita. |
| preserve_voice | boolean | @ info: status | Provi konservi la originan parolanton |
Respondo
{
"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
}
Parolo al ParoloComment
Transformi parolstilon, emocion, aŭ prezentadon dum konservado de la enhavo. Utila por agordi tonon, ritmon, kaj esprimpovon.
Petokorpo (multipart/form-data)
| Parametroj | & Tipo: | Necesa | Priskribo |
|---|---|---|---|
| file | file | Jes | Fonta parola aŭddosiero. Maks. 50MB. |
| voice | string | Jes | Celvoĉa identigilo por la elsendata parolado |
| model | string | @ info: status | Modelo: openvoice (default), chatterbox |
| emotion | string | @ info: status | Celemocio: neŭtrala, feliĉa, trista, kolera, ekscitita
|
| speed | float | @ info: status | Rapideca agordo. Defaŭlte: 1.0. Intervalo: 0.5 ĝis 2.0 |
Respondo
Redonas la transformitan sondosieron kiel duuma datumo.
SonilojName
Finpunktoj de aŭda prilaborado por plibonigo, forigo de voĉo, disdivido de tigo, ktp.
Plibonigi sonkvaliton: forigi bruon, plibonigi klarecon, superdifino.
| file file | Sondosiero por plibonigo |
| denoise boolean | Ebligi malbruigon (default: true) |
| enhance_clarity boolean | Plibonigi parolklarecon (default: true) |
| super_resolution boolean | Plibonigi sonkvaliton (default: false) |
| strength integer | 1- 3 (malforta, meza, forta). Apriora: 2 |
Separi vokalojn de instrumentaloj (vokala forigo) aŭ dividi en stemojn.
| file file | Sondosiero por apartigi |
| model string | demucs (defaŭlta) aŭ spleeter |
| stems integer | Nombro de truoj: 2, 4, 5, aŭ 6 (default: 2) |
| format string | Eliga formato: wav, mp3, flac |
Forigi eĥon kaj reverbon el sonregistraĵoj.
| file file | Sondosiero por prilabori |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Analizi sonon por detekti tonalton, BPM, kaj taktosignon.
| file file | Sondosiero por analizi |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Konverti sonojn inter formatoj.
| file file | Sondosiero konvertenda |
| format string | Celformato: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Eliga bitkvanto en kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Sample rate: 22050, 44100, 48000 |
| channels string | mono aŭ stereo |
Voĉa babilejoName
Sendu sonon aŭ tekston kaj ricevu AI-respondon kun sintezita parolado.
Petokorpo (multipart/form-data aŭ JSON)
| Parametroj | & Tipo: | Necesa | Priskribo |
|---|---|---|---|
| audio | file | @ info: status* | Sona enigo (necesas audio aŭ text) |
| text | string | @ info: status* | Tekstenigo (necesas audio aŭ text) |
| voice | string | @ info: status | Voĉo por AI-respondo. Defaŭlte: af_bella |
| tts_model | string | @ info: status | TTS-modelo por respondo. Defaŭlte: kokoro |
| system_prompt | string | @ info: status | Propra sistema mesaĝo por la AI |
| conversation_id | string | @ info: status | Daŭrigi ekzistantan konversacion |
Respondo
{
"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
}
Listo de modeloj
Redonas liston de ĉiuj haveblaj modeloj kun iliaj kapabloj.
Respondo
{
"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
}
]
}
Listi voĉojn
Redonas liston de ĉiuj haveblaj voĉoj, opcione filtritaj laŭ modelo aŭ lingvo.
Query Parameters
| Parametroj | & Tipo: | Priskribo |
|---|---|---|
| model | string | Filtri laŭ modelo-identigilo (ekz. kokoro) |
| language | string | Filtri laŭ lingvokodo (ekz. en) |
| gender | string | Filtri laŭ sekso: male, female, neutral |
Respondo
{
"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
}
Kodoekzemploj
Teksto- al- ParoloComment
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')}")
Parolo al tekstoComment
# 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"])
Voĉa klonado
# 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)
Teksto- al- ParoloComment
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();
Parolo al tekstoComment
// 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);
Teksto- al- ParoloComment
# 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
Parolo al tekstoComment
# 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"
Voĉa klonado
# 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
Sona plibonigo
# 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
Erarokodoj
Ĉiuj eraroj redonas JSON-respondon kun error kampo.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough credits for this request.",
"credits_required": 4,
"credits_available": 2
}
}
| HTTP- stato | Erarokodo | Priskribo |
|---|---|---|
| 400 | bad_request |
Nevalidaj petaj parametroj. Kontrolu la erarmesaĝon por detaloj. |
| 401 | unauthorized |
Mankanta aŭ nevalida API- ŝlosilo. |
| 402 | insufficient_credits |
Ne sufiĉas kreditoj. Aĉetu pli ĉe / pricing /. |
| 403 | forbidden |
API- aliro ne estas disponebla en via plano. |
| 404 | not_found |
Modelo aŭ voĉo ne trovita. |
| 413 | file_too_large |
La alŝutita dosiero superas la maksimuman grandecon. |
| 429 | rate_limited |
Tro multaj petoj. Kontrolu la kapliniojn de la rapideclimo. |
| 500 | internal_error |
Servila eraro. Provu denove poste. |
| 503 | model_loading |
Ŝarĝante modelon. Reprovu post kelkaj sekundoj. |
TTT- ligiloj
Por longdaŭraj taskoj (trunk-divido, batch TTS), vi povas doni webhook_url parametron. Kiam la tasko finiĝas, ni POSTos la rezulton al via URL.
{
"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"
}
Ĉu vi pretas konstrui?
Prenu vian API-ŝlosilon kaj komencu integri TTS.ai en viajn aplikaĵojn.