مستندات

TTS.ai را در برنامه‌های کاربردی خود با API REST ما ادغام کنید. فرمت سازگار با OpenAI برای مهاجرت آسان.

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

نمای کلی

The TTS.ai API provides programmatic access to all platform features: text-to-speech synthesis, speech-to-text transcription, voice cloning, audio enhancement, and more. The API uses standard REST conventions with JSON request/response bodies.

کلید API

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

نشانی وب پایه

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

احراز هویت

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

احراز هویت

تمام درخواست‌های API نیاز به احراز هویت از طریق یک نشانه حامل در Authorization سرآیند.

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

نشانی وب پایه

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

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

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

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

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

نقشه درخواستها/دقیقه Concurrent طول متن بیشینه
حرفه‌ای 60 5 ۵۰۰۰ کاراکتر
انترپرایز 300 20 50000 حرف

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

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

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

متن به گفتارName

POST /v1/tts/

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

بدنه درخواست

پارامتر& نوع‌الزامی& توصیف‌
model string آره شناسهٔ مدل (برای مثال، kokoro، chatterbox، piper)
text string آره متن برای تبدیل به گفتار) حداکثر ۵۰۰۰ کاراکتر برای Pro، ۵۰۰۰۰ کاراکتر برای Enterprise (
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

پاسخ

Returns the audio file as binary data with appropriate Content-Type header (audio/mpeg, audio/wav, etc.).

سرآیندهای پاسخ
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 نه تلاش برای حفظ گوینده اصلی

پاسخ

پاسخ 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 fileAudio file to analyze
پاسخ
{
  "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 نه درخواست سیستم سفارشی برای هوش مصنوعیName
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
}

فهرست مدلها

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 credits for this request.",
    "credits_required": 4,
    "credits_available": 2
  }
}
وضعیت HTTPError Code& توصیف‌
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 در برنامه‌های خود کنید.