وثائق API

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

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

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

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

مفتاح API

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

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

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

أذن

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

التوثيق

وتتطلب جميع طلبات واجهة برمجة التطبيقات التحقق من الهوية عن طريق رمز حامل في قاعدة البيانات. 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 100 دبابة
المؤيدون 60 5 000 100 دبابة
المؤسسة 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)
text string نعم النص الذي سيحول إلى كلمة (000 100 حرف كحد أقصى لكل طلب)
voice string نعم تحديد الهوية الصوتية (استخدام /v1/voices/ لقائمة الأصوات المتاحة)
format string لا شكل الخرج: mp3 (الافتراضي)، wav، flac، ogg
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

الاستجابة

يعيد الملف الصوتي كبيانات ثنائية مع العنوان المناسب Content-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) بحجم أقصاه 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_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/

تحقق من حالة خادم وحدة المعالجة الرسومية، النماذج المحملة، وحجم الصف. لا حاجة للتحقق. مخزن لمدة 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
}

أمثلة على الرموز

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

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 النموذج يحمل حاول مرة أخرى بعد بضعة ثوان

الروابط الشبكية

بالنسبة للمهام التي تستغرق وقتاً طويلاً (تقسيم الجذور، وترجمة النصوص بالدفعات)، يمكنك توفير بارامترات 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"
}
وتتاح نتائج الوصلة الشبكية للتنزيل لمدة 24 ساعة بعد الانتهاء من الاستبيان، ويرجى التأكد من تنزيلها على الفور.

مستعد للبناء؟

احصل على مفتاح API الخاص بك وبدأ دمج TTS.ai في تطبيقاتك.