API документация
Интегрирайте TTS.ai в приложенията си с нашия REST API. OpenAI-съответстващ формат за лесна миграция.
Преглед
TTS.ai API осигурява програмен достъп до всички функции на платформата: синтез от текст към език, транскрипция от говор до текст, клониране на глас, аудио подобрение и други. API използва стандартни REST конвенции с JSON искане/отговаряне на тела.
API ключ
Вземи си API ключ от Настройки на сметката. На разположение на "Про" и "Ентърпрайз" планове.
Основен URL
https://api.tts.ai/v1/
Овт
Носител на носителя чрез 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 символа |
| Професионален | 60 | 5 | 1 000 000 символа |
| Предприятия | 300 | 20 | 50 000 символа |
Във всеки отговор са включени ограниченията на скоростта: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Кредитни разходи
| Услуга | Разходи | Единица |
|---|---|---|
| TTS (Безплатни модели: Piper, VITS, Melotts) | 1000 символа | на 1000 символа |
| TTS (стандартни модели: Kokoro, CosyVoice 2, и др.) | 2000 символа | на 1000 символа |
| TTS (Премиеви модели: Tortoise, Chatterbox и др.) | 4000 символа | на 1000 символа |
| Изказване към текст | 2000 символа | за минута от звука |
| Гласово клониране | 4000 символа | на 1000 символа |
| Промяна на глас | 3 кредита | за минута от звука |
| Повишаване на звука | 2000 символа | за минута от звука |
| Отстраняване на гласове / разделяне на стем | 3000-4 000 символа | за минута от звука |
| Превод на речта | 5000 символа | за минута от звука |
| Гласов разговор | 3 кредита | на завъртане |
| Ключово търсене & BPM | Безплатен | -- |
| Конвертор на аудио | Безплатен | -- |
Текст към реч
Преобразуване на текста в речен звук. Връща аудио файл в поискания формат.
Тяло на искане
| Параметр | Тип | Задължително | Описание |
|---|---|---|---|
| model | string | Не. | Модел ID (напр., kokoro, chatterbox, piper. Ако пропуснат, ние автоматично избираме модел, който поддържа искания код <>jeзик -- kokoro за en/ja/zh/ko/fr/de/it/pt/es/hi/ru, за други поддържани езици (ar/pl/nl/cs/da/fi/hu/tr/uk/vi/etc.). |
| text | string | Да. | Текст за преобразуване в реч. На заявка капачка: 500 chars (анонимна), 5000 (безплатна сметка), 1 000 000 (платен план). Дълги входове са самостоятелно изпъкнати сървър-страна. |
| voice | string | Да. | Гласов ID (използвайте /v1/voices/ за да изберете налични гласове) |
| format | string | Не. | Формат на изхода: > mp3 (по подразбиране), wav, flac, |
| 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-31Тридесет и първи декември, деветнадесет и девет. 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). Макс. 100MB. |
| model | string | Не. | Модел на STT: whisper (по подразбиране), , |
| 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 секунди). Макс. 20MB. |
| text | string | Да. | Съобщение за говорене в клонирания глас. |
| model | string | Не. | Модел на клониране: chatterbox (по подразбиране), cosyvoice2, gpt-sovits |
| format | string | Не. | Формат на изхода: >mp3 (по подразбиране), wav, flac |
| language | string | Не. | Код на целта. Трябва да бъде подкрепен от избрания модел. |
Отговор
Връща звуковия файл като бинарни данни, като крайната точка на TTS.
Промяна на глас
Преобразуване на звука в друг глас. Качване на източника аудио и изберете целевия глас.
Тяло на искане (multipart/form-data)
| Параметр | Тип | Задължително | Описание |
|---|---|---|---|
| file | file | Да. | Източен аудио файл (MP3, WAV, FLAC). Макс. 50MB. |
| target_voice | string | Да. | Целевият гласов ID за преобразуване в (използвайте /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 | Да. | Източен аудио файл на оригиналния език. Макс. 100MB. |
| 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 | Да. | Източник на звуков файл. |
| voice | string | Да. | Целева идентификация на гласа за изходната реч |
| model | string | Не. | Модел: openvoice (по подразбиране), chatterbox |
| emotion | string | Не. | Целева емоция: neutral , hady, sad , angry, excited |
| speed | float | Не. | Регулиране на скоростта. По подразбиране: 1.0. Обхват: 0.5 за 2.0 |
Отговор
Връща трансформирания аудио файл като бинарни данни.
Звукови инструменти
Звукова обработка крайни точки за повишаване, отстраняване на глас, разделяне на стволови стебла и други.
Повишаване на качеството на звука: деноазиране, подобряване на яснотата, супер резолюция.
| file file | Аудио файл за подобряване |
| denoise boolean | Включване на деноизиране (по подразбиране: true) |
| enhance_clarity boolean | Повишаване на яснотата на речта (по подразбиране: вярно) |
| super_resolution boolean | Увеличаване на качеството на звука (по подразбиране: фалшиво) |
| 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 | Формат на целта: >m3, wav, flac, |
| bitrate integer | Изходна битова скорост в кб/ч: 64, 128, 192, 256, 320 |
| sample_rate integer | Честота на пробата: 22050, 44100, 48000 |
| 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 | Не. | Потребителски сигнал за системата за интелигентната инсталация |
| 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. Опционално получаване на уеб-хоок повикване, когато всички работни места завършат.
Параметри
| Параметр | Тип | Описание |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Необходим URL за резултатите от POST, когато партидата се завърши. |
Отговор
{
"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, заредените модели и размера на опашката. Няма нужда от автентичност.
Отговор
{
"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 , жена , 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 задача. Изпълнява шепотене над аудиото и връща SRT или WebVTT. Резултатът е кеширан на диска, така че второто обаждане за същия uuid е четене на диск.
Параметри на запитване
| Параметр | Задължително | Описание |
|---|---|---|
| uuid | Да. | Job UUID върнато от /v1/tts/ или /v1/voice-klone/. |
| format | Не. | srt (по подразбиране) или vtt. |
| download | Не. | 1 за да изпратите Content- Disposition: atachment, така че браузърът ще спести вместо дисплеи. |
| language | Не. | Подсказка към модела за подравняване (автоматизирана, ако е пропусната). |
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt
Изговорен речник нов
Кажете на двигателя TTS как да произнася конкретни думи. Запазени вписвания автоматично прилагат към всяко TTS искане, което направите. 200-вход на сметка лимит.
Тяло на искане (POST)
| Параметр | Тип | Описание |
|---|---|---|
| word | string | Думата, която трябва да се превключи (напр. GIF, Antropic). |
| replacement | string | Как да се пише за модела (напр. jiff, an 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/ call или обект или масив (вж. точките за крайния край на ТТС).
Член Разказвач нов
Свали един таг на всяка статия страница и посетителите получават фиксиран четещ бар, който разказва на страницата на кликване. Автоматично открива тялото на статията, поддържа custom глас / модел / позиция / цвят на акцента.
<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-...). Ограниченията на домените се прилагат чрез полето , което позволява_ домейните . |
data-voice | Гласов идентификационен номер. По подразбиране af_bella . |
data-model | ID на модел TTS. По подразбиране kokoro . |
data-extract | auto (по подразбиране) — опитва статия/маин/.post-content/.entry-content селектори, пада обратно към най- гъстия параграф клъстер. Или преминава всеки CSS селектор да насочи конкретен елемент. |
data-position | bottom (по подразбиране) или top. |
data-color | Цвят на акцента (всички цветове на CSS). По подразбиране #e60000. |
data-min-chars / data-max-chars | Прескочи лентата, ако статията е по-къса от min- chars (по подразбиране 200). Кап вход при max- chars (по подразбиране 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/
Изисква се упълномощение
Multipart form. Fields: файл (задължително, 5-30s audio), име (задължително), език (задължително, по подразбиране cs), модел (задължително — автоматично избиране cosyvoice2 за zh/ja/ko друго 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 to /api/v1/tts / (NOTE: web 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 |
Недостатъчно герои. Покупка на повече от /pricing /. |
| 403 | forbidden |
Нямате разрешение за достъп до този ресурс (напр. проучване на работата на друг потребител). API достъпът е включен във всеки план. |
| 404 | not_found |
Модел или глас не са намерени. |
| 413 | file_too_large |
Каченият файл надвишава лимитът на размера. |
| 429 | rate_limited |
Твърде много искания. Проверка на ограниченията на скоростта. |
| 500 | internal_error |
Грешка в сървъра. Опитайте отново по- късно. |
| 503 | model_loading |
Моделът се зареди. |
Уебхукс
За дълготрайни задачи (разделяне на стена, партидна TTS), можете да предоставите параметр webhook_url. Когато задачата завърши, ние ще 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 в приложенията си.