وثائق API

دمج TTS.ai في تطبيقاتك مع REST API. الشكل المتوافق مع OpenAI للهجرة السهلة.

REST API متوافق مع OpenAI استجابات JSON دعم البث

ألف - لمحة عامة

وتوفر واجهة برمجة التطبيقات TTS.ai إمكانية الوصول البرمجي إلى جميع خصائص المنصة: تحويل النص إلى كلام، وتحويل الكلام إلى نص، واستنساخ الصوت، وتعزيز الصوت، وما إلى ذلك. وتستخدم واجهة برمجة التطبيقات اتفاقيات REST القياسية مع أجسام طلب/استجابة JSON.

مفتاح API

احصل على مفتاح API الخاص بك من إعدادات الحساب. متوفر على خطط Pro و Enterprise.

العنوان الشبكي الأساسي

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

أذن

رموز لحاملها عن طريق Authorization العنوان

التوثيق

المستوى المجاني - لا يلزم مفتاح. رسائل مجهولة إلى /v1/tts/ :: العمل دون أي إذن، بحد أقصى 000 5 حرف/يوم لكل عنوان بروتوكول الإنترنت، باستخدام أي من نماذجنا المجانية (piper, vits, melotts, kokoro). انضم لحساب مجاني للحصول على 15,000 شخصية مكافأة والوصول إلى نماذج عالية الجودة.

بالنسبة للنماذج العالية الجودة والحدود العالية للمعدلات، حدد التوثيق باستخدام رموز حامل في Authorization العنوان.

رأس HTTP
Authorization: Bearer sk-tts-your-api-key-here
حافظ على سرية مفتاح API الخاص بك. لا تشاركها في شفرة جانب العميل، المستودعات العامة، أو السجلات. تناوب المفاتيح بانتظام من إعدادات حسابك.

مجموعات برامج الحاسوب

يسهل دمج 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

العنوان الشبكي الأساسي

العنوان الشبكي الأساسي: https://api.tts.ai/v1/

جميع النقاط النهائية هي نسبية لهذا العنوان الأساسي. على سبيل المثال، نقطة نهاية TTS هي:

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

حدود المعدلات

وتختلف الحدود القصوى لمعدلات المساعدة المؤقتة حسب الخطة:

الخطة الطلبات/الدقيقة متزامن أقصى طول للنص
مجاني 10 2 500 دبابة
بدء التشغيل 30 3 000 000 1 دبابة
المؤيدون 60 5 000 000 1 دبابة
المؤسسة 300 20 000 50 دبابة

وترد عناوين حدود المعدلات في كل رد: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.

تكاليف الائتمان

الخدمات التكلفة الوحدة
TTS (النماذج الحرة: Piper, VITS, MeloTTS) 000 1 حرف لكل ٠٠٠ ١ حرف
TTS (النماذج القياسية: Kokoro, CosyVoice 2, etc.) 000 2 حرف لكل ٠٠٠ ١ حرف
TTS (نماذج عالية الجودة: Tortoise, Chatterbox, etc.) 000 4 حرف لكل ٠٠٠ ١ حرف
تحويل الكلام إلى نص 000 2 حرف لكل دقيقة من الصوت
استنساخ الصوت 000 4 حرف لكل ٠٠٠ ١ حرف
مغير الصوت 000 3 حرف لكل دقيقة من الصوت
تحسين الصوت 000 2 حرف لكل دقيقة من الصوت
إزالة الأصوات/تقسيم الجذع 000 3-000 4 حرف لكل دقيقة من الصوت
الترجمة الشفوية 000 5 حرف لكل دقيقة من الصوت
الدردشة الصوتية 000 3 حرف لكل نوبة
Key & BPM Finder (البحث عن المفاتيح) مجاني --
محول صوت مجاني --

تحويل النص إلى كلمة

POST /v1/tts/

تحويل النص إلى صوت الكلام. يعيد الملف الصوتي في الشكل المطلوب.

الهيئة الطالبة

البارامتراتالنوعالمطلوبةألف - الوصف
model string لا هوية النموذج (مثل kokoro, chatterbox, piper). إذا أُغفل، فإننا نختار تلقائياً نموذجاً يدعم لغة المطلوبة - 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 نعم النص الذي سيحول إلى كلمة. الحد الأقصى لكل طلب: 500 حرف (غير معروف)، 000 5 (حساب مجاني)، 000 000 1 (خطة مدفوعة) المدخلات الطويلة يتم تقسيمها تلقائيا على جانب الخادم.
voice string نعم تحديد الهوية الصوتية (استخدام /v1/voices/ لقائمة الأصوات المتاحة)
format string لا شكل الخرج: mp3 (الافتراضي)، wav، flac، ogg
speed float لا مضاعف سرعة الكلام. الافتراضي: 1.0. النطاق: 0.5 إلى 2.0
language string لا رمز اللغة (مثلاً en, es).
instructions string لا علامات التصرف/التسليم (≤ 500 حرف) مثل \
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-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."
}

الاستجابة

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.

تحويل الكلام إلى نص

POST /v1/stt/

يدعم 99 لغة مع الكشف التلقائي.

الهيئة الطالبة (multipart/form-data)

البارامتراتالنوعالمطلوبةألف - الوصف
file file نعم ملف صوتي (MP3, WAV, FLAC, OGG, M4A, MP4, WebM) بحجم أقصاه 100 ميغابايت.
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 نعم صوت مرجعي (يوصى بـ 10-30 ثانية) 20 ميغابايت كحد أقصى.
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) 50 ميغابايت كحد أقصى.
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

الاستجابة

يعيد الملف الصوتي المحول كبيانات ثنائية.

الترجمة الشفوية

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 نعم الملف الصوتي للكلام المصدر، 50 ميغابايت كحد أقصى
voice string نعم تحديد الهوية الصوتية المستهدفة للكلمات المخرجة
model string لا النموذج: openvoice (الافتراضي)، chatterbox
emotion string لا المشاعر المستهدفة: حيادي، سعيد، حزين، غاضب، مثير.
speed float لا تعديل السرعة. الافتراض: 1.0. النطاق: 0.5 إلى 2.0

الاستجابة

يعيد الملف الصوتي المحول كبيانات ثنائية.

أدوات سمعية

النقاط النهائية لمعالجة الصوت من أجل التعزيز، وإزالة الصوت، وتقسيم الجذع، وأكثر.

POST /v1/audio/enhance/

تحسين جودة الصوت: إزالة الضوضاء، تحسين الوضوح، الاستبانة الفائقة.

file fileملف صوتي لتعزيز
denoise booleanتفعيل إزالة الضوضاء (الافتراضي: صحيح)
enhance_clarity booleanتحسين وضوح الكلام (الافتراضي: صحيح)
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الشكل المستهدف: mp3، wav، flac، ogg، m4a، aac
bitrate integerمعدلات الخروج بالكيلوبايت في الثانية: 64، 128، 192، 256، 320
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 لا نموذج ترجمة النصوص إلى صوت للاستجابة. الافتراضي: 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
}

الدفعة

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/

تحقق من حالة خادم وحدة المعالجة الرسومية، النماذج المحملة، وحجم الصف. لا حاجة للتحقق. مخزن لمدة 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 الترشيح حسب نوع الجنس: ذكر، أنثى، محايد

الاستجابة

استجابة 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
}

الترجمة النصية (SRT / VTT) جديدة

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 الذي تقوم به. حد 200 مدخل لكل حساب.

الهيئة الطالبة (POST)

البارامتراتالنوعألف - الوصف
wordstringكلمة لتجاوزها (مثل GIF, Anthropic). حد الكلمة مطابق.
replacementstringكيف تهجئها للنموذج (مثل jiff، ann THROP ick).
languagestringرمز اختياري للمنظمة الدولية لتوحيد المقاييس.
case_sensitivebooleanالافتراضي false. تطابق الحروف الصغيرة والكبرى بالضبط عندما 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).

المادة جديدة

يسقط وسم