وثائق تطبيق برمجة التطبيقات
دمج 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
العنوان الشبكي الأساسي
جميع النقاط النهائية هي نسبية لهذا العنوان URL الأساسي. على سبيل المثال، نقطة نهاية TTS هي:
الحدود القصوى للمعدلات
وتختلف الحدود القصوى لمعدلات المساعدة المؤقتة من خطة إلى أخرى:
| الخطة | الطلبات/الدقيقة | متزامن | أقصى طول للنص |
|---|---|---|---|
| المؤيدون | 60 | 5 | 000 5 دبابة |
| المؤسسة | 300 | 20 | 000 50 دبابة |
وترد عناوين حدود المعدلات في كل رد: X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
تكاليف الائتمان
| الخدمات | التكلفة | الوحدة |
|---|---|---|
| TTS (النماذج الحرة: Piper, VITS, MeloTTS) | رصيد دائن | لكل ٠٠٠ ١ حرف |
| TTS (النماذج القياسية: Kokoro, CosyVoice 2, etc.) | وحدتان دراسيتان | لكل ٠٠٠ ١ حرف |
| TTS (نماذج عالية الجودة: Tortoise, Chatterbox, etc.) | 4 وحدات دراسية | لكل ٠٠٠ ١ حرف |
| تحويل الكلام إلى نص | وحدتان دراسيتان | لكل دقيقة من الصوت |
| استنساخ الصوت | 4 وحدات دراسية | لكل ٠٠٠ ١ حرف |
| مغير الصوت | 3 وحدات دراسية | لكل دقيقة من الصوت |
| تحسين الصوت | وحدتان دراسيتان | لكل دقيقة من الصوت |
| إزالة الصوت/تقسيم الجذع | 3-4 وحدات دراسية | لكل دقيقة من الصوت |
| الترجمة الشفوية | 5 درجات | لكل دقيقة من الصوت |
| الدردشة الصوتية | 3 وحدات دراسية | لكل نوبة |
| Key & BPM Finder (البحث عن المفاتيح) | مجاني | -- |
| محول صوت | مجاني | -- |
تحويل النص إلى كلمة
تحويل النص إلى صوت الكلام. يعيد الملف الصوتي في الشكل المطلوب.
الهيئة الطالبة
| البارامترات | النوع | المطلوبة | ألف - الوصف |
|---|---|---|---|
| model | string | نعم | هوية النموذج (مثل kokoro، chatterbox، piper) |
| text | string | نعم | النص المراد تحويله إلى كلام (000 5 حرف كحد أقصى في الإصدار Pro، و 000 50 حرف في الإصدار Enterprise) |
| 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 ثانية موصى بها). |
| 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 | نعم | ملف صوت المصدر باللغة الأصلية. 100 ميغابايت كحد أقصى. |
| target_language | string | نعم | رمز اللغة المستهدفة (مثل es, fr, de, ja) |
| voice | string | لا | صوت للنواتج المترجمة، يتم اختياره تلقائياً إذا تم حذفه. |
| preserve_voice | boolean | لا | محاولة الحفاظ على المتكلم الأصلي |
الاستجابة
{
"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 | لا | نموذج TTS للاستجابة. افتراضي: 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
}
قائمة النماذج
يعيد قائمة بجميع النماذج المتاحة مع قدراتها.
الاستجابة
{
"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 credits for this request.",
"credits_required": 4,
"credits_available": 2
}
}
| حالة 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 في تطبيقاتك.