Документация API
Включите TTS.ai в ваши приложения с нашим REST API, совместимым форматом OpenAI для легкой миграции.
Общий обзор
API TTS.ai обеспечивает программный доступ ко всем элементам платформы: синтезу текстовых сообщений, транскрипции речевых разговоров, клонированию голосов, усовершенствованию аудиоматериалов и т.д. API использует стандартные конвенции REST с органами по запросам/реагированию на запросы СПОН.
Ключ API
Возьми ключ от API. Параметры счета. Имеется в наличии по планам Про и Предприятия.
Базовый URL
https://api.tts.ai/v1/
Ост
Значок браузера через Authorization Заголовок
Аутентификация
/v1/tts/ работа без каких-либо аут, до 5 000 символов в день на IP с использованием любой из наших бесплатных моделей (piper, vits, melotts, kokoro). Зарегистрируйтесь на бесплатный счет, чтобы получить 15 000 бонусных персонажей и доступ к премиальным моделям.
Для премиальных моделей и более высоких предельных ставок аутентичнее с символом Bearer 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:
Предельные ставки
Предельные ставки АПИ варьируются в зависимости от плана:
| План | Запросы/мин. | Совмещение | Максимальная длина текста |
|---|---|---|---|
| Свободные | 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 (свободные модели: Piper, VITS, MeloTTS) | 1 000 знаков | на 1 000 знаков |
| TTS (Стандартные модели: Кокоро, CosyVoice 2 и т.д.) | 2 000 знаков | на 1 000 знаков |
| TTS (модели премиума: Tortoise, Chatterbox и т.д.) | 4 000 знаков | на 1 000 знаков |
| Выступление с текстом | 2 000 знаков | на минуту звука |
| Клонирование голоса | 4 000 знаков | на 1 000 знаков |
| Голосовое изменение | 3 000 знаков | на минуту звука |
| Аудиоусиление | 2 000 знаков | на минуту звука |
| Удаление вокала/разбрызгивание решеткой | 3 000-4 000 знаков | на минуту звука |
| Перевод речи | 5 000 знаков | на минуту звука |
| Голосовой разговор | 3 000 знаков | в один поворот |
| Поиск ключа & BPM | Свободные | -- |
| Аудиовизатор | Свободные | -- |
Текст к речи
Преобразовать текст в звук. Возвращает аудио файл в требуемом формате.
Запрашиваемый орган
| Параметр | Тип | Требуемо | Описание |
|---|---|---|---|
| model | string | Нет | ID модели (например, kokoro>/code>, |
| text | string | Выполнено | Текст для преобразования в речь. " По запросу " : 500 шаров (анонимный), 5 000 (бесплатный счёт), 1 000 000 (оплачиваемый план). " Длинные вводимые ресурсы " - это автозахват сервера. |
| voice | string | Выполнено | Идентификатор голоса (использование <код>/v1/фактуры/>/код> для списка имеющихся голосов) |
| format | string | Нет | Формат вывода: mp3>/code> (по умолчанию), |
| speed | float | Нет | Множитель скорости. По умолчанию: 1,0>/code> Диапазон: |
| language | string | Нет | Языковой код (например, en>/code>, |
| instructions | string | Нет | Выполнять/поставлять сигналы ( ≤500 шаров) например <код>\ |
| pronunciations | object | array | Нет | Просить произношение отменяется. Либо <код> {\ |
| stream | boolean | Нет | Включите речевую реакцию. По умолчанию: Flickr>/code> |
Пример запроса
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 teges
Номера, даты, валюта, номера телефонов и аббревиатуры в
| толкуется как | Ввод | Рассказывается как |
|---|---|---|
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 |
По умолчанию формат даты mdy>/code> для английского языка и 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."
}
Ответ
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). Макс 100MB. |
| model | string | Нет | Модель STT: whesper>/code> (по умолчанию), |
| language | string | Нет | Языковой код auto>/code> для автоматического обнаружения (по умолчанию). |
| timestamps | boolean | Нет | Включите временны́е гаммы уровня слов. По умолчанию: Flickr>/code> |
| diarize | boolean | Нет | Включите диааризацию докладчика. По умолчанию: Flickr>/code> |
Ответ
{
"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 секунд рекомендуется). Макс 20MB. |
| text | string | Выполнено | СМС, чтобы говорить в клонированном голосе. |
| model | string | Нет | Модель клонов: chatterbox>/code> (по умолчанию), |
| format | string | Нет | Формат вывода: mp3>/code> (по умолчанию), |
| language | string | Нет | Целевый языковой код должен подкрепляться выбранной моделью. |
Ответ
Возвращает аудио файл как двоичные данные, то же, что и конечная точка TTS.
Голосовое изменение
Преобразовать звук в другой голос. Загрузить источник звука и выбрать целевой голос.
Запрашиваемый орган (multipart/form-data)
| Параметр | Тип | Требуемо | Описание |
|---|---|---|---|
| file | file | Выполнено | Источник аудиофайла (MP3, WAV, FLAC). Макс 50MB. |
| target_voice | string | Выполнено | Идентификатор цели для преобразования в (использование <код>/v1/фактуры/>/код> для перечисления имеющихся голосов) |
| model | string | Нет | Модель Голосового преобразования: openaux>/code> (по умолчанию), |
| format | string | Нет | Формат вывода: wav>/code> (по умолчанию), |
Пример запроса
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 | Выполнено | Источник аудиофайла на языке оригинала. Макс 100MB. |
| target_language | string | Выполнено | Код языка цели (например, <код>es>/код>, <код>fr>/код>, <код>de, <код>ja>/код>) |
| voice | string | Нет | Голос для перевода вывода. Автовыбрано, если опущено. |
| preserve_voice | boolean | Нет | Попытка сохранить характеристики голоса первоначального оратора. По умолчанию: Flickr>/code> |
Ответ
{
"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 | Выполнено | Звуковой файл источника. Макс 50MB. |
| voice | string | Выполнено | Идентификатор голоса для выходной речи |
| model | string | Нет | Модель: openauce>/code> (по умолчанию), |
| emotion | string | Нет | Подозреваемые эмоции: <код> нейтральный>/код>, <код>счастливый>/код>, <код>сад>/код>, <код>ангри>/код>, <код> Испрошенный>/код> |
| speed | float | Нет | Регулировка скорости. По умолчанию: 1,0>/code> Диапазон: |
Ответ
Возвращает преобразованный аудио файл в двоичные данные.
Аудиовизуальные средства
Аудиообработка конечных точек для улучшения, вокалистого удаления, разделения стволов и т.д.
Улучшить качество звука: денузируйте, улучшите ясность, суперразрешите.
| file file | Аудиовизуальный файл для расширения |
| denoise boolean | Включить денонсацию (по умолчанию: правда) |
| enhance_clarity boolean | Повысить ясность речи (по умолчанию: правда) |
| super_resolution boolean | Повышенное качество звука (по умолчанию: ложное) |
| strength integer | 1-3 (легкий, средний, твердый). |
Разделить вокальные голоса на инструменты (удаление вокала) или разбить на стебли.
| file file | Аудиовизуальный файл для отделения |
| model string | demucs (по умолчанию) или spleeter |
| stems integer | Число стеблей: 2, 4, 5 или 6 (по умолчанию: 2) |
| format string | Формат вывода: wav>/code>, |
Удалить эхо и реверб из аудиозаписей.
| 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>/code>, |
| bitrate integer | Участок выхода в kbps: 64, 128, 192, 256, 320 |
| sample_rate integer | Коэффициент отбора проб: 22050, 44100, 48000 |
| channels string | mono или stereo |
Голосовой разговор
Отправьте аудио или текст и получите ответ АИ с синтезированной речью.
Запрашиваемый орган (multipart/form-data или JSON)
| Параметр | Тип | Требуемо | Описание |
|---|---|---|---|
| audio | file | Нет* | Аудиовизна (либо <код>аудио>/код>, либо <код>текст>/код> требуется) |
| text | string | Нет* | Ввод текста (либо <код>аудио>/код>, либо <код>текст>/код> требуется) |
| voice | string | Нет | Голос для ответа АИ. По умолчанию: af_bella>/code> |
| tts_model | string | Нет | Модель TTS для ответа. По умолчанию: <код>kokoro>/код> |
| 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
Голос
Предварительно зафиксировать голос, встраиваемый с эталонного аудио. Используйте обратное встроенное_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 | Фильтр по идентификатору модели (например, <код>kokoro>/код>) |
| language | string | Фильтр по языковому коду (например, en>/code>) |
| gender | string | Фильтр по полу: Male>/code>, |
Ответ
{
"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. Запусти Whepper на аудио и верните SRT или WebVTT. Результат скачан на диске, так что второй вызов для того же uuuid - это считывание диска.
Параметры запроса
| Параметр | Требуемо | Описание |
|---|---|---|
| uuid | Выполнено | :: /v1/tts/ или /v1/put-clone/. |
| format | Нет | srt>/code> (по умолчанию) или |
| download | Нет | 1>/code> для отправки |
| language | Нет | Привязка к модели регулировки (авто-обнаружена, если опущена). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Словарь произношения новые
Скажи двигателю TTS, как произносить конкретные слова. Сохранённые записи автоматически применимы к каждому запросу TTS.
Запрашиваемый орган (POST)
| Параметр | Тип | Описание |
|---|---|---|
| word | string | Слово для отключения (например, <код>GIF>/код>, <код> Антропик>/код>). |
| replacement | string | Как написать его для модели (например, jiff>/code>, |
| language | string | Факультативный код ИСО. Пустой = применяется ко всем языкам. |
| case_sensitive | boolean | По умолчанию Flickr>/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-..."
Вы также можете передавать по каждому запросу блокировку без сохранения — включить произношение >/code> на любом /v1/tts/ вызове в качестве объекта или массива (см. TTS conduction point params).
Статья Рассказчик новые
Оставьте на любой странице статьи один-единственный <код> расшифровка>/код>, и посетители получат фиксированный строку для чтения, которая нажат на страницу. Автоназначит тело статьи, поддерживает свой голос/модель/положение/ цвет акцента.
<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-...). Предельные ограничения вводятся через поле клавиши , разрешённые_domains>/code>. |
data-voice | ID голоса. По умолчанию af_bella>/code>. |
data-model | ID модели TTS. По умолчанию kokoro>/code>. |
data-extract | auto>/code> (по умолчанию) — попробуйте статью/основную/.. post-content/.inter-content-content, вернётся к наиболее плотному блоку пунктов. |
data-position | <код>снизу код> (по умолчанию) или <код> топ>/код>. |
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>
Сохранённые голоса (терпимые клоны)
Загрузить референтный звук один раз, вернуть стойкий голос_id, затем указать, что id в запросах TTS вместо перезагрузки звука каждый звонок. Идеал для больших интеграций.
Загрузить голос
POST
https://tts.ai/api/v1/user-voices/
Требуется
Многочастотная форма. Поле: файл (требуется, 5-30-й звук), имя (требуется), язык (факультативно, по умолчанию en), модель (факультативно — косметический счет-фактура2 для ж/ж/ж/коо-другого), согласие_подтвержденное (требуется, любое истинное значение).
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/ (ПРИМЕЧАНИЕ: веб-привод VPS, а не api.tts.ai) с пользователем_account_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 |
Недостаточно персонажей. |
| 403 | forbidden |
У вас нет разрешения на доступ к этому ресурсу (например, опрос другого пользователя). Доступ к API включен в каждый план. |
| 404 | not_found |
Модель или голос не найден. |
| 413 | file_too_large |
Загруженный файл превышает предельный размер. |
| 429 | rate_limited |
Слишком много запросов. Контрольная скорость ограничивает заголовки. |
| 500 | internal_error |
Ошибка сервера. Попробуйте позже. |
| 503 | model_loading |
Модель загружается, перепробуйте через пару секунд. |
Веб-хуки
Для выполнения долгосрочных задач (разделение столба, набор TTS) вы можете предоставить параметр webhook_url >/code>. Когда задача будет завершена, мы поставим результат на ваш 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 в свои приложения.