مقدمة
مرحبًا بك في توثيق واجهة برمجة التطبيقات (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) |
|---|---|
| باقة البداية | 100 |
| باقة صانع المحتوى | 250 |
| الباقة المتميزة | 400 |
| باقة الأعمال | 500 |
حدود الطلبات المتزامنة
بالإضافة إلى حدود RPM، هناك قيود على عدد الطلبات المتزامنة التي يمكن لحسابك تشغيلها في نفس الوقت. هذا يساعد في الحفاظ على استقرار النظام.
| الباقة | الحد الأقصى للطلبات المتزامنة |
|---|---|
| باقة البداية | 5 |
| باقة صانع المحتوى | 10 |
| الباقة المتميزة | 15 |
| باقة الأعمال | 20 |
أفضل ممارسات استنساخ الصوت
للحصول على أفضل النتائج عند استخدام ميزة استنساخ الصوت، من الضروري توفير عينات صوتية عالية الجودة. فيما يلي إرشادات وتوصيات لمساعدتك في إعداد ملفاتك الصوتية:
إرشادات جودة الصوت
- متحدث واحد فقط: تأكد من أن التسجيل يحتوي على صوت شخص واحد بوضوح (لا توجد أصوات أخرى أو موسيقى في الخلفية).
- ثبات الأداء: حافظ على مستوى صوت ونبرة وعاطفة ثابتة قدر الإمكان طوال التسجيل.
- وقفات طبيعية: قم بتضمين وقفات قصيرة وطبيعية بين الجمل (يوصى بـ 0.5 ثانية).
- بيئة هادئة: سجل في مكان خالٍ من ضوضاء الخلفية والصدى قدر الإمكان.
- جودة احترافية (مثالي): إذا أمكن، استخدم معدات تسجيل احترافية (ميكروفون جيد) وفي بيئة معالجة صوتيًا (تقليل صدى الغرفة).
خصائص العينة الصوتية المثالية
- المدة الموصى بها: للحصول على أفضل جودة وتنوع في الأداء (مثل القدرة على التعبير عن مشاعر مختلفة)، قدم عينة صوتية تزيد مدتها عن 60 ثانية.
- للأداء الثابت: إذا كنت تستهدف أداءً ثابتًا ومحددًا (مثل قراءة الأخبار)، فإن عينة تتراوح مدتها بين 30 و 50 ثانية بصوت واضح وأداء ثابت قد تكون كافية.
- وضوح ونقاء: يجب أن تكون العينة الصوتية خالية تمامًا من الضوضاء والتشويش (تجنب قص الصوت أو التشويه). الصوت الواضح والنقي هو المفتاح.
- التدريب الذكي: سيقوم نظام الذكاء الاصطناعي لدينا بتحليل وتدريب نفسه على لهجة الصوت، نبرته، وأسلوب الأداء (سواء كان سعيدًا، متحمسًا، رسميًا، إلخ) من العينة المقدمة.
تنسيقات الملفات المعتمدة
نقبل مجموعة متنوعة من تنسيقات ملفات الصوت (كما هو محدد في معلمة `audio_file` لنقطة نهاية إنشاء صوت مستنسخ).
أداة تحويل نص إلى صوت
توفر نقاط النهاية هذه تحكمًا دقيقًا ومتقدمًا في عملية توليد الكلام. يمكنك تحديد اللهجة وأسلوب الأداء بشكل منفصل أو توفير توجيهات نصية مخصصة (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` (أطفال). |
voice_name |
string (نص) | لا | فلترة حسب إسم الصوت |
الاستجابة الناجحة (200 OK)
إرجاع قائمة مقسمة إلى صفحات لكائنات الأصوات المتوافقة.
GETGET الحصول على أنماط الأداء
https://lahajati.ai/api/v1/performance-absolute-control
يجلب قائمة بأنماط الأداء المتاحة (مثل درامي، إخباري، إعلاني) التي يمكن استخدامها لتوجيه نموذج توليد الكلام.
معلمات الاستعلام (Query Parameters)
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
page |
integer (عدد صحيح) | لا (الافتراضي 1) | رقم الصفحة المطلوب من النتائج. |
per_page |
integer (عدد صحيح) | لا (الافتراضي 15، الأقصى 100) | عدد الأصوات التي يتم إرجاعها في كل صفحة. |
performance_name |
string (نص) | لا | فلترة حسب إسم الأداء |
الاستجابة الناجحة (200 OK)
إرجاع قائمة مقسمة إلى صفحات لكائنات أنماط الأداء.
GETGET الحصول على اللهجات
https://lahajati.ai/api/v1/dialect-absolute-control
يجلب قائمة باللهجات المتاحة (مثل المصرية، السعودية النجدية) التي يمكن استخدامها لتوجيه نموذج توليد الكلام.
معلمات الاستعلام (Query Parameters)
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
page |
integer (عدد صحيح) | لا (الافتراضي 1) | رقم الصفحة المطلوب من النتائج. |
per_page |
integer (عدد صحيح) | لا (الافتراضي 15، الأقصى 100) | عدد الأصوات التي يتم إرجاعها في كل صفحة. |
dialect_name |
string (نص) | لا | فلترة حسب إسم اللهجة |
الاستجابة الناجحة (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`) | توجيه نصي مخصص ومفصل لوصف الأداء المطلوب. |
temperature |
numeric (رقمي) | قيمة محصورة بين 0.1 - 2 | هو إعداد يتحكم في مدى إبداع وتنوع الصوت الناتج؛ القيم المنخفضة تجعله أكثر اتساقًا، والقيم المرتفعة تزيده تنوعًا |
الاستجابة الناجحة
عند النجاح (`200 OK`)، سيحتوي جسم الاستجابة على بيانات الصوت الخام. ترويسة `Content-Type` ستكون `audio/mpeg`.
استجابات الخطأ
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 401 ليس لديك الإذن أو الباقة اللازمة لاستخدام هذا الصوت.
- 401 رصيد نقاطك غير كافٍ لإتمام عملية توليد الصوت.
- 404 المعرف `id_voice` المحدد غير موجود.
- 422 فشل التحقق من صحة الإدخال. تأكد من أن المعلمات المطلوبة لكل `input_mode` موجودة.
POSTPOST تحويل الصوت بالتحكم المطلق
https://lahajati.ai/api/v1/speech-to-speech-absolute-control
يقوم بتحويل ملف صوتي إلى كلام بصوت آخر محدد مع تحكم متقدم في معلمات الجودة والأداء.
معلمات جسم الطلب (Request Body - JSON)
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
audio_file |
file (ملف صوتي) | نعم | الملف الصوتي المراد تحويله. الأنواع المدعومة: `mp3, wav, aac, ogg`. الحجم الأقصى: 50 ميجابايت (20 دقيقة). |
id_voice |
string (معرف) | نعم | المعرف الفريد لمؤدي الصوت المطلوب. يمكن الحصول عليه عبر نقطة النهاية <a href="#get-voices">الحصول على الأصوات</a>. |
stability |
numeric (رقمي) | لا (الافتراضي `50`) | يتحكم في استقرار الصوت الناتج. النطاق: `0` إلى `100`. |
similarity_boost |
numeric (رقمي) | لا (الافتراضي `95`) | يعزز التشابه مع الصوت المستهدف. النطاق: `0` إلى `100`. |
style |
numeric (رقمي) | لا (الافتراضي `0`) | يؤثر على أسلوب وقوة الأداء. النطاق: `0` إلى `100`. |
الاستجابة الناجحة
عند النجاح (`200 OK`)، سيحتوي جسم الاستجابة على بيانات الصوت الخام. ترويسة `Content-Type` ستكون `audio/mpeg`.
استجابات الخطأ
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 400 طلب غير صالح، عادة بسبب فقدان `audio_file` أو استخدام `Content-Type` غير صحيح.
- 401 ليس لديك الإذن أو الباقة اللازمة لاستخدام هذا الصوت.
- 402 رصيد النقاط غير كافٍ لإجراء عملية التحويل.
- 404 المعرف `id_voice` المحدد غير موجود.
- 422 فشل التحقق من صحة الإدخال. تأكد من أن المعلمات المطلوبة لكل `input_mode` موجودة.
نموذج اللغة الكبير (LLM)
توفر هذه النقاط إمكانيات الذكاء الاصطناعي للمحادثة ومعالجة النصوص باللغة العربية مع دعم التخصيص والتحكم في الأداء.
POSTPOST إكمال المحادثة
https://lahajati.ai/api/v1/chat/completions
يولد استجابة ذكية للرسائل النصية باستخدام نماذج اللغة الكبيرة المخصصة للغة العربية مع إمكانيات التخصيص المتقدمة.
معلمات جسم الطلب (Request Body - JSON)
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
message |
string (نص) | نعم | النص أو السؤال المراد إرساله لنموذج الذكاء الاصطناعي. |
custom_prompt_message |
string (نص) | لا | توجيهات إضافية لتخصيص سلوك وأسلوب إجابة النموذج. |
temperature |
numeric (رقمي) | لا (الافتراضي `1.0`) | يتحكم في مدى إبداع وتنوع الاستجابة. النطاق: `0.1` إلى `2.0`. |
الاستجابة الناجحة (200 OK)
عند النجاح، يتم إرجاع استجابة النموذج في حقل `message`.
استجابات الخطأ
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 401 ليس لديك باقة اشتراك لاستخدام هذه الميزة. اشترك لاستخدام الميزة.
- 401 رصيد نقاطك غير كافٍ لإتمام عملية توليد الصوت.
- 422 فشل التحقق من صحة الإدخال. تأكد من أن المعلمات المطلوبة لكل `input_mode` موجودة.
- 500 فشل نموذج الذكاء الاصطناعي في تنفيذ طلبك بعد عدة محاولات.
استنساخ الأصوات
توفر هذه النقاط إمكانيات استنساخ الأصوات المتقدمة لإنشاء وإدارة وحذف الأصوات المخصصة.
POSTPOST إنشاء صوت مستنسخ
https://lahajati.ai/api/v1/voices/cloned
يسمح بإنشاء صوت مستنسخ جديد عن طريق تحميل ملف صوتي للتدريب وتوفير البيانات الوصفية اللازمة. الصوت المستنسخ سيكون متاحًا للاستخدام في تحويل النص إلى كلام بعد اكتمال المعالجة.
معلمات الطلب (Form Data)
| المعلمة | النوع | مطلوب | الوصف |
|---|---|---|---|
voice_name |
string (نص) | نعم | الاسم المراد إعطاؤه للصوت المستنسخ. (الحد الأقصى: 25 حرفًا). |
gender |
integer (صحيح) | نعم | جنس الصوت. القيم المسموح بها: `1` (ذكر)، `2` (أنثى)، `3` (طفل). |
model |
string | نعم | نموذج الاستنساخ المراد استخدامه. القيم المسموح بها: `lahajati-classic`, `lahajati-neural`, `lahajati-adaptive`. |
audio_file |
file (ملف صوتي) | نعم | ملف صوتي واحد للتدريب على استنساخ الصوت. الأنواع المدعومة: `mp3, wav, aac, ogg, flac, m4a`. الحجم الأقصى: 50 ميجابايت. (جودة جيدة ووضوح بدون ضوضاء خلفية يعطي أفضل النتائج). |
enhance_audio |
boolean (منطقي) | لا (الافتراضي `false`) | اضبط على `true` لتحسين جودة ملف الصوت التدريبي قبل إرساله لنموذج الاستنساخ (قد يزيد من وقت المعالجة). |
voice_tags |
string (نص) | لا | كلمات مفتاحية أو تصنيفات اختيارية للصوت المستنسخ، مفصولة بفاصلة (مثال: "هادئ, رسمي"). (الحد الأقصى: 255 حرفًا). |
الاستجابة الناجحة (201 Created)
عند الإنشاء الناجح، يتم إرجاع تفاصيل الصوت المستنسخ الذي تم إنشاؤه. قد يستغرق الصوت بعض الوقت ليصبح نشطًا بالكامل.
استجابات الخطأ (إنشاء صوت مستنسخ)
بالإضافة إلى الأخطاء العامة، قد تواجه الأخطاء التالية الخاصة بهذه النقطة:
- 403 تم الوصول إلى الحد الأقصى المسموح به لعدد الأصوات المستنسخة.
- 422 فشل التحقق من صحة المدخلات (مثل: اسم مفقود، نوع ملف غير صالح، حجم ملف كبير جدًا).
- 500 خطأ أثناء الاتصال بخدمة استنساخ الصوت الخارجية أو فشل في معالجة الطلب هناك.
POSTPUT تعديل صوت مستنسخ
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` (طفل). |
الاستجابة الناجحة (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 فشل حذف الصوت المستنسخ (قد يكون بسبب مشكلة في خدمة خارجية).