مستندات

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

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

نمای کلی

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

کلید API

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

نشانی وب پایه

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

احراز هویت

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

احراز هویت

تمام درخواست‌های API نیاز به احراز هویت از طریق یک نشانه حامل در 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)
text string آره متن برای تبدیل به گفتار) حداکثر ۱۰۰۰۰۰ کاراکتر در هر درخواست (
voice string آره شناسۀ صدا (برای فهرست کردن صداهای موجود از /v1/voices/ استفاده کنید)
format string نه قالب خروجی: mp3 (به صورت پیش‌فرض)، wav، flac، ogg
speed float نه ضرب‌کننده سرعت گفتار. پیش‌فرض: ۱٫۰. محدوده: ۰٫۵ تا ۲٫۰
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

پاسخ

پروندهٔ صوتی را به عنوان داده باینری با سرآیند Content-Type مناسب (audio/mpeg، audio/wav، و غیره) برمی‌گرداند.

سرآیندهای پاسخ
Content-Type: audio/mpeg
Content-Length: 48256
X-Credits-Used: 2
X-Credits-Remaining: 498

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

پاسخ

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

مثالهای کد

متن به گفتارName

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

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

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)

متن به گفتارName

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

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

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

متن به گفتارName

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

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

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 در حال بارگذاری مدل. تا چند ثانیه دیگر دوباره سعی کنید.

Webhookها

برای تکالیف طولانی‌مدت (شکافتن ریشه، TTS بسته)، می‌توانید یک پارامتر webhook_url را ارائه دهید. هنگامی که تکالیف به پایان می‌رسد، ما نتیجه را به نشانی URL شما ارسال می‌کنیم.

بار Webhook
{
  "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"
}
نتایج Webhook برای بارگیری تا ۲۴ ساعت پس از تکمیل در دسترس هستند. مطمئن شوید که آن را بلافاصله بارگیری کنید.

آماده ساختن؟

کلید API خود را دریافت کنید و شروع به ادغام TTS.ai در برنامه‌های خود کنید.