المطورون / نص إلى كلام

إنشاء الكلام بشكل متزامن (يعيد رابط المقطع الصوتي في طلب واحد، بحد أقصى 500 حرف)

POST https://api.echonova.ai/v1/text-to-speech/sync

تُنشئ كلامًا لنص من 1 إلى 500 حرف في طلب واحد، وتعيد رابط المقطع الصوتي مع الرصيد المخصوم.

Headers

Authorization string مطلوب

كلمة ⁦Bearer⁩ ثم مسافة ثم مفتاح ⁦API⁩ الذي يبدأ بـ ⁦ek_⁩. أنشئ المفاتيح في البوابة من المطورون، ثم مفاتيح واجهة برمجة التطبيقات.

متن الطلب

application/json

text string مطلوب

النص المراد نطقه، من 1 إلى 500 حرف. تُحذف المسافات في بداية النص ونهايته.

من 1 إلى 500 حرفًا
voiceId string مطلوب

معرّف صوت من قائمة عرض الأصوات المتاحة. الصوت يحدد اللهجة.

speed number اختياري

سرعة نطق الصوت.

من 0.5 إلى 2الافتراضي 1
cfg number اختياري

مدى التزام الصوت بالنص. اتركه على القيمة الافتراضية إلا إذا كنت تضبط القيم.

من 1 إلى 5الافتراضي 2
numSteps number اختياري

خطوات Diffusion. كلما زادت الخطوات كان التوليد أبطأ وأنظف.

16، 32، 48، 64 أو 128الافتراضي 48
tashkeel boolean اختياري

يضيف الحركات إلى النص العربي قبل نطقه. ينطبق على أصوات الفصحى فقط.

الافتراضي false
normalize boolean اختياري

ينطق الأرقام والتواريخ والأوقات والمبالغ والوحدات والروابط والبريد الإلكتروني كما ينطقها متحدث بلهجة الصوت. مفعّل ما لم ترسل `false`.

الافتراضي true

الاستجابة

200 application/json كل استجابة تستخدم هذا الغلاف.

data object

النتيجة.

success boolean

قيمته ⁦true⁩ عند نجاح الطلب.

statusCode integer

يكرر رمز حالة ⁦HTTP⁩.

errorMessage string or null

قيمته ⁦null⁩ عند النجاح.

الأخطاء

الغلاف نفسه، مع ⁦success⁩ بقيمة ⁦false⁩ و ⁦data⁩ بقيمة ⁦null⁩. كل الأخطاء

POST /v1/text-to-speech/sync

curl -X POST "https://api.echonova.ai/v1/text-to-speech/sync" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"الطقس اليوم جميل والسماء صافية في المدينة","voiceId":"66e5ef3a9c1d2b4f8a7e6c01"}'

{
  "data": {
    "jobId": "66e5f0c2a1b2c3d4e5f60718",
    "status": "completed",
    "audioUrl": "https://storage.example.com/tts/tts-output.wav?X-Amz-Signature=...",
    "durationSeconds": 3.4,
    "creditsConsumed": 41
  },
  "success": true,
  "statusCode": 200,
  "errorMessage": null
}