API документација

Интегрирај TTS.ai во вашите апликации со нашиот REST API. Компатибилен со OpenAI формат за лесна миграција.

РЕЗУЛЬТАТНА АПИ OpenAI компатибилен ЈСОН одговори Поддршка за пренесување

Преглед

API за TTS.ai овозможува програмски пристап до сите можности на платформата: синтеза од текст до говор, транскрипција од говор до текст, клонирање на глас, аудио подобрување и други.

API- клуч

Земи си го API клучот од Поставувања за сметката. Достапни за про и Ентерпрајз планови.

Основен URL

https://api.tts.ai/v1/

Авт

Преносувач на знак преку Authorization заглавје

Аутентификација

Сите API барања бараат автентичност преку носител во Authorization заглавје.

HTTP- заглавие
Authorization: Bearer sk-tts-your-api-key-here
Чувај ја тајната на клучот од API. Не го споделувај во кодот на клиентот, јавните ризници или дневници. Редовно ротирајте ги клучевите од поставувањата на вашата сметка.

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")
GitHub

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');
GitHub

Основен URL

Основен URL: https://api.tts.ai/v1/

Сите крајни точки се релативни на овој базиран URL. На пример, TTS крајниот крај е:

POST https://api.tts.ai/v1/tts/

Ограничувања на стапката

Ограничувањата на API стапката варираат според планот:

План Барања/мин. Совпаѓање Максимална должина на текстот
Слободен 10 2 500 знакови
Стартер 30 3 100.000 обележја
Проф. 60 5 100.000 обележја
Ентерпрајз 300 20 50.000 обележја

Заглавјата на ограничувањето на брзината се вклучени во секој одговор: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

Кредитни трошоци

Сервис Цена Единица
TTS (Безплатни модели: Piper, VITS, Melotts) 1000 знаци на 1.000 знаци
TTS (Стандардни модели: Kokoro, CosyVoice 2, итн.) 2.000 знаци на 1.000 знаци
TTS (Премиумски модели: Тортоаз, чаттербокс итн.) 4.000 знаци на 1.000 знаци
Говор кон текст 2.000 знаци во минута на аудио
Гласовно клонирање 4.000 знаци на 1.000 знаци
Менувач на глас 3.000 знаци во минута на аудио
Звучно подобрување 2.000 знаци во минута на аудио
Отстранување на гласови / разделување 3.000-4.000 знаци во минута на аудио
Преведување на говор 5.000 знаци во минута на аудио
Гласовен разговор 3.000 знаци на свртување
Пронаоѓач на клучеви и BPM Слободен --
Аудио- претворач Слободен --

Текст за говор

POST /v1/tts/

Конвертирајте го текстот во говорно аудио. Враќа аудио датотека во бараниот формат.

Барај тело

ПараметрТипНеопходноОпис
model string Да. Ид. на моделот (на пример, kokoro, chatterbox, piper)
text string Да. Текст за претворање во говор (максимум 100.000 знаци по барање)
voice string Да. Гласовниот ID (користи /v1/voices/ за да ги наведеш достапните гласови)
format string Не. Формат на излез: >mp3 (стандардно), wav, flac,
speed float Не. Говоречки множител на брзина. Стандардно: 1. 0. Опсег: 0.5 за 2. 0
language string Не. Код на јазикот (на пример, en , es ). Авто- детектирано ако е пропуштено.
stream boolean Не. Овозможи одговор на струја. Стандардно: false

Прашање за пример

cURL
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

Одговор

Ја враќа аудио датотеката како бинарни податоци со соодветен Kontent-Type заглавје (audio/mpeg, audio/wav, итн.).

Заглавја на одговорот
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

Говор кон текст

POST /v1/stt/

Препиши звук на текст. Подржува 99 јазици со автоматска детекција.

Барај тело (multipart/form-data)

ПараметрТипНеопходноОпис
file file Да. Аудио датотека (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). Макс. 100MB.
model string Не. Модел на STT: whisper (стандардно), побрз-шап- шап, Sense глас
language string Не. Код на јазикот. auto за автоматска детекција (стандардно).
timestamps boolean Не. Вклучи временски знаци на ниво на збор. Стандардно: false
diarize boolean Не. Овозможи дијализација на звучникот. Стандардно: false

Одговор

Одговорот на JSON
{
  "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"
    }
  ]
}

Гласовно клонирање

POST /v1/tts/clone/

Генерирај говор со клониран глас. Пратете референтен звук и текст.

Барај тело (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.

Менувач на глас

POST /v1/voice-convert/

Конвертирај звук во звук како друг глас. Качи го изворниот звук и одбери целен глас.

Барај тело (multipart/form-data)

ПараметрТипНеопходноОпис
file file Да. Изворна аудио датотека (MP3, WAV, FLAC). Макс. 50MB.
target_voice string Да. Циљна идентификација на гласот во која ќе се конвертираат (користи /v1/voices/ за да набројат достапни гласови)
model string Не. Модел на претворање на глас: openvoice (стандардно), knn- vc
format string Не. Формат на излез: < code>wav (стандардно), >mp3, flac

Прашање за пример

cURL
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

Одговор

Ја враќа конвертираната аудио датотека како бинарни податоци.

Преведување на говор

POST /v1/speech-translate/

Го преведува говорениот аудио од еден јазик на друг. Го комбинира говорот во текст, преводот и текстот во говор во еден повик.

Барај тело (multipart/form-data)

ПараметрТипНеопходноОпис
file file Да. Изворна аудио датотека на оригиналниот јазик. Макс. 100MB.
target_language string Да. Код на целта (на пример, es , fr, de, , ja
voice string Не. Глас за преведување на излезот. Автоматски избрано ако е пропуштено.
preserve_voice boolean Не. Обиди се да ги зачуваш гласните карактеристики на оригиналниот говорник. Стандардно: false

Одговор

Одговорот на JSON
{
  "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
}

Говор на говор

POST /v1/speech-to-speech/

Преобрази го стилот на говор, емоциите или испораката додека ја одржуваш содржината.

Барај тело (multipart/form-data)

ПараметрТипНеопходноОпис
file file Да. Изворна говорна аудио датотека.
voice string Да. Идентификатор на глас за излезниот говор
model string Не. Модел: openvoice (стандардно), chatterbox
emotion string Не. Целете емоции: neutral , happy, sad , angry, excited
speed float Не. Прилагодување на брзината. Стандардно: 1. 0. Опсег: 0.5 за 2. 0

Одговор

Ја враќа трансформираната аудио датотека како бинарни податоци.

Аудио алатки

Конечни точки за обработка на звук за подобрување, отстранување на гласот, разделување на стеблото и повеќе.

POST /v1/audio/enhance/

Зајакни го аудио квалитетот: деноизирај, подобруј ја јасноста, супер резолуција.

file fileАудио датотека за подобрување
denoise booleanОвозможи денозирање (стандардно: true)
enhance_clarity booleanЗајакни ја чистотата на говорот (стандардно: true)
super_resolution booleanСтандарден аудио квалитет (стандардно: неточен)
strength integer1-3 (светло, средно, силно). Стандардно: 2
POST /v1/audio/separate/

Одделете ги гласовите од инструментите (вокалното отстранување) или разделете ги на стебла.

file fileАудио датотека за раздвојување
model stringdemucs (стандардно) или spleeter
stems integerБрој на стебла: 2, 4, 5 или 6 (стандардно: 2)
format stringФормат на излез: wav, >mp3, flac
POST /v1/audio/dereverb/

Отстрани го ехото и одбележувањето од аудиоснимките.

file fileОбработка на аудио датотека
type stringecho or reverb (default: both)
intensity integer1-5 (default: 3)
POST /v1/audio/analyze/ Слободен

Анализирај аудио за да откриеш клуч, 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"]
}
POST /v1/audio/convert/ Слободен

Конвертирај звук меѓу форматите.

file fileАудио датотека за конвертирање
format stringФормат на целта: >m3, wav, flac, >m4a, aac
bitrate integerИзлезна брзина во kbps: 64, 128, 192, 256, 320
sample_rate integerБрзина на проби: 22050, 44100, 48000
channels stringmono или stereo

Гласовен разговор

POST /v1/voice-chat/

Испрати аудио или текст и прими 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 Не. Продолжи со постоечкиот разговор

Одговор

Одговорот на JSON
{
  "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

POST /v1/tts/batch/

Испрати повеќе текстови за паралелната генерација на TTS. Опционално добивај повратен повик на веб куќи кога сите задачи ќе бидат завршени.

Параметри

ПараметрТипОпис
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringOptional URL to POST results when batch completes.

Одговор

Одговорот на JSON
{
  "batch_id": "abc123",
  "total": 3,
  "completed": 0,
  "status": "processing"
}

Испитај напредок со GET / v1/tts/batch/ result/?batch_id=abc123

Гласовно вгнездување

POST /v1/voice-embed/

Претходно компонирај гласовно вградување од референтно аудио. Користете го вратениот embed_id во наредните барања за клонирање на гласот за блиска генерација.

Параметри

ПараметрТипОпис
filefileReference audio file (WAV, MP3, FLAC).
modelstringCloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts.

Одговор

Одговорот на JSON
{
  "embed_id": "emb_abc123",
  "model": "chatterbox",
  "duration_ms": 450
}

Здравствена проверка

GET /v1/health/

Проверете го статусот на серверот GPU, вчитаните модели и големината на редицата. Не е потребна автентичност. Кеширан 30 секунди.

Одговор

Одговорот на JSON
{
  "status": "online",
  "latency_ms": 45,
  "queue_size": 3,
  "models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}

Модели на листа

GET /v1/models/

Враќа листа на сите достапни модели со нивните способности.

Одговор

Одговорот на JSON
{
  "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
    }
  ]
}

Листа на гласови

GET /v1/voices/

Враќа листа на сите достапни гласови, опционо филтрирани по модел или јазик.

Параметри на пребарување

ПараметрТипОпис
model string Филтрирај по идентитет на моделот (на пример, kokoro)
language string Филтрирај по јазичен код (на пример, en )
gender string Филтрирај по пола: male , ženа, neutral

Одговор

Одговорот на JSON
{
  "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
}

Примери за кодирање

Текст за говор

Python - requests
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')}")

Говор кон текст

Python - requests
# 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"])

Гласовно клонирање

Python - requests
# 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)

Текст за говор

JavaScript - fetch
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();

Говор кон текст

JavaScript - fetch
// 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);

Текст за говор

cURL
# 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

Говор кон текст

cURL
# 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"

Гласовно клонирање

cURL
# 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

Звучно подобрување

cURL
# 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"
}
Резултатите од веб куќите се достапни за симнување 24 часа по завршувањето. Погрижете се да ги симнете веднаш.

Подготвен си за градење?

Земете го вашиот API клуч и почнете да интегрирате TTS.ai во вашите апликации.