مقدمة
مرحبًا بك في توثيق واجهة برمجة التطبيقات (API) الخاصة بـ Lahajati AI. ستجد هنا جميع المعلومات التي تحتاجها لدمج تقنية تحويل النص إلى كلام، تحويل الصوت إلى صوت، واستنساخ الأصوات المتطورة لدينا في تطبيقاتك.
إجراء الطلبات
المصادقة
تستخدم Lahajati AI API مفاتيح API للمصادقة على الطلبات. يمكنك الحصول على مفتاح API الخاص بك من لوحة تحكم حسابك.
يجب أن تتضمن جميع طلبات API مفتاح API الخاص بك في ترويسة Authorization:
Authorization: Bearer YOUR_API_KEY
الطلبات التي لا تحتوي على مصادقة ستفشل مع رمز الحالة `401 Unauthorized`.
معالجة الأخطاء (عام)
تستخدم واجهة برمجة تطبيقات لهجاتي رموز حالة HTTP القياسية للإشارة إلى نجاح أو فشل طلب API. بشكل عام: الرموز في نطاق `2xx` تشير إلى النجاح. الرموز في نطاق `4xx` تشير إلى خطأ ناتج عن المعلومات المقدمة من العميل (على سبيل المثال، معلمة مطلوبة مفقودة، فشل المصادقة، إلخ). الرموز في نطاق `5xx` تشير إلى خطأ من جانب خوادمنا.
- `400 Bad Request`: لم يتمكن الخادم من فهم الطلب بسبب صياغة غير صالحة. تحقق من تنسيق جسم الطلب أو معلمات الاستعلام.
- `401 Unauthorized`: مفتاح API الخاص بك مفقود، غير صالح، أو منتهي الصلاحية. تأكد من تضمين ترويسة `Authorization: Bearer YOUR_API_KEY` صالحة.
- `403 Forbidden`: ليس لديك الإذن للوصول إلى هذا المورد أو تنفيذ هذه العملية (على سبيل المثال، محاولة تعديل مورد لا تملكه، أو تجاوز حدود الباقة).
- `404 Not Found`: لم يتم العثور على المورد المطلوب (على سبيل المثال، `id_voice` غير موجود).
- `422 Unprocessable Entity`: كان الطلب جيد الصياغة ولكن تعذر متابعته بسبب أخطاء دلالية (فشل التحقق من صحة الإدخال). سيتضمن جسم الاستجابة عادةً كائن `errors` مع تفاصيل الحقول التي فشلت في التحقق.
- `429 Too Many Requests`: لقد تجاوزت حد معدل الطلبات (RPM) المسموح به لباقة اشتراكك. حاول مرة أخرى لاحقًا. راجع قسم حدود معدل الطلبات.
- `500 Internal Server Error` / `502 Bad Gateway` / `503 Service Unavailable`: حدث خطأ غير متوقع من جانب الخادم أو أن الخدمة غير متاحة مؤقتًا. إذا استمرت المشكلة، يرجى الاتصال بالدعم.
حدود معدل الطلبات (RPM)
واجهة برمجة تطبيقات لهجاتي AI تفرض حدودًا على عدد الطلبات التي يمكن إجراؤها في الدقيقة (RPM) بناءً على باقة اشتراكك. تهدف هذه الحدود إلى ضمان أداء مستقر وعادل لجميع المستخدمين. تجاوز هذه الحدود سيؤدي إلى استجابة خطأ `429 Too Many Requests`.
الباقة | الطلبات في الدقيقة (RPM) |
---|---|
الباقة المجانية | 60 |
باقة البداية | 300 |
باقة صانع المحتوى | 500 |
الباقة المتميزة | 800 |
باقة الأعمال | 1000 |
حدود الطلبات المتزامنة
بالإضافة إلى حدود RPM، هناك قيود على عدد الطلبات المتزامنة التي يمكن لحسابك تشغيلها في نفس الوقت. هذا يساعد في الحفاظ على استقرار النظام.
الباقة | الحد الأقصى للطلبات المتزامنة |
---|---|
الباقة المجانية | 2 |
باقة البداية | 5 |
باقة صانع المحتوى | 50 |
الباقة المتميزة | 200 |
باقة الأعمال | 400 |
POSTPOST تحويل النص إلى كلام الفائقة
https://lahajati.ai/api/v1/text-to-speech-pro
يقوم بإنشاء ملف صوتي عالي الجودة من النص المقدم باستخدام نموذج الصوت والمعلمات المحددة.
معلمات جسم الطلب (Request Body - JSON)
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
text |
string (نص) | نعم | النص المراد تحويله إلى كلام. |
id_voice |
string (معرف) | نعم | المعرف الفريد لمؤدي الصوت المطلوب. يمكن الحصول عليه عبر نقطة النهاية الحصول على الأصوات. |
privacy |
boolean (منطقي) | لا (الافتراضي `0`) | اضبط القيمة على `1` لخصوصية أكثر ( عند ضبطها 1 يتم التعامل مع التحويل كمجهول ولايتم حفظ العملية إطلاقا في قواعدنا ). |
professional_quality |
boolean (منطقي) | لا (الافتراضي `0`) | اضبط القيمة على `1` لتمكين المعالجة المحسنة للحصول على مخرجات صوتية بجودة احترافية. |
speech_speed |
float (عشري) | لا (الافتراضي `1.0`) | يتحكم في سرعة الكلام الناتج. النطاق: `0.8` إلى `1.3`. |
volume |
float (عشري) | لا (الافتراضي `1.0`) | يضبط مستوى صوت الكلام الناتج. النطاق: `0.0` إلى `1.0`. |
الاستجابة الناجحة
عند النجاح (`200 OK`)، سيحتوي جسم الاستجابة على بيانات الصوت الخام. ترويسة `Content-Type` ستكون `audio/mpeg`.
استجابات الخطأ
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 400 تنسيق الإدخال غير صالح أو معلمات مطلوبة مفقودة.
- 404 المعرف `id_voice` المحدد غير موجود.
- 422 فشل التحقق من صحة الإدخال. سيحتوي جسم الاستجابة على تفاصيل الأخطاء.
POSTPOST تحويل الصوت إلى صوت الفائقة
https://lahajati.ai/api/v1/speech-to-speech-pro
يقوم بتحويل ملف صوتي إلى كلام بصوت آخر محدد مع الحفاظ على النبرة والأسلوب، باستخدام نموذج الصوت والمعلمات المحددة.
ملاحظة: عند استخدام `FormData` في JavaScript أو ما يعادلها في المكتبات الأخرى، يقوم المتصفح/المكتبة تلقائيًا بتعيين ترويسة `Content-Type: multipart/form-data` مع `boundary` الصحيح. لا تقم بتعيينها يدويًا.
معلمات الطلب (Form Data)
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
audio_file |
file (ملف صوتي) | نعم | الملف الصوتي المراد تحويله. الأنواع المدعومة: `mp3, wav, aac, ogg`. الحجم الأقصى: 50 ميجابايت. |
id_voice |
string (معرف) | نعم | المعرف الفريد لمؤدي الصوت المطلوب. يمكن الحصول عليه عبر نقطة النهاية الحصول على الأصوات. |
professional_quality |
boolean (منطقي) | لا (الافتراضي `0`) | اضبط القيمة على `1` لتمكين المعالجة المحسنة للحصول على مخرجات صوتية بجودة احترافية. |
الاستجابة الناجحة
عند النجاح (`200 OK`)، سيحتوي جسم الاستجابة على بيانات الصوت الخام المحول. ترويسة `Content-Type` ستكون `audio/mpeg`.
استجابات الخطأ
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 400 طلب غير صالح، عادة بسبب فقدان `audio_file` أو استخدام `Content-Type` غير صحيح.
- 402 رصيد النقاط غير كافٍ لإجراء عملية التحويل.
- 403 مفتاح API منتهي الصلاحية أو صلاحيات غير كافية لاستخدام الصوت المحدد.
- 404 المعرف `id_voice` المحدد غير موجود.
- 422 فشل التحقق من صحة الإدخال. سيحتوي جسم الاستجابة على تفاصيل الأخطاء.
GETGET الحصول على الأصوات
https://lahajati.ai/api/v1/voices
يجلب قائمة بالأصوات المتاحة التي يمكن استخدامها مع نقاط نهاية تحويل النص إلى كلام وتحويل الصوت إلى صوت، بما في ذلك الأصوات المستنسخة.
معلمات الاستعلام (Query Parameters)
معلمات اختيارية لفلترة النتائج وفرزها وتقسيمها إلى صفحات.
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
page |
integer (عدد صحيح) | لا (الافتراضي 1) | رقم الصفحة المطلوب من النتائج. |
per_page |
integer (عدد صحيح) | لا (الافتراضي 15، الأقصى 100) | عدد الأصوات التي يتم إرجاعها في كل صفحة. |
gender |
string (نص) | لا | فلترة حسب الجنس. القيم المسموح بها: `1` (ذكر)، `2` (أنثى)، `3` (أطفال). |
الاستجابة الناجحة (200 OK)
إرجاع قائمة مقسمة إلى صفحات لكائنات الأصوات التي تطابق المعايير.
استجابات الخطأ
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 422 فشل التحقق من صحة معلمات الاستعلام. انظر كائن `errors`.
أفضل ممارسات استنساخ الصوت
للحصول على أفضل النتائج عند استخدام ميزة استنساخ الصوت، من الضروري توفير عينات صوتية عالية الجودة. فيما يلي إرشادات وتوصيات لمساعدتك في إعداد ملفاتك الصوتية:
إرشادات جودة الصوت
- متحدث واحد فقط: تأكد من أن التسجيل يحتوي على صوت شخص واحد بوضوح (لا توجد أصوات أخرى أو موسيقى في الخلفية).
- ثبات الأداء: حافظ على مستوى صوت ونبرة وعاطفة ثابتة قدر الإمكان طوال التسجيل.
- وقفات طبيعية: قم بتضمين وقفات قصيرة وطبيعية بين الجمل (يوصى بـ 0.5 ثانية).
- بيئة هادئة: سجل في مكان خالٍ من ضوضاء الخلفية والصدى قدر الإمكان.
- جودة احترافية (مثالي): إذا أمكن، استخدم معدات تسجيل احترافية (ميكروفون جيد) وفي بيئة معالجة صوتيًا (تقليل صدى الغرفة).
خصائص العينة الصوتية المثالية
- المدة الموصى بها: للحصول على أفضل جودة وتنوع في الأداء (مثل القدرة على التعبير عن مشاعر مختلفة)، قدم عينة صوتية تزيد مدتها عن 60 ثانية.
- للأداء الثابت: إذا كنت تستهدف أداءً ثابتًا ومحددًا (مثل قراءة الأخبار)، فإن عينة تتراوح مدتها بين 30 و 50 ثانية بصوت واضح وأداء ثابت قد تكون كافية.
- وضوح ونقاء: يجب أن تكون العينة الصوتية خالية تمامًا من الضوضاء والتشويش (تجنب قص الصوت أو التشويه). الصوت الواضح والنقي هو المفتاح.
- التدريب الذكي: سيقوم نظام الذكاء الاصطناعي لدينا بتحليل وتدريب نفسه على لهجة الصوت، نبرته، وأسلوب الأداء (سواء كان سعيدًا، متحمسًا، رسميًا، إلخ) من العينة المقدمة.
تنسيقات الملفات المعتمدة
نقبل مجموعة متنوعة من تنسيقات ملفات الصوت (كما هو محدد في معلمة `audio_file` لنقطة نهاية إنشاء صوت مستنسخ).
POSTPOST إنشاء صوت مستنسخ
https://lahajati.ai/api/v1/voices/cloned
يسمح بإنشاء صوت مستنسخ جديد عن طريق تحميل ملف صوتي للتدريب وتوفير البيانات الوصفية اللازمة. الصوت المستنسخ سيكون متاحًا للاستخدام في تحويل النص إلى كلام بعد اكتمال المعالجة.
ملاحظة: عند استخدام `FormData` في JavaScript أو ما يعادلها في المكتبات الأخرى، يقوم المتصفح/المكتبة تلقائيًا بتعيين ترويسة `Content-Type: multipart/form-data` مع `boundary` الصحيح. لا تقم بتعيينها يدويًا.
معلمات الطلب (Form Data)
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
voice_name |
string (نص) | نعم | الاسم المراد إعطاؤه للصوت المستنسخ. (الحد الأقصى: 25 حرفًا). |
gender |
integer (صحيح) | نعم | جنس الصوت. القيم المسموح بها: `1` (ذكر)، `2` (أنثى)، `3` (طفل). |
audio_file |
file (ملف صوتي) | نعم | ملف صوتي واحد للتدريب على استنساخ الصوت. الأنواع المدعومة: `mp3, wav, aac, ogg, flac, m4a`. الحجم الأقصى: 50 ميجابايت. (جودة جيدة ووضوح بدون ضوضاء خلفية يعطي أفضل النتائج). |
enhance_audio |
boolean (منطقي) | لا (الافتراضي `false`) | اضبط على `true` لتحسين جودة ملف الصوت التدريبي قبل إرساله لنموذج الاستنساخ (قد يزيد من وقت المعالجة). |
voice_image |
file (صورة) | لا | صورة للصوت المستنسخ. الأنواع المدعومة: `jpeg, png, jpg, gif, webp`. الحجم الأقصى: 2 ميجابايت. |
voice_tags |
string (نص) | لا | كلمات مفتاحية أو تصنيفات اختيارية للصوت المستنسخ، مفصولة بفاصلة (مثال: "هادئ, رسمي"). (الحد الأقصى: 255 حرفًا). |
preview_audio_sample |
file (ملف صوتي) | لا | ملف صوتي اختياري كعينة لمعاينة الصوت المستنسخ. الأنواع المدعومة: `mp3, wav`. الحجم الأقصى: 10 ميجابايت. (متاح فقط للمستخدمين برتبة معينة). |
الاستجابة الناجحة (201 Created)
عند الإنشاء الناجح، يتم إرجاع تفاصيل الصوت المستنسخ الذي تم إنشاؤه. قد يستغرق الصوت بعض الوقت ليصبح نشطًا بالكامل.
استجابات الخطأ (إنشاء صوت مستنسخ)
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 403 تم الوصول إلى الحد الأقصى المسموح به لعدد الأصوات المستنسخة.
- 422 فشل التحقق من صحة المدخلات (مثل: اسم مفقود، نوع ملف غير صالح، حجم ملف كبير جدًا).
- 500 خطأ أثناء الاتصال بخدمة استنساخ الصوت الخارجية أو فشل في معالجة الطلب هناك.
PUTPUT تعديل صوت مستنسخ
https://lahajati.ai/api/v1/voices/cloned/{id_voice}
يسمح بتعديل البيانات الوصفية لصوت مستنسخ موجود (مثل الاسم، الجنس، الصورة، العلامات). لا يمكن تعديل عينة الصوت التدريبية الأصلية.
معلمة المسار (Path Parameter)
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
{id_voice} |
string (معرف) | نعم | المعرف الفريد للصوت المستنسخ المراد تعديله (الذي يبدأ بـ `lvc_`). يتم تمريره كجزء من عنوان URL. |
معلمات الطلب الاختيارية (Form Data / JSON)
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
voice_name |
string (نص) | لا | الاسم المراد إعطاؤه للصوت المستنسخ. (الحد الأقصى: 25 حرفًا). |
gender |
integer (صحيح) | لا | جنس الصوت. القيم المسموح بها: `1` (ذكر)، `2` (أنثى)، `3` (طفل). |
voice_image |
file (صورة) | لا | صورة للصوت المستنسخ. الأنواع المدعومة: `jpeg, png, jpg, gif, webp`. الحجم الأقصى: 2 ميجابايت. |
voice_tags |
string (نص) | لا | كلمات مفتاحية أو تصنيفات اختيارية للصوت المستنسخ، مفصولة بفاصلة (مثال: "هادئ, رسمي"). (الحد الأقصى: 255 حرفًا). |
الاستجابة الناجحة (200 OK)
عند التعديل الناجح، يتم إرجاع تفاصيل الصوت المستنسخ المحدثة.
استجابات الخطأ (تعديل صوت مستنسخ)
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 404 الصوت المستنسخ غير موجود، أو لا تملك الصلاحية لتعديله.
- 422 فشل التحقق من صحة المدخلات (مثل: اسم مفقود، نوع ملف غير صالح، حجم ملف كبير جدًا).
DELETEDELETE حذف صوت مستنسخ
https://lahajati.ai/api/v1/voices/cloned/{id_voice}
يقوم بحذف صوت مستنسخ بشكل دائم من النظام ومن أي خدمات خارجية مرتبطة به.
معلمة المسار (Path Parameter)
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
{id_voice} |
string (معرف) | نعم | المعرف الفريد للصوت المستنسخ المراد تعديله (الذي يبدأ بـ `lvc_`). يتم تمريره كجزء من عنوان URL. |
الاستجابة الناجحة (200 OK)
رسالة تأكيد على الحذف الناجح.
استجابات الخطأ (حذف صوت مستنسخ)
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 404 الصوت المستنسخ غير موجود، أو لا تملك الصلاحية لتعديله.
- 500 فشل حذف الصوت المستنسخ (قد يكون بسبب مشكلة في خدمة خارجية).
التحكم المطلق في توليد الكلام
توفر نقاط النهاية هذه تحكمًا دقيقًا ومتقدمًا في عملية توليد الكلام. يمكنك تحديد اللهجة وأسلوب الأداء بشكل منفصل أو توفير توجيهات نصية مخصصة (prompt) للحصول على المخرجات الصوتية المطلوبة بدقة.
GETGET الحصول على أصوات التحكم المطلق
https://lahajati.ai/api/v1/voices-absolute-control
يجلب قائمة بالأصوات المتاحة خصيصًا للاستخدام مع نقطة نهاية "توليد الكلام بالتحكم المطلق".
معلمات الاستعلام (Query Parameters)
معلمات اختيارية لفلترة النتائج وفرزها وتقسيمها إلى صفحات.
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
page |
integer (عدد صحيح) | لا (الافتراضي 1) | رقم الصفحة المطلوب من النتائج. |
per_page |
integer (عدد صحيح) | لا (الافتراضي 15، الأقصى 100) | عدد الأصوات التي يتم إرجاعها في كل صفحة. |
gender |
string (نص) | لا | فلترة حسب الجنس. القيم المسموح بها: `1` (ذكر)، `2` (أنثى)، `3` (أطفال). |
الاستجابة الناجحة (200 OK)
إرجاع قائمة مقسمة إلى صفحات لكائنات الأصوات المتوافقة.
GETGET الحصول على أنماط الأداء
https://lahajati.ai/api/v1/performance-absolute-control
يجلب قائمة بأنماط الأداء المتاحة (مثل درامي، إخباري، إعلاني) التي يمكن استخدامها لتوجيه نموذج توليد الكلام.
معلمات الاستعلام (Query Parameters)
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
page |
integer (عدد صحيح) | لا (الافتراضي 1) | رقم الصفحة المطلوب من النتائج. |
per_page |
integer (عدد صحيح) | لا (الافتراضي 15، الأقصى 100) | عدد الأصوات التي يتم إرجاعها في كل صفحة. |
الاستجابة الناجحة (200 OK)
إرجاع قائمة مقسمة إلى صفحات لكائنات أنماط الأداء.
GETGET الحصول على اللهجات
https://lahajati.ai/api/v1/dialect-absolute-control
يجلب قائمة باللهجات المتاحة (مثل المصرية، السعودية النجدية) التي يمكن استخدامها لتوجيه نموذج توليد الكلام.
معلمات الاستعلام (Query Parameters)
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
page |
integer (عدد صحيح) | لا (الافتراضي 1) | رقم الصفحة المطلوب من النتائج. |
per_page |
integer (عدد صحيح) | لا (الافتراضي 15، الأقصى 100) | عدد الأصوات التي يتم إرجاعها في كل صفحة. |
الاستجابة الناجحة (200 OK)
إرجاع قائمة مقسمة إلى صفحات لكائنات اللهجات.
POSTPOST توليد الكلام بالتحكم المطلق
https://lahajati.ai/api/v1/text-to-speech-absolute-control
يولد كلامًا من نص باستخدام صوت محدد وتحكم دقيق في الأداء عبر وضعين: الوضع المنظم (باستخدام معرفات الأداء واللهجة) أو وضع التوجيه المخصص.
فهم معلمة `input_mode`
هذه المعلمة هي مفتاح التحكم في هذه النقطة. لديها وضعان:
- الوضع `0` (المنظم): في هذا الوضع، تقوم بتمرير `performance_id` و/أو `dialect_id` (اختياريان). سيقوم النظام بإنشاء التوجيه المناسب للذكاء الاصطناعي بناءً على اختياراتك. هذا هو الخيار الموصى به لمعظم حالات الاستخدام.
- الوضع `1` (المخصص): في هذا الوضع، يتم تجاهل `performance_id` و `dialect_id`. بدلاً من ذلك، تقوم بتمرير توجيه نصي حر ومفصل في `custom_prompt_text`، مما يمنحك تحكمًا كاملاً. مثال: "تحدث ببطء وبهدوء، مع وقفات بين الجمل، كأنك تروي قصة أطفال.".
معلمات جسم الطلب (Request Body - JSON)
المعلمة | النوع | مطلوب | الوصف |
---|---|---|---|
text |
string (نص) | نعم | النص المراد تحويله إلى كلام. |
id_voice |
string (معرف) | نعم | GET الحصول على أصوات التحكم المطلق: المعرف الفريد لمؤدي الصوت المطلوب. يمكن الحصول عليه عبر نقطة النهاية الحصول على الأصوات. |
input_mode |
string ("0" or "1") | نعم | يحدد وضع التحكم. `0` للوضع المنظم (باستخدام معرفات)، `1` لوضع التوجيه المخصص. |
performance_id |
string (معرف) | لا (مطلوب إذا كان `input_mode` هو `0`) | معرف نمط الأداء. يتم الحصول عليه من نقطة نهاية الحصول على أنماط الأداء. |
dialect_id |
string (معرف) | لا (مطلوب إذا كان `input_mode` هو `0`) | معرف اللهجة. يتم الحصول عليه من نقطة نهاية الحصول على اللهجات. |
custom_prompt_text |
string (نص) | لا (مطلوب إذا كان `input_mode` هو `1`) | توجيه نصي مخصص ومفصل لوصف الأداء المطلوب. |
الاستجابة الناجحة
عند النجاح (`200 OK`)، سيحتوي جسم الاستجابة على بيانات الصوت الخام. ترويسة `Content-Type` ستكون `audio/mpeg`.
استجابات الخطأ
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 401 ليس لديك الإذن أو الباقة اللازمة لاستخدام هذا الصوت.
- 401 رصيد نقاطك غير كافٍ لإتمام عملية توليد الصوت.
- 404 المعرف `id_voice` المحدد غير موجود.
- 422 فشل التحقق من صحة الإدخال. تأكد من أن المعلمات المطلوبة لكل `input_mode` موجودة.