Документация
TTS.aiди REST API аркылуу колдонмолоруңузга интеграциялаңыз. OpenAI-ге шайкеш форматы оңой миграцияны камсыз кылат.
Кыскача баяндама
TTS.ai API бардык платформалык мүмкүнчүлүктөргө программалык түрдө кирүү мүмкүнчүлүгүн берет: тексттен сүйлөмгө синтездөө, сүйлөмдөн текстке транскрипциялоо, үн клондоо, аудиону жакшыртуу жана башкалар. API стандарттык REST конвенцияларын JSON суроо/жауап денелери менен колдонот.
API ачкычы
API ачкычын бул жерден алуу Каттоо эсебинин параметрлери. Pro жана Enterprise пландарында жеткиликтүү.
Негизги URL
https://api.tts.ai/v1/
Аутентификация
Носитель токена через Authorization баштык
Аутентификация
/v1/tts/ эч кандай авторизациясыз иштөө, бир IPге 5000 символго чейин/күн, биздин акысыз моделдердин бирин колдонуп (piper, vits, melotts, kokoro). 15 000 бонустук символду жана премиум моделдерге кирүү үчүн акысыз эсепке катталыңыз.
Premium моделдери жана жогорку ылдамдыктагы чектөөлөр үчүн, аутентификацияны Bearer токен менен жүргүзүү керек Authorization баштык.
Authorization: Bearer sk-tts-your-api-key-here
SDKs
Официалдык SDKs TTS.aiди сиздин колдонмоңузга интеграциялоону жеңилдетет. Алардын экөө тең ачык булактуу жана 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
Бардык аяктоо пункттары бул негиздик URLге карата. Мисалы, TTS аяктоо пункту:
Чектөөлөр
API ылдамдыгынын чектөөлөрү планга жараша өзгөрөт:
| План | Зарылчылыктар/мин | Бир эле учурда | Тексттин максималдуу узундугу |
|---|---|---|---|
| Акысыз | 10 | 2 | 500 символ |
| Жүргүзгүч | 30 | 3 | 1,000,000 символ |
| Про | 60 | 5 | 1,000,000 символ |
| Корпоративдик | 300 | 20 | 50 000 символ |
Ар бир жоопто ылдамдыгы чектелген заголовкалар камтылган: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Кредит чыгымдары
| Сервис | Баасы | Бирдик |
|---|---|---|
| TTS (Free models: Piper, VITS, MeloTTS) | 1000 символ | 1000 символ үчүн |
| TTS (Стандарттык моделдер: Kokoro, CosyVoice 2, ж.б.) | 2000 символ | 1000 символ үчүн |
| TTS (Premium моделдери: Tortoise, Chatterbox ж.б.) | 4000 символ | 1000 символ үчүн |
| Сөздөн текстке | 2000 символ | аудио мүнөтүнө |
| Сөздү клондоо | 4000 символ | 1000 символ үчүн |
| Сөз алмаштыргыч | 3000 символ | аудио мүнөтүнө |
| Аудио жакшыртуу | 2000 символ | аудио мүнөтүнө |
| Вокалдарды алып салуу / Сөздү бөлүү | 3,000-4,000 символ | аудио мүнөтүнө |
| Сөз которуу | 5000 символ | аудио мүнөтүнө |
| Сүрөт чаты | 3000 символ | бир кадам |
| Клавиша издөөчү | Акысыз | -- |
| Аудио конвертер | Акысыз | -- |
Тексттен сүйлөөгө
Текстти сүйлөмгө айлантуу. Аудиофайлды талап кылынган форматта кайтарат.
Талаптын денеси
| Параметрлер | Типи | Зарыл | Сүрөттөмөсү |
|---|---|---|---|
| model | string | Жок | Модель ID (например, kokoro, chatterbox, piper). Если не указано, то мы автоматически выбираем модель, поддерживающую запрашиваемый language — kokoro для en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper для других поддерживаемых языков (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.). |
| text | string | Ооба | Сөзгө айландырылуучу текст. Бир сурам үчүн чектөө: 500 символ (анонимдүү), 5000 (эркин эсеп), 1 000 000 (акча төлөнүүчү). Узак киргизүүлөр сервер тарабынан автоматтык түрдө бөлүнөт. |
| voice | string | Ооба | Дауыс идентификаторы (/v1/voices/ колдонуп, мүмкүн болгон добуштарды көрсөтүңүз) |
| format | string | Жок | Чыгуу форматы: mp3 (стандарт), wav, flac, ogg |
| speed | float | Жок | Сөздүн тездик мультипликатору. Баштапкы: 1.0. Диапазон: 0.5 — 2.0 |
| language | string | Жок | Тил коду (мисалы, en, es). Эгер киргизилбесе, автоматтык түрдө аныкталат. |
| instructions | string | Жок | Активдүү / жеткирүү сигналдары (≤500 символ). Мисалы <код>\ |
| pronunciations | object | array | Жок | Сөздүн айтылышы талапка жараша өзгөртүлөт. {\ |
| stream | boolean | Жок | Стримдин жоопторун активдештирүү. Ачкычтуу: false |
Мисал суроо
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
SSML тегдери
Дата форматы по умолчанию The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result. Poll this endpoint every 1-2 seconds until Fetch the Streaming alternative: For supported models (Kokoro, MeloTTS), use
_Тилекке каршы Ката Мындайча сүйлөнөт cardinal1234one thousand two hundred thirty-four ordinal21twenty-first date1999-12-3131-декабрь, 1999-жыл time14:30two thirty PM telephone+1-555-867-5309plus one five five five eight six seven… currency$1,234.56one thousand two hundred thirty-four dollars and fifty-six cents spell-outNASAN A S A mdy для английского языка и dmy для других языков; перезаписать с format=\{
"model": "kokoro",
"voice": "af_bella",
"text": "Your appointment is on <say-as interpret-as=\"date\">2026-04-26</say-as> at <say-as interpret-as=\"time\">14:30</say-as>. Please call <say-as interpret-as=\"telephone\">+1-555-867-5309</say-as> if you need to reschedule."
}Жауап
Step 1: Submit request
{
"uuid": "77b71db532874ce98e84a69a2d740d4c",
"job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
"status": "queued",
"credits_used": 11,
"credits_remaining": 15000
}Step 2: Poll for result
status is completed or failed.{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}{
"status": "processing"
}Step 3: Download audio
result_url from the completed response to download the audio file.Толук мисал
import requests, time
API_KEY = "sk-tts-your-key"
BASE = "https://api.tts.ai"
# 1. Submit TTS request
resp = requests.post(f"{BASE}/v1/tts/", json={
"model": "kokoro",
"text": "Hello from TTS.ai!",
"voice": "af_bella"
}, headers={"Authorization": f"Bearer {API_KEY}"})
data = resp.json()
uuid = data["uuid"]
# 2. Poll for result
while True:
result = requests.get(f"{BASE}/v1/speech/results/",
params={"uuid": uuid}).json()
if result["status"] == "completed":
# 3. Download audio
audio = requests.get(result["result_url"])
with open("output.mp3", "wb") as f:
f.write(audio.content)
break
elif result["status"] == "failed":
raise Exception(result.get("error", "Generation failed"))
time.sleep(1.5)POST /v1/tts/stream/ for real-time Server-Sent Events (SSE) streaming — no polling needed.
Сөздөн текстке
Аудиону текстке которуу. Автоматтык аныктоо менен 99 тилди колдойт.
Талаптын денеси (multipart/form-data)
| Параметрлер | Типи | Зарыл | Сүрөттөмөсү |
|---|---|---|---|
| file | file | Ооба | Аудиофайл (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Макс. 100 Мб. |
| model | string | Жок | STT модели: whisper (по умолчанию), faster-whisper, sensevoice |
| language | string | Жок | Тил коду. auto автоматтык аныктоо үчүн (стандарт). |
| timestamps | boolean | Жок | Сөз деңгээлиндеги убакыт белгилерин кошуу. Баштапкы: false |
| diarize | boolean | Жок | Диктордун диаризациясын ишке киргизүү. Баштапкы: false |
Жауап
{
"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"
}
]
}
Сөздү клондоо
Клондолгон үн менен сүйлөмдү түзүү. Справочный аудиофайл жана текст жүктөп алуу.
Талаптын денеси (multipart/form-data)
| Параметрлер | Типи | Зарыл | Сүрөттөмөсү |
|---|---|---|---|
| reference_audio | file | Ооба | Справочная аудиозапись (10-30 секунд рекомендуется). Максимум 20 Мб. |
| text | string | Ооба | Клондолгон үн менен сүйлөнүүчү текст. |
| model | string | Жок | Клон моделдери: chatterbox (стандарт), cosyvoice2, gpt-sovits |
| format | string | Жок | Чыгуу форматы: mp3 (стандарт), wav, flac |
| language | string | Жок | Тартуу тили коду. Ал тандалган модель тарабынан колдоого алынышы керек. |
Жауап
Аудиофайлды TTS аяктоо пункту менен бирдей экилик маалыматтар катары кайтарат.
Сөз алмаштыргыч
Аудиону башка үнгө айландыруу. Баштапкы аудиону жүктөп, максаттуу үндү тандаңыз.
Талаптын денеси (multipart/form-data)
| Параметрлер | Типи | Зарыл | Сүрөттөмөсү |
|---|---|---|---|
| file | file | Ооба | Баштапкы аудиофайл (MP3, WAV, FLAC). Макс. 50 Мб. |
| target_voice | string | Ооба | Конвертируемый голосовой идентификатор (используйте /v1/voices/ для перечисления доступных голосов) |
| model | string | Жок | Дауыс конверсиясынын модели: openvoice (стандарт), knn-vc |
| format | string | Жок | Чыгуу форматы: wav (стандарттуу), mp3, flac |
Мисал суроо
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
Жауап
Аудиофайлды бинардык маалымат катары кайтарат.
Сөз которуу
Бир тилден экинчи тилге сүйлөмдү которуу. Бир эле чалууда сүйлөмдү текстке, текстти сүйлөмгө жана текстти сүйлөмгө которуу функцияларын бириктирет.
Талаптын денеси (multipart/form-data)
| Параметрлер | Типи | Зарыл | Сүрөттөмөсү |
|---|---|---|---|
| file | file | Ооба | Аудиофайлдын оригиналдуу тили. Макс. 100 Мб. |
| target_language | string | Ооба | Тилдин коду (мисалы, es, fr, de, ja) |
| voice | string | Жок | Таржима үчүн үн. Эгерде чыкпай калса, автоматтык түрдө тандалат. |
| preserve_voice | boolean | Жок | Оригиналдык сүйлөгөн адамдын үнүнүн мүнөздөмөлөрүн сактоого аракет кылуу. Ачкычтуу: false |
Жауап
{
"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
}
Сөздөн-сөзгө
Сөздүн стилин, эмоциясын же мазмунун сактап калуу менен сүйлөмдү өзгөртүү. Тонду, темпти жана сүйлөмдүн интонациясын өзгөртүү үчүн пайдалуу.
Талаптын денеси (multipart/form-data)
| Параметрлер | Типи | Зарыл | Сүрөттөмөсү |
|---|---|---|---|
| file | file | Ооба | Баштапкы үн аудио файлы. Макс. 50 Мб. |
| voice | string | Ооба | Сөз чыгаруу үчүн тил идентификатору |
| model | string | Жок | Модель: openvoice (стандарт), chatterbox |
| emotion | string | Жок | Эмоционалдык абал: neutral, happy, sad, angry, excited |
| speed | float | Жок | Жылдамдыктын тууралоосу. Ачкычтуу: 1.0. Диапазон: 0.5ден 2.0ге чейин |
Жауап
Аудиофайлды бинардык маалымат катары кайтарат.
Аудио аспаптары
Аудио иштетүүнү аяктоо пункттары: жакшыртуу, вокалды алып салуу, стемди бөлүү ж.б.
Аудио сапатын жакшыртуу: ызы-чууну жокко чыгаруу, ачыктыкты жакшыртуу, жогорку резолюция.
| file file | Жаңылоо үчүн аудио файл |
| denoise boolean | Шумдукту азайтуу активдештирилсин (адаттагы: true) |
| enhance_clarity boolean | Сөздөрдүн тактыгын жогорулатуу (адаттагы: true) |
| super_resolution boolean | Аудио сапатын жогорулатуу (адаттагы: false) |
| strength integer | 1-3 (ачык, орточо, катуу). Ачкычтуу: 2 |
Вокалдыктарды инструменталдыктардан бөлүү (вокалдыктарды алып салуу) же бөлүктөрүнө бөлүү.
| file file | Айырмалоо үчүн аудио файл |
| model string | demucs (стандарттуу) же spleeter |
| stems integer | Стержналардын саны: 2, 4, 5 же 6 (адаттагы: 2) |
| format string | Чыгуу форматы: wav, mp3, flac |
Эхо жана реверберацияны аудиозаписиден алып салуу
| file file | Аппаратураны иштетүү үчүн аудио файл |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
Клавиша, BPM жана такт аныктоо үчүн аудиону анализдөө.
| file file | Анализдөө үчүн аудио файл |
{
"key": "C",
"scale": "Major",
"bpm": 120.0,
"time_signature": "4/4",
"camelot": "8B",
"compatible_keys": ["C Major", "G Major", "F Major", "A Minor"]
}
Аудио форматтарын алмаштыруу.
| file file | Аудио файлды которуу |
| format string | Тармак форматы: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Чыгаруу ылдамдыгы, кбит/с: 64, 128, 192, 256, 320 |
| sample_rate integer | Диапазон: |
| channels string | mono же stereo |
Сүрөт чаты
Аудио же текстти жөнөтүү жана синтетикалык сүйлөм менен AI жооп алуу.
Талаптын денеси (multipart/form-data же JSON)
| Параметрлер | Типи | Зарыл | Сүрөттөмөсү |
|---|---|---|---|
| audio | file | Жок* | Аудио киргизүү (audio же text талап кылынат) |
| text | string | Жок* | Текстовый ввод (audio или text требуется) |
| voice | string | Жок | AI жооп үчүн үн. Баштапкы: af_bella |
| tts_model | string | Жок | Жауап беруге арналған TTS модель. Әдеттегі: kokoro |
| system_prompt | string | Жок | AI үчүн өздүк системалык суроо |
| conversation_id | string | Жок | Бар болгон баарлашууну улантуу |
Жауап
{
"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
}
TTS пакети
Бир нече текстти параллельдүү TTS генерациясы үчүн жөнөтүү. Бардык тапшырмалар бүткөндөн кийин webhook колл-бэкти алууну тандаңыз.
Параметрлер
| Параметрлер | Типи | Сүрөт |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Батарея бүткөндө POST натыйжалары үчүн тандалма URL. |
Жауап
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
GET /v1/tts/batch/result/?batch_id=abc123 менен сурамжылоо жүрүшү
Сөздү киргизүү
Справочная аудиодан үн куюунун алдын ала эсептөөсү. Кайра кайтарылган embed_id кийинки үн клондоо запросунда тез генерациялоо үчүн колдонулат.
Параметрлер
| Параметрлер | Типи | Сүрөт |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
Жауап
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
Саламаттыкты текшерүү
GPU серверинин абалы, жүктөлгөн моделдер жана кезектин өлчөмүн текшерүү. Аутентификация талап кылынбайт. Кэш 30 секундга сакталат.
Жауап
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
Список моделей
Бардык жеткиликтүү моделдердин жана алардын мүмкүнчүлүктөрүнүн тизмесин кайтарат.
Жауап
{
"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
}
]
}
Список голосов
Бардык жеткиликтүү үндөрдүн тизмесин кайтарат, модель же тил боюнча фильтрлөөгө болот.
Запрос параметрлери
| Параметрлер | Типи | Сүрөттөмөсү |
|---|---|---|
| model | string | Модель ID боюнча фильтрлөө (мисалы, kokoro) |
| language | string | Тил коду боюнча фильтрлөө (мисалы, en) |
| gender | string | Жынысы боюнча фильтр: male, female, neutral |
Жауап
{
"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
}
Субтитрлер (SRT / VTT) жаңы
Транслирование завершенных заданий TTS с синхронизированными субтитрами. Проводится Whisper-alignment аудиосигнала и возвращается SRT или WebVTT. Результат хранится на диске, поэтому второй вызов для того же uuid будет дисковым чтением.
Запрос параметрлери
| Параметрлер | Зарыл | Сүрөттөмөсү |
|---|---|---|
| uuid | Ооба | Задание UUID, возвращенное /v1/tts/ или /v1/voice-clone/. |
| format | Жок | srt (стандарт) же vtt. |
| download | Жок | 1 Content-Disposition: attachment жөнөтүүгө, ошондо браузер көрсөтпөй эле сактайт. |
| language | Жок | Түздөө моделине ишора (эгер көрсөтүлбөсө, анда автоматтык түрдө аныкталат). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Сөздүк жаңы
ТТС-двигателю как произносить определенные слова. Сохраненные записи автоматически применяются к каждому запросу TTS. Максимальный лимит на вход в одном учетном записи - 200.
Талаптын денеси (POST)
| Параметрлер | Типи | Сүрөттөмөсү |
|---|---|---|
| word | string | Текст, который следует перезаписать (например, GIF, Anthropic). Соответствие слов. |
| replacement | string | Модель үчүн анын орфографиясы (мисалы jiff, ann THROP ick). |
| language | string | ISO коду тандалуучу. Бос = бардык тилдер үчүн. |
| case_sensitive | boolean | Стандарт false. true болсо, каттар туура жазылат. |
# Save an entry
curl -X POST https://tts.ai/api/v1/pronunciations/ \
-H "Authorization: Bearer sk-tts-..." \
-H "Content-Type: application/json" \
-d '{"word": "GIF", "replacement": "jiff"}'
# List your entries
curl https://tts.ai/api/v1/pronunciations/ -H "Authorization: Bearer sk-tts-..."
# Delete entry by id
curl -X DELETE "https://tts.ai/api/v1/pronunciations/?id=42" -H "Authorization: Bearer sk-tts-..."
Сиз ошондой эле ар бир суроо үчүн өзгөртүүлөрдү сактабай өткөрүп бере аласыз — каалаган /v1/tts/ чакыруусуна pronunciations объект же масив катары кошуңуз (TTS endpoint параметрлерин караңыз).
Макаланын баяндамасы жаңы
Бир гана тегин ар бир макаланын бетине коюп, окурманга чыкылдатуу менен бетти баяндаган фиксированный окурман панелин берет. Макаланын денесин автоматтык түрдө аныктайт, жеке үн / модель / позиция / акценттин түсүн колдойт.
<script src="https://tts.ai/narrator.js"
data-pk="pk-tts-your-publishable-key"
data-voice="af_bella"
data-model="kokoro"
data-extract="auto"
data-position="bottom"
data-color="#e60000"
data-locale="en"></script>
_Параметрлер
| Параметрлер | Сүрөттөмөсү |
|---|---|
data-pk | Жарыялануучу ключ (pk-tts-…). Домендик чектөөлөр ключдун allowed_domains талаасы аркылуу күчүнө кирет. |
data-voice | Сөздүк идентификатору. Стандарт af_bella. |
data-model | TTS моделинин ID-и. Ачкыч кокор. |
data-extract | auto (стандарт) — article/main/.post-content/.entry-content селектору колдонулат, эң көп абзац топторуна кайтат. Же конкреттүү элементке багыттоо үчүн каалаган CSS селектору берилет. |
data-position | bottom (стандарт) же top. |
data-color | Акценттин түсү (ар кандай CSS түсү). Ачкыч #e60000. |
data-min-chars / data-max-chars | Эгерде макаланын узундугу минималдык символдон (адаттагы 200) аз болсо, анда сызыкчаны өткөрүп жиберүү. Эгерде макаланын узундугу максималдык символдон (адаттагы 50 000) көп болсо, анда сызыкчаны өткөрүп жиберүү. |
Көнүгүү
Тексттик баскыч стилиндеги киргизүү. тегинин жанында көрсөтүлөт жана баскыч менен иштелип чыккан кыска фрагментти ойнотот. Бул жогорудагы макаланын баяндагычынан айырмаланат (бул автоматтык түрдө бетти камтыган панелди киргизип, макаланын толук баяндамасын ойнотот).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Сакталган үн (узак мөөнөттүү клондор)
Справочную аудиодань загрузить один раз, получить постоянный voice_id, а затем ссылаться на этот id в TTS запросах вместо того, чтобы каждый раз загружать аудио. Идеально для интеграции с большим объемом данных.
Сөздү жүктөп алуу
POST
https://tts.ai/api/v1/user-voices/
Аутентификация керек
Бир нече бөлүгү бар форма. Полярлар: файл (трябает, 5-30с аудио), аты (требуется), тили (необязательно, по умолчанию en), модели (необязательно — cosyvoice2 для zh/ja/ko автоматически выбирается, если нет openvoice), consent_confirmed (требуется, любое истинное значение).
curl -X POST https://tts.ai/api/v1/user-voices/ \
-H "Authorization: Bearer sk-tts-your-key" \
-F "file=@reference.wav" \
-F "name=My Narrator" \
-F "language=en" \
-F "consent_confirmed=true"
# Response:
{
"public_id": "uv_a1b2c3d4e5f6",
"id": 42,
"name": "My Narrator",
"model_name": "openvoice",
"language": "en",
"reference_audio_url": "https://tts.ai/media/user-voices/....wav",
"storage_status": "active",
"created_at": "2026-04-17T03:45:00+00:00"
}
ТТСде сакталган үн колдонулат
POST to /api/v1/tts/ (NOTE: web VPS host, not api.tts.ai) with user_voice_id. Мы загружаем хранящийся аудиофайл и маршрут к клонирующему конвейеру.
curl -X POST https://tts.ai/api/v1/tts/ \
-H "Authorization: Bearer sk-tts-your-key" \
-H "Content-Type: application/json" \
-d '{"text":"Hello from my saved voice","user_voice_id":"uv_a1b2c3d4e5f6"}'
# Returns a queued job — poll /v1/speech/results/?uuid=... for the audio URL.
Список / Удалить
GET https://tts.ai/api/v1/user-voices/ # list your saved voices + quota info
DELETE https://tts.ai/api/v1/user-voices/?public_id=uv_a1b2c3d4e5f6
Архивдөө / кайра активдештирүү (эркин)
Архивделген үн сиздин эсеп-кысапыңызда калат, бирок TTSде колдонулбайт. Бул ыңгайлуу, анткени сиздин тизмеңиз таза болуп калат.
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/archive/
POST https://tts.ai/api/v1/user-voices/uv_a1b2c3d4e5f6/reactivate/
Код мисалдары
Тексттен сүйлөөгө
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')}")
Сөздөн текстке
# 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"])
Сөздү клондоо
# 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)
Тексттен сүйлөөгө
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();
Сөздөн текстке
// 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);
Тексттен сүйлөөгө
# 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
Сөздөн текстке
# 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"
Сөздү клондоо
# 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
Аудио жакшыртуу
# 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
Ката коддору
Бардык каталарга JSON жооп кайтарылат error талаа.
{
"error": {
"code": "insufficient_credits",
"message": "You do not have enough characters for this request.",
"characters_required": 4000,
"characters_available": 2000
}
}
| HTTP абалы | Ката коду | Сүрөттөмөсү |
|---|---|---|
| 400 | bad_request |
Сүрөттөмөнүн параметрлери туура эмес. Ката жөнүндө маалыматты бул жерден караңыз. |
| 401 | unauthorized |
API ачкычы жок же жараксыз. |
| 402 | insufficient_credits |
Символдор жетишсиз. /pricing/ сайтынан көбүрөөк сатып алыңыз. |
| 403 | forbidden |
Бул ресурска кирүү укугуңуз жок (мисалы, башка колдонуучунун тапшырмасын сурап алуу). API кирүү укугу ар бир планга киргизилет. |
| 404 | not_found |
Модель же үн табылбады. |
| 413 | file_too_large |
Жүктөлгөн файл өлчөмү чектен ашып кетти. |
| 429 | rate_limited |
Тездик чектөөлөрүн текшериңиз. |
| 500 | internal_error |
Сервердин катасы. Кийин кайра аракет кылыңыз. |
| 503 | model_loading |
Модель жүктөлүүдө. Бир нече секунддан кийин кайра аракет кылыңыз. |
Веб-фукстар
Долгосрочные задачи (разделение корня, пакетный TTS) можно выполнять с помощью параметра webhook_url. Задача выполнена, мы отправим результат на ваш 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"
}
Жаңылоого даярсызбы?
API ачкычын алып, TTS.aiди колдонмолоруңузга интеграциялоону баштаңыз.