مستندات

TTS.ai را با REST API خود در برنامه‌های خود ادغام کنید.

API REST سازگار با OpenAI پاسخهای JSON پشتیبانی جریان

نمای کلی

TTS.ai API دسترسی برنامه‌ریزی شده به تمام ویژگی‌های پلتفرم را فراهم می‌کند: ترکیب متن به گفتار، رونویسی گفتار به متن، شبیه‌سازی صدا، بهبود صدا و غیره.

کلید API

کلید API خود را از اینجا بگیرید تنظیمات حساب. در برنامه‌های Pro و Enterprise در دسترس است.

نشانی وب پایه

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

احراز هویت

نشان حامل از طریق Authorization سرآیند

احراز هویت

سطح آزاد - هیچ کلیدی نیاز نیست. ناشناس /v1/tts/ بدون هیچگونه تایید، تا ۵۰۰۰ کاراکتر در روز بر اساس آدرس IP، با استفاده از هر یک از مدل‌های رایگان ما (piper, vits, melotts, kokoro). برای ثبت نام در حساب رایگان ۱۵۰۰۰ کاراکتر به صورت رایگان و دسترسی به مدل‌های پریمیوم.

برای مدل‌های پرمیوم و محدودیت‌های نرخ بالاتر، با یک نشانه حامل در Authorization سرآیند.

سرآیند HTTP
Authorization: Bearer sk-tts-your-api-key-here
کلید API خود را مخفی نگه دارید. آن را در کد سمت کارگزار، مخزن‌های عمومی یا ثبت‌ها به اشتراک نگذارید. کلیدها را به‌طور منظم از تنظیمات حسابتان چرخش دهید.

SDKها

Official SDKs make it easy to integrate TTS.ai into your application. Both are open source and available on 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

نشانی وب پایه

نشانی وب پایه: https://api.tts.ai/v1/

تمام نقاط پایانی نسبت به این نشانی وب پایه هستند. برای مثال ، نقطه پایانی TTS این است:

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

محدودیتهای نرخ

محدودیت‌های نرخ API بر اساس برنامه متفاوت است:

نقشه درخواستها/دقیقه همزمان طول متن بیشینه
آزاد 10 2 500 کاراکتر
آغازگر 30 3 یک میلیون حرف
حرفه اي 60 5 یک میلیون حرف
انترپرایز 300 20 50,000 حرف

سرآیندهای محدودیت نرخ در هر پاسخ شامل می‌شوند: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

هزینه‌های اعتبار

خدمات هزینه واحد
TTS (مدل‌های آزاد: Piper, VITS, MeloTTS) هزار نویسه هر ۱۰۰۰ کاراکتر
TTS (مدل‌های استاندارد: Kokoro, CosyVoice 2, etc.) 2000 کاراکتر هر ۱۰۰۰ کاراکتر
TTS (مدل‌های پریمیوم: Tortoise، Chatterbox، و غیره) 4000 کاراکتر هر ۱۰۰۰ کاراکتر
تبدیل گفتار به متنComment 2000 کاراکتر در دقیقه
شبیه‌سازی صدا 4000 کاراکتر هر ۱۰۰۰ کاراکتر
تغییردهندۀ صداName 3000 کاراکتر در دقیقه
بهبود صوتی 2000 کاراکتر در دقیقه
حذف صدا / تقسیم صدا 3000-4000 کاراکتر در دقیقه
ترجمۀ گفتارName 5000 کاراکتر در دقیقه
گپ صوتی 3000 کاراکتر در هر نوبت
یابنده کلید & BPM‌ آزاد --
مبدل صوتیName آزاد --

متن به گفتارName

POST /v1/tts/

تبدیل متن به صدای گفتار. پروندۀ صوتی را در قالب خواسته شده برمی‌گرداند.

بدنه درخواست

پارامترنوعلازم& توصیف‌
model string نه شناسه مدل (مثلاً kokoro، chatterbox، piper). اگر حذف شود، ما به صورت خودکار یک مدل را انتخاب می‌کنیم که از language درخواست شده پشتیبانی می‌کند — kokoro برای en/ja/zh/ko/fr/de/it/pt/es/hi/ru، piper برای دیگر زبان‌های پشتیبانی شده (ar/pl/nl/cs/da/fi/el/hu/tr/uk/vi/etc.).
text string آره متن برای تبدیل به گفتار. حد هر درخواست: ۵۰۰ کاراکتر (ناشناس)، ۵۰۰۰ (حساب رایگان)، ۱٫۰۰۰٫۰۰۰ (برنامه پرداختی). ورودی‌های طولانی در سمت کارساز به صورت خودکار قطع می‌شوند.
voice string آره شناسۀ صدا (برای فهرست کردن صداهای موجود از /v1/voices/ استفاده کنید)
format string نه قالب خروجی: mp3 (به صورت پیش‌فرض)، wav، flac، ogg
speed float نه ضرب‌کننده سرعت گفتار. پیش‌فرض: ۱٫۰. محدوده: ۰٫۵ تا ۲٫۰
language string نه کد زبان (برای مثال، en, es). اگر حذف شود، به صورت خودکار شناسایی می‌شود.
instructions string نه رمزهای عمل/توزیع (≤۵۰۰ کاراکتر). e.g. \
pronunciations object | array نه فراخوانی تلفظ بر اساس درخواست. یا {\
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

برچسب‌های SSML

نوار اعداد، تاریخ‌ها، واحد پول، شماره‌های تلفن و مخفف‌ها در

تفسیر کردنورودیبه عنوان
cardinal1234one thousand two hundred thirty-four
ordinal21twenty-first
date1999-12-3131 دسامبر 1999
time14:30two thirty PM
telephone+1-555-867-5309plus one five five five eight six seven…
currency$1,234.56one thousand two hundred thirty-four dollars and fifty-six cents
spell-outNASAN A S A

قالب تاریخ پیش‌فرض به mdy برای انگلیسی و dmy در جاهای دیگر است؛ با format=\ جایگزین کنید.

مثال
{
  "model": "kokoro",
  "voice": "af_bella",
  "text": "Your appointment is on <say-as interpret-as=\"date\">2026-04-26</say-as> at <say-as interpret-as=\"time\">14:30</say-as>. Please call <say-as interpret-as=\"telephone\">+1-555-867-5309</say-as> if you need to reschedule."
}

پاسخ

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

Response (JSON)
{
  "uuid": "77b71db532874ce98e84a69a2d740d4c",
  "job_id": "f21316bb-aefa-480d-8523-701d1e3184ce",
  "status": "queued",
  "credits_used": 11,
  "credits_remaining": 15000
}

Step 2: Poll for result

GET /v1/speech/results/?uuid=<job_uuid>

Poll this endpoint every 1-2 seconds until status is completed or failed.

Polling response (completed)
{
  "status": "completed",
  "result_url": "https://api.tts.ai/static/downloads/77b71db5.../output.mp3"
}
Polling response (still processing)
{
  "status": "processing"
}

Step 3: Download audio

Fetch the result_url from the completed response to download the audio file.

مثال کامل

Python
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.

تبدیل گفتار به متنComment

POST /v1/stt/

رونوشت صدا به متن. از ۹۹ زبان با تشخیص خودکار پشتیبانی می‌کند.

بدنه درخواست (multipart/form-data)

پارامترنوعلازم& توصیف‌
file file آره پروندۀ صوتی (MP3, WAV, FLAC, OGG, M4A, MP4, WebM). حداکثر ۱۰۰ مگابایت.
model string نه مدل STT: whisper (به صورت پیش‌فرض)، faster-whisper، sensevoice
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 آره صدای مرجع صوتی (۱۰-۳۰ ثانیه توصیه می‌شود). حداکثر ۲۰ مگابایت.
text string آره متنی که با صدای شبیه سازی شده صحبت خواهد شد.
model string نه مدل شبیه سازی: chatterbox (به صورت پیش‌فرض)، cosyvoice2، gpt-sovits
format string نه قالب خروجی: mp3 (به صورت پیش‌فرض)، wav، flac
language string نه کد زبان هدف. باید توسط مدل انتخاب‌شده پشتیبانی شود.

پاسخ

پروندۀ صوتی را به صورت داده‌های باینری برمی‌گرداند، همانند نقطه پایانی TTS.

تغییردهندۀ صداName

POST /v1/voice-convert/

تبدیل صدا به صدای دیگری. صدای منبع را بارگذاری کنید و صدای هدف را انتخاب کنید.

بدنه درخواست (multipart/form-data)

پارامترنوعلازم& توصیف‌
file file آره پروندۀ صدای منبع) MP3, WAV, FLAC (. حداکثر ۵۰ مگابایت.
target_voice string آره شناسه‌ی صدای هدف برای تبدیل به (برای فهرست کردن صداهای موجود از /v1/voices/ استفاده کنید)
model string نه مدل تبدیل صدا: openvoice (به صورت پیش‌فرض)، knn-vc
format string نه قالب خروجی: 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

پاسخ

پروندۀ صوتی تبدیل‌شده را به عنوان داده‌های باینری برمی‌گرداند.

ترجمۀ گفتارName

POST /v1/speech-translate/

ترجمه صدای گفتاری از یک زبان به زبان دیگر. ترکیب گفتار به متن، ترجمه و متن به گفتار در یک تماس.

بدنه درخواست (multipart/form-data)

پارامترنوعلازم& توصیف‌
file file آره پروندۀ صدای منبع به زبان اصلی. حداکثر ۱۰۰ مگابایت.
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 نه تنظیم سرعت. پیش‌فرض: ۱٫۰. محدوده: ۰٫۵ تا ۲٫۰

پاسخ

پروندۀ صوت تبدیل‌شده را به عنوان داده باینری برمی‌گرداند.

ابزارهای صوتی

پایانه‌های پردازش صوتی برای بهبود، حذف صدا، تقسیم ساقه و غیره.

POST /v1/audio/enhance/

بهبود کیفیت صدا: حذف نویز، بهبود شفافیت، وضوح بالا.

file fileپروندۀ صوتی برای بهبود
denoise booleanفعال‌سازی حذف نویز) پیش‌فرض: درست (
enhance_clarity booleanبهبود شفافیت گفتار) پیش‌فرض: درست (
super_resolution booleanارتقا کیفیت صدا) پیش‌فرض: نادرست (
strength integer۱- ۳) سبک ، متوسط ، قوی (. پیش‌فرض: ۲
POST /v1/audio/separate/

صوت‌ها را از سازهای بادی جدا کنید (حذف صوت) یا به ساقه‌ها تقسیم کنید.

file fileپروندۀ صوتی برای جداسازی
model stringdemucs (پیش‌فرض) یا spleeter
stems integerتعداد ساقه‌ها: ۲ ، ۴ ، ۵ ، یا ۶) پیش‌فرض: ۲ (
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فرمت هدف: mp3, wav, flac, ogg, m4a, aac
bitrate integerنرخ بیت خروجی به کیلوبیت بر ثانیه: ۶۴، ۱۲۸، ۱۹۲، ۲۵۶، ۳۲۰
sample_rate integerنرخ نمونه: 22050, 44100, 48000
channels stringmono یا stereo

گپ صوتی

POST /v1/voice-chat/

ارسال صدا یا متن و دریافت پاسخ هوش مصنوعی با گفتار سنتز شده.

بدنه درخواست (multipart/form-data یا JSON)

پارامترنوعلازم& توصیف‌
audio file نه* ورودی صوتی (یا audio یا text لازم است)
text string نه* ورودی متن (یا audio یا text لازم است)
voice string نه صدای پاسخ هوش مصنوعی. پیش‌فرض: 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. هنگامی که تمام کارها تکمیل شد ، یک بازگشت تماس webhook را دریافت کنید.

پارامترها

پارامترنوعتوصیف
textsarrayArray of objects: {text, model, voice}. Max 50 items.
webhook_urlstringURL اختیاری برای نتایج POST هنگامی که بسته کامل می‌شود.

پاسخ

پاسخ 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، مدل‌های بارشده و اندازه صف را بررسی می‌کند. احراز هویت لازم نیست. برای ۳۰ ثانیه نهان‌سازی شده است.

پاسخ

پاسخ 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, female, 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
}

زیرنویسها جدید

GET /v1/speech/subtitles/?uuid=<job_uuid>&format=srt|vtt&download=1

تولید زیرنویس همگام‌شده برای هر کار TTS تکمیل‌شده. هم‌تراز کردن Whisper را روی صدا اجرا می‌کند و SRT یا WebVTT را برمی‌گرداند. نتیجه در دیسک نهان‌سازی می‌شود ، بنابراین یک فراخوانی دوم برای همان uuid یک خواندن دیسک است.

پارامترهای پرسش

پارامترلازم& توصیف‌
uuidآرهUUID کار توسط /v1/tts/ یا /v1/voice-clone/ بازگردانده می‌شود.
formatنهsrt (به صورت پیش‌فرض) یا vtt.
downloadنه1 برای فرستادن Content-Disposition: attachment به مرورگر به جای نمایش، ذخیره می‌شود.
languageنهراهنمایی برای مدل هم‌ترازسازی (اگر حذف شود، خودکار تشخیص داده می‌شود).
cURL
curl "https://api.tts.ai/v1/speech/subtitles/?uuid=$UUID&format=srt&download=1" -o subtitles.srt

واژه‌نامه تلفظ جدید

GET POST DELETE /api/v1/pronunciations/

به موتور TTS بگویید چگونه کلمات مشخص را تلفظ کند. مدخل‌های ذخیره شده به صورت خودکار به هر درخواست TTS که انجام می‌دهید اعمال می‌شوند. حد مدخل ۲۰۰ در هر حساب.

بدنه درخواست (POST)

پارامترنوع& توصیف‌
wordstringکلمه‌ای که باید جایگزین شود (مثلاً GIF، Anthropic). تطابق مرز کلمه.
replacementstringچگونه آن را برای مدل تلفظ کنیم (مثلاً jiff, ann THROP ick).
languagestringکد اختیاری ISO. خالی = برای همه زبانها اعمال می‌شود.
case_sensitivebooleanfalse پیش‌فرض. دقیقاً هنگامی که true است، با حالت کوچک/بزرگ مطابقت می‌کند.
cURL
# 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-..."

همچنین می‌توانید فراخوان‌های درخواستی را بدون ذخیره کردن آن‌ها منتقل کنید - شامل pronunciations در هر فراخوان /v1/tts/ به عنوان یک شی یا آرایه (به پارامترهای نقطه پایانی TTS مراجعه کنید).

گوینده مقاله جدید

یک برچسب