وثائق API
دمج TTS.ai في تطبيقاتك مع REST API. الشكل المتوافق مع OpenAI للهجرة السهلة.
ألف - لمحة عامة
وتوفر واجهة برمجة التطبيقات TTS.ai إمكانية الوصول البرمجي إلى جميع خصائص المنصة: تحويل النص إلى كلام، وتحويل الكلام إلى نص، واستنساخ الصوت، وتعزيز الصوت، وما إلى ذلك. وتستخدم واجهة برمجة التطبيقات اتفاقيات REST القياسية مع أجسام طلب/استجابة JSON.
مفتاح API
احصل على مفتاح API الخاص بك من إعدادات الحساب. متوفر على خطط Pro و Enterprise.
العنوان الشبكي الأساسي
https://api.tts.ai/v1/
أذن
رموز لحاملها عن طريق Authorization العنوان
التوثيق
وتتطلب جميع طلبات واجهة برمجة التطبيقات التحقق من الهوية عن طريق رمز حامل في قاعدة البيانات. Authorization العنوان.
Authorization: Bearer sk-tts-your-api-key-here
مجموعات برامج الحاسوب
يسهل دمج 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")
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');
العنوان الشبكي الأساسي
جميع النقاط النهائية هي نسبية لهذا العنوان الأساسي. على سبيل المثال، نقطة نهاية 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 (البحث عن المفاتيح) | مجاني | -- |
| محول صوت | مجاني | -- |
تحويل النص إلى كلمة
تحويل النص إلى صوت الكلام. يعيد الملف الصوتي في الشكل المطلوب.
الهيئة الطالبة
| البارامترات | النوع | المطلوبة | ألف - الوصف |
|---|---|---|---|
| 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 -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
تحويل الكلام إلى نص
يدعم 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 |
الاستجابة
{
"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"
}
]
}
استنساخ الصوت
توليد الكلام في صوت مستنسخ. تحميل مرجع صوت ونص.
الهيئة الطالبة (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.
مغير الصوت
تحويل الصوت إلى صوت مختلف. تحميل الصوت المصدر واختيار الصوت المستهدف.
الهيئة الطالبة (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 -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
الاستجابة
يعيد الملف الصوتي المحول كبيانات ثنائية.
الترجمة الشفوية
ترجمة الصوت المتكلم من لغة إلى أخرى. يجمع بين الكلام إلى النص، والترجمة، والنص إلى الكلام في مكالمة واحدة.
الهيئة الطالبة (multipart/form-data)
| البارامترات | النوع | المطلوبة | ألف - الوصف |
|---|---|---|---|
| file | file | نعم | ملف صوت المصدر باللغة الأصلية. |
| target_language | string | نعم | رمز اللغة المستهدفة (مثل es, fr, de, ja) |
| voice | string | لا | صوت للنواتج المترجمة. |
| preserve_voice | boolean | لا | محاولة الحفاظ على خصائص صوت المتحدث الأصلي. افتراضي: false |
الاستجابة
{
"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
}
كلمة إلى كلمة
تحويل أسلوب الكلام، العاطفة، أو التسليم مع الحفاظ على المحتوى. مفيد لتعديل النبرة، وتيرة، والتعبيرية.
الهيئة الطالبة (multipart/form-data)
| البارامترات | النوع | المطلوبة | ألف - الوصف |
|---|---|---|---|
| file | file | نعم | الملف الصوتي للكلام المصدر، 50 ميغابايت كحد أقصى |
| voice | string | نعم | تحديد الهوية الصوتية المستهدفة للكلمات المخرجة |
| model | string | لا | النموذج: openvoice (الافتراضي)، chatterbox |
| emotion | string | لا | المشاعر المستهدفة: حيادي، سعيد، حزين، غاضب، مثير. |
| speed | float | لا | تعديل السرعة. الافتراض: 1.0. النطاق: 0.5 إلى 2.0 |
الاستجابة
يعيد الملف الصوتي المحول كبيانات ثنائية.
أدوات سمعية
النقاط النهائية لمعالجة الصوت من أجل التعزيز، وإزالة الصوت، وتقسيم الجذع، وأكثر.
تحسين جودة الصوت: إزالة الضوضاء، تحسين الوضوح، الاستبانة الفائقة.
| file file | ملف صوتي لتعزيز |
| denoise boolean | تفعيل إزالة الضوضاء (الافتراضي: صحيح) |
| enhance_clarity boolean | تحسين وضوح الكلام (الافتراضي: صحيح) |
| super_resolution boolean | رفع جودة الصوت (افتراضي: غير صحيح) |
| strength integer | 1-3 (خفيف، متوسط، قوي) الافتراض: 2 |
فصل الأصوات عن الأدوات (إزالة الأصوات) أو تقسيمها إلى أصوات.
| file file | ملف صوتي ينفصل |
| model string | demucs (الافتراض) أو spleeter |
| stems integer | عدد الجذوع: 2 أو 4 أو 5 أو 6 (الافتراض: 2) |
| format string | صيغة الخرج: wav، mp3، flac |
إزالة الصدى والصدى المتكرر من التسجيلات الصوتية.
| file file | ملف صوتي لتجهيزه |
| type string | echo or reverb (default: both) |
| intensity integer | 1-5 (default: 3) |
تحليل الصوت للكشف عن المفتاح، و 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"]
}
تحويل الصوت بين الأشكال.
| file file | ملف صوتي للتحويل |
| format string | الشكل المستهدف: mp3، wav، flac، ogg، m4a، aac |
| bitrate integer | معدلات الخروج بالكيلوبايت في الثانية: 64، 128، 192، 256، 320 |
| sample_rate integer | معدل العينة: 22050، 44100، 48000 |
| channels string | mono أو stereo |
الدردشة الصوتية
إرسال صوت أو نص وتلقي استجابة الذكاء الاصطناعي مع الكلام المركب.
الهيئة الطالبة (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 | لا | مواصلة محادثة قائمة |
الاستجابة
{
"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 متوازية. اختياريا تلقي webhook استدعاء عندما تنتهي جميع الوظائف.
البارامترات
| البارامترات | النوع | وصف المشروع |
|---|---|---|
| texts | array | Array of objects: {text, model, voice}. Max 50 items. |
| webhook_url | string | Optional URL to POST results when batch completes. |
الاستجابة
{
"batch_id": "abc123",
"total": 3,
"completed": 0,
"status": "processing"
}
سير استطلاع الآراء باستخدام GET /v1/tts/batch/result/?batch_id=abc123
إدراج الصوت
إجراء حساب مسبق لضم صوت من الصوت المرجعي. استخدام embed_id المرجع في طلبات استنساخ الصوت اللاحقة للتوليد الفوري تقريبا.
البارامترات
| البارامترات | النوع | وصف المشروع |
|---|---|---|
| file | file | Reference audio file (WAV, MP3, FLAC). |
| model | string | Cloning model (default: chatterbox). Supported: chatterbox, cosyvoice2, openvoice, gpt-sovits, spark, indextts2, qwen3-tts. |
الاستجابة
{
"embed_id": "emb_abc123",
"model": "chatterbox",
"duration_ms": 450
}
فحص صحي
تحقق من حالة خادم وحدة المعالجة الرسومية، النماذج المحملة، وحجم الصف. لا حاجة للتحقق. مخزن لمدة 30 ثانية.
الاستجابة
{
"status": "online",
"latency_ms": 45,
"queue_size": 3,
"models_loaded": ["kokoro", "chatterbox", "cosyvoice2"]
}
قائمة النماذج
يعيد قائمة بجميع النماذج المتاحة مع قدراتها.
الاستجابة
{
"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
}
]
}
قائمة الأصوات
يعيد قائمة بجميع الأصوات المتاحة، مرشحة بصورة اختيارية حسب النموذج أو اللغة.
بارامترات الاستفسار
| البارامترات | النوع | ألف - الوصف |
|---|---|---|
| model | string | الترشيح بحسب هوية النموذج (مثل kokoro) |
| language | string | الترشيح بحسب رمز اللغة (مثل en) |
| gender | string | الترشيح حسب نوع الجنس: ذكر، أنثى، محايد |
الاستجابة
{
"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
}
أمثلة على الرموز
تحويل النص إلى كلمة
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')}")
تحويل الكلام إلى نص
# 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"])
استنساخ الصوت
# 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)
تحويل النص إلى كلمة
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();
تحويل الكلام إلى نص
// 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);
تحويل النص إلى كلمة
# 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
تحويل الكلام إلى نص
# 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"
استنساخ الصوت
# 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
تحسين الصوت
# 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 الخاص بك.
{
"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"
}
مستعد للبناء؟
احصل على مفتاح API الخاص بك وبدأ دمج TTS.ai في تطبيقاتك.