Документація з API
Інтегрувати TTS.ai до ваших програм за допомогою нашого API REST. Сумісний з OpenAI формат для легкої міграції.
Огляд
У TTS.ai API передбачено програмний доступ до всіх можливостей платформи: синтез синтезу мовлення, текстовий текст, клонування голосів, покращення звукових даних тощо. У API використано стандартні конгреси REST з тілом JSON query/respons.
Ключ API
Отримати ваш ключ API від Параметри облікового запису. Доступні щодо Про та промислових планів.
Базова адреса URL
https://api.tts.ai/v1/
Auth
Помітка з медведем Authorization заголовок
Розпізнавання
/v1/tts/ працює без розпізнавання, до 5000 символів/дня за IP, використовуючи будь-яку з наших вільних моделей (piper, vits, melotts, kokoro). Підписуйтесь на безкоштовний рахунок, щоб отримати 15 000 бонусів і доступ до преміальних моделей.
Для преміальних моделей і обмеження вищих частот розпізнавання з жетоном у Authorization заголовок.
Authorization: Bearer sk-tts-your-api-key-here
SDKs
Офіційна SDK спрощує інтеграцію 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 символів |
| Pro | 60 | 5 | 1 000 000 символів |
| Підприємство | 300 | 20 | 50 000 символів |
Заголовки обмеження оцінки буде включено до кожного відповіді: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Кошти кредиту
| Служба | Вартість | Одиниця |
|---|---|---|
| TTS (Free Model: Piper, VITS, MellotTS) | 1000 символів | на 1000 символів |
| TTS (звичайні моделі: Kokro, CosyWham 2 тощо) | 2000 символів | на 1000 символів |
| TTS (моделі Premium: Tortoise, Chatterbox тощо) | 4000 символів | на 1000 символів |
| Мова до тексту | 2000 символів | на хвилину звуку |
| Клонування голосу | 4000 символів | на 1000 символів |
| Зміна голосу | 3000 символів | на хвилину звуку |
| Покращення звуку | 2000 символів | на хвилину звуку |
| Vocal Delete / Stem spliting | 3000- 4000 символів | на хвилину звуку |
| Переклад мовлення | 5000 символів | на хвилину звуку |
| Голосова балачка | 3000 символів | на хід |
| Пошук ключів & BPM | Вільно | -- |
| Перетворювач звуку | Вільно | -- |
Текст для мовлення
Перетворити текст на аудіовимовний. Повертає звуковий файл у вказаному форматі.
Вимагати тіло
| Параметр | Тип | Обов' язково | Опис |
|---|---|---|---|
| model | string | Ні | Model ID (e.g., kokoro, chatterbox, piper). If omitted, we auto-pick a model that supports the requested language — kokoro for en/ja/zh/ko/fr/de/it/pt/es/hi/ru, piper for other supported languages (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.). |
| text | string | Так. | Текст для перетворення на мовлення. Заголовка для перевірки: 500 символів (безіменний), 5000 (вільний рахунок), 1 000 000 (оплачений план). Довгі входи - це автоматичний запит на сервер. |
| voice | string | Так. | ІД голосу (використовуйте /v1/voices/ code > для списку доступних голосів) |
| format | string | Ні | Output format: mp3 (default), wav, flac, ogg |
| speed | float | Ні | Множення швидкості читання. Типове значення: < code > 1. 0 code >. Range: < code > 0. 5 <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > > > > > > > > > > < > < > < > < > > > > < > < > < > < > < > < > < <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > < > <\ \ > <\ \ \ \ \ \ \ \ > <\ \ > < > < > < > < > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >\ \ \ \ \ \ \ \ \ \ \ \ \ >\ \ >\ \ >\ \ >\ \ >\ \ >\ \ >\ \ >\ \ > <\ \ >\ \ >\ \ > < < < <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ |
| language | string | Ні | Language code (e.g., en, es). Auto-detected if omitted. |
| instructions | string | Ні | Дія / доставка} (} 500 символів). Наприклад, < code >\ Do not translate the keyword between brackets (e. g. ServerName, ServerAdmin, etc.) |
| pronunciations | object | array | Ні | Заміна вимови < code > {\ |
| stream | boolean | Ні | Увімкнути потокову відповідь. Типове значення: < code > 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 < scipe- as >
Переносити номери, дати, валюту, номери телефонів і абревіатури у < code > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >
| інтерпретувати- as | Ввід | Як було сказано |
|---|---|---|
cardinal | 1234 | one thousand two hundred thirty-four |
ordinal | 21 | twenty-first |
date | 1999-12-31 | December thirty-first, nineteen ninety-nine |
time | 14:30 | two thirty PM |
telephone | +1-555-867-5309 | plus one five five five eight six seven… |
currency | $1,234.56 | one thousand two hundred thirty-four dollars and fifty-six cents |
spell-out | NASA | N A S A |
Date format defaults to mdy for English and dmy elsewhere; override with format="ymd|mdy|dmy". Currency auto-detects $/€/£/¥; pass currency="USD|EUR|GBP|JPY|CAD|AUD|MXN|INR|CNY" to set it explicitly. Tags work in any language; English is fully supported, other languages use num2words where available.
{
"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."
}
Відповідь
The TTS endpoint queues your request and returns a JSON response with a job UUID. You then poll for the result.
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
Poll this endpoint every 1-2 seconds until status is completed or failed.
{
"status": "completed",
"result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
{
"status": "processing"
}
Step 3: Download audio
Fetch the result_url from the completed response to download the audio file.
Full example
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)
Streaming alternative: For supported models (Kokoro, MeloTTS), use 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). Макс. 100MБ. |
| model | string | Ні | STT model: whisper (default), faster-whisper, sensevoice |
| language | string | Ні | Код мови. < code > auto code > для автоматичного визначення (типово). |
| timestamps | boolean | Ні | Включити часові штампи текстового рівня. Типове значення: < code > false <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > |
| diarize | boolean | Ні | Увімкнути диалізацію звуку. Типове значення: < code > 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 | Ні | Модель клонування: < code > chatockbox code > (типовий), < code > cosyvoice2 code >, < code > gpt- sowits code > |
| format | string | Ні | Output format: mp3 (default), wav, flac |
| language | string | Ні | Код мови призначення. Слід підтримувати вибраною моделлю. |
Відповідь
Повертає звуковий файл як двійкові дані, те саме, що і кінцева точка TTS.
Зміна голосу
Перетворити аудіо на звук іншого голосу. Вивантажити звуковий код і обрати цільовий голос.
Вимагати тіло (multipart/form-data)
| Параметр | Тип | Обов' язково | Опис |
|---|---|---|---|
| file | file | Так. | Звуковий файл джерела (MP3, WAV, FLAC). Макс. 50 Мб. |
| target_voice | string | Так. | Цільовий ідентифікатор голосу для перетворення (використовуйте < code >/ v1/ voices/ code > для списку доступних голосів) |
| model | string | Ні | Модель перетворення голосу: < code > openvoice code > (типовий), < code > kn- vc <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > |
| format | string | Ні | Output format: wav (default), 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 | Так. | Target language code (e.g., es, fr, de, ja) |
| voice | string | Ні | Голос для перекладу виводу. Автовибрано, якщо не вказано. |
| preserve_voice | boolean | Ні | Намагатися зберегти характеристики голосу оригінального промовця. Типове значення: < code > 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 | Ні | Модель: < code > openvoice code > (типовий), < code > chatcessbox code > |
| emotion | string | Ні | Target emotion: neutral, happy, sad, angry, excited |
| speed | float | Ні | Налаштування швидкості. Типове значення: < code > 1. 0 code >. Range: < code > 0. 5 <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > > > > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > < > <\ \ \ \ \ \ \ \ \ \ \ \ \ > < > < > < <\ \ > <\ \ \ \ \ \ \ > <\ \ > < > < > < > < > <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > <\ \ \ \ \ \ \ \ \ \ \ \ \ >\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >\ \ > <\ \ >\ \ > <\ \ >\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > <\ \ > < |
Відповідь
Повертає змінений звуковий файл як двійкові дані.
Звукові інструменти
Кінцеві точки для покращення, видалення голосу, поділ стовбурів тощо.
Покращення якості звукових даних: де noise, покращення прозорості, суперрозмірність.
| file file | Звуковий файл для покращення |
| denoise boolean | Увімкнути деноазування (типовий: true) |
| enhance_clarity boolean | Яскрава мова (типовий: так) |
| super_resolution boolean | Якість висотних розмірів звукових даних (типовий: false) |
| strength integer | 1- 3 (світло, середній, сильний). Типове значення: 2 |
Відокремлювати голоси від інструментальних засобів (vocal remove) або розділяти їх на стебла.
| file file | Аудіо файл, який слід розділити |
| model string | demucs (типовий) або spleeter |
| stems integer | Кількість стебел: 2, 4, 5 або 6 (типово: 2) |
| format string | Output format: 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 | Target format: mp3, wav, flac, ogg, m4a, aac |
| bitrate integer | Бітова швидкість виводу в кбітах: 64, 128, 192, 256, 320 |
| sample_rate integer | Частота вибірки: 22050, 44100, 48000 |
| channels string | mono або stereo |
Голосова балачка
Надіслати звукову або текстову інформацію і отримати відповідь комп' ютерного гравця з синтезованою мовою.
Вимагати тіло (multipart/form-data або JSON)
| Параметр | Тип | Обов' язково | Опис |
|---|---|---|---|
| audio | file | Ні* | Вхідні дані аудіо (або < code > audio code > або < code > text <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >) |
| text | string | Ні* | Ввід тексту (або < code > audio code > або < code > text <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >) |
| voice | string | Ні | Голос для відповіді комп' ютера. Типове значення: < code > bella <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > |
| tts_model | string | Ні | Модель TTS для відповіді. Типове значення: < code >kro <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > |
| system_prompt | string | Ні | Запит нетипової системи для комп' ютерного гравця |
| 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. За бажання, отримувати зворотний виклик з веб- сайтом після завершення всіх завдань.
Параметри
| Параметр | Тип | Опис |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
Відповідь
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
Опитування поступу за допомогою Get / v1/ tts/ batch/result /? batch_ id=abc123
Вбудовування голосу
Попереднє налаштування вбудовування голосу з аудіо. Скористайтеся отриманим ідентифікатором include_ 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 | Filter by model ID (e.g., kokoro) |
| language | string | Фільтрувати за кодом мови (наприклад, < code > en <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >) |
| gender | string | Filter by gender: 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 / VTTT) новий
Створює синхронізовані субтитри для всіх завершених завдань TTS. Виконує вирівнювання Whisper над аудіо і повертає SRT або WebVTT. Результат буде кешовано на диску, отже другим викликом одного uid є читання диска.
Параметри запиту
| Параметр | Обов' язково | Опис |
|---|---|---|
| uuid | Так. | Завдання UUID повернуто за адресою / v1/ tts / або / v1/ voice- cloone /. |
| format | Ні | < code >srt <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > або vt code >. |
| download | Ні | 1 to send Content-Disposition: attachment so the browser saves rather than displays. |
| language | Ні | Підказка моделі вирівнювання (автовизначення, якщо пропущено). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Словник вимови новий
Повідомити рушієві TTS про те, як вимовляти окремі слова. Записи автоматично буде застосовано до всіх запитів на TTS, які ви робите. 200- entry для кожного рахунка.
Вимагати тіло (POST)
| Параметр | Тип | Опис |
|---|---|---|
| word | string | Word to override (e.g. GIF, Anthropic). Word-boundary matched. |
| replacement | string | Як його записати для моделі (наприклад, < code > jiff code >, < code >, < code > ick <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >. |
| language | string | Необов' язковий код ISO. Порожній = стосується всіх мов. |
| case_sensitive | boolean | Типове значення < code > false code >. Враховувати регістр, точно якщо < code > = <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >. |
# 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-..."
Крім того, ви можете передавати параметри sper- request без збереження їх значення < code >prolues <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ > на будь- якому з / v1/tts/ call як об' єкт або масив (див. параметри кінцевої точки TTS).
Стаття Наглядач новий
Drop a single <script> tag on any article page and visitors get a fixed reader bar that narrates the page on click. Auto-detects the article body, supports custom voice / model / position / accent color.
<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 -...). Обмеження домену, впроваджені за допомогою поля < code > exposed_ domains code >. |
data-voice | ІД голосу. Типовий < code >f_ bella <\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ >. |
data-model | TTS model ID. Default kokoro. |
data-extract | auto (default) — tries article/main/.post-content/.entry-content selectors, falls back to densest paragraph cluster. Or pass any CSS selector to target a specific element. |
data-position | < code > bottom code > (типовий) або < code > top code > >. |
data-color | Колір Accent (всі кольори CSS). Типове значення < code ># e60000 code >. |
data-min-chars / data-max-chars | Пропустити панель, якщо стаття коротша за min- fars (типово, 200). Вхідні дані на max- fars (типово, 50 000). |
Прослуховування віджета кнопок
Inline button-style embed. Renders next to its <script> tag and plays a button-triggered short snippet. Different shape from the Article Narrator above (which auto-injects a page-spanning bar and narrates the whole article).
<script src="https://tts.ai/widget.js"
data-voice="af_bella"
data-model="kokoro"
data-style="full"
data-theme="light"></script>
Збережені голоси (вмілі клони)
Вивантажити аудіо- посилання один раз, повернути стале значення voice_ id, а потім вказати цей ідентифікатор у запитах TTS замість повторного завантаження кожного дзвінка. Ідеально для інтеграції з високою volume.
Вивантажити голос
POST
https://tts.ai/api/v1/user-voices/
Потрібне розпізнавання
Множина форм. Поля: файл (обов' язковий, 5- 30- звук), назва (обов' язкова), мова (необов' язковий, типовий en), модель (необов' язкова авто- обирає cosyvoice2 для z/ja/ko else openvoice), згода_ з' єднання (обов' язкове, будь- яке істинне значення).
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"
}
Використовувати збережений голос у TTS
POST до / api/ v1/ tts / (NOTE: вузол VPS мережі, а не вузол api.tts.ai) з ідентифікатором 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 |
Недостатньо символів. Придбайте більше за адресою / cripping /. |
| 403 | forbidden |
У вас немає прав для доступу до цього ресурсу (наприклад, опитування завдання іншого користувача). Доступ до API можна використовувати для кожного плану. |
| 404 | not_found |
Модель або голос не знайдено. |
| 413 | file_too_large |
Вивантажений файл перевищить обмеження на розмір. |
| 429 | rate_limited |
Забагато запитів. Перевірте заголовки обмеження швидкості. |
| 500 | internal_error |
Помилка сервера. Спробуйте ще раз пізніше. |
| 503 | model_loading |
Модель завантажується. Спробуйте ще раз за декілька секунд. |
Веб- гачки
Для завдань з довгими запусками (стискання, пакетне розбиття TTS) ви можете вказати параметр < code >webjo_ url code >. Після завершення завдання ви можете встановити POST- адресу вашого 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 до ваших програм.