المطورون / كلام إلى نص
تحويل ملف صوتي إلى نص
https://api.echonova.ai/v1/speech-to-textتبدأ مهمة تحويل الكلام إلى نص لملف صوتي مرفوع حتى 10 دقائق و150 ميجابايت، وتعيد `jobId` الخاص بها. احصل على النص المفرّغ من `GET /v1/speech-to-text/jobs/{jobId}`، أو من حدث `job.completed` في Webhook.
Headers
كلمة Bearer ثم مسافة ثم مفتاح API الذي يبدأ بـ ek_. أنشئ المفاتيح في البوابة من المطورون، ثم مفاتيح واجهة برمجة التطبيقات.
متن الطلب
multipart/form-data
الملف الصوتي (mp3، wav، m4a، webm، ogg). حتى 10 دقائق و150 ميجابايت.
`auto` يترك الخدمة تحدد اللغة، وهي حاليًا العربية، وتتعامل أيضًا مع الكلام المختلط والإنجليزي الواضح. و`ar` للعربية والكلام المختلط بين العربية والإنجليزية. و`en` للكلام الإنجليزي فقط. العربية المرسلة بـ `en` تخرج مشوّشة.
اكتب الأرقام المنطوقة بالأرقام (صفر واحد واحد → 011). اضبطه على `false` لإبقائها كلمات. ينطبق على العربية فقط، ولا تُحوَّل تفريغات الإنجليزية أبدًا.
تحديد من يتكلم ومتى: تعرض المهمة المكتملة حينها المتحدثين، والنص المفرّغ مقسّمًا إلى مقاطع موقّتة، يحمل كل منها المتحدث الخاص به. احذف الحقل أو أرسل `false` للحصول على النص المفرّغ وحده.
الاستجابة
200 application/json كل استجابة تستخدم هذا الغلاف.
النتيجة.
معرّف المهمة التي أنشأها الطلب.
`processing` بعد قبول الطلب. استعلم عن المهمة دوريًا، أو استقبل حدث `job.completed` عبر Webhook.
قيمته true عند نجاح الطلب.
يكرر رمز حالة HTTP.
قيمته null عند النجاح.
الأخطاء
الغلاف نفسه، مع success بقيمة false و data بقيمة null. كل الأخطاء
متى يحدث. header `Content-Type` يذكر `multipart/form-data` دون `boundary`، وغالبًا لأن العميل ضبط header يدويًا.
الحل. احذف header الذي كُتب يدويًا، ودع العميل يضبطه مع `boundary`.
متى يحدث. النموذج يحتوي على جزء اسم حقله غير `file`، أو على أكثر من جزء اسمه `file` (يُقبل ملف واحد فقط).
الحل. أرسل جزء ملف واحدًا فقط، واجعل اسمه `file`.
متى يحدث. النموذج لا يحتوي على جزء ملف، أو أن الطلب ليس `multipart` من الأساس.
الحل. أرسل نموذج `multipart` يحتوي على جزء واحد اسمه `file`.
متى يحدث. قيمة `Content-Type` للجزء لا تبدأ بـ `audio/`، و`<type>` هي القيمة التي أرسلها العميل.
الحل. اضبط نوع الجزء، مثل `audio/wav` أو `audio/mpeg`.
متى يحدث. مدة الملف أكبر من 10 دقائق.
الحل. قسّم التسجيل إلى أجزاء مدة كل منها 10 دقائق أو أقل.
متى يحدث. الملف فارغ، أو تعذّر فك ترميزه كملف صوتي.
الحل. تأكد من أن الملف يعمل عند تشغيله، أو صدّره مرة أخرى بصيغة شائعة.
متى يحدث. حقل `language` في النموذج يحمل قيمة غير `auto` أو `ar` أو `en`.
الحل. أرسل `auto` أو `ar` أو `en`، أو احذف الحقل.
متى يحدث. حقل `numbers_as_digits` في النموذج ليس `true` أو `false` أو `1` أو `0`.
الحل. أرسل `true` أو `false`، أو احذف الحقل.
متى يحدث. حقل `identify_speakers` في النموذج ليس `true` أو `false` أو `1` أو `0`.
الحل. أرسل `true` أو `false`، أو احذف الحقل.
متى يحدث. header `Authorization` مفقود، أو قيمته لا تبدأ بـ `Bearer ek_...`، أو أن الرمز لا يطابق أي مفتاح، أو أن المفتاح محذوف أو معطّل، أو أن حسابه مغلق.
الحل. أرسل `Authorization: Bearer ek_...` بمفتاح API مفعّل.
متى يحدث. رصيد مساحة العمل لا يكفي تكلفة هذا الطلب؛ لم يُنفَّذ شيء، ولم يُخصم أي رصيد.
الحل. أضف رصيدًا إلى مساحة العمل.
متى يحدث. مساحة العمل التي يتبعها المفتاح ليس لديها اشتراك.
الحل. تحقّق من خطة مساحة العمل في البوابة.
متى يحدث. حالة الاشتراك ليست نشطة ولا تجريبية.
الحل. جدّد الاشتراك.
متى يحدث. المفتاح مقيّد، وتحويل الكلام إلى نص ليس من الخدمات المسموح بها له.
الحل. عدّل المفتاح وامنحه تحويل الكلام إلى نص، أو استخدم مفتاحًا آخر.
متى يحدث. حجم الملف المرفوع أكبر من 150 ميجابايت، ويُقطع الطلب قبل قراءة الملف.
الحل. أعد ترميز الملف بمعدل بت أقل، أو بقناة واحدة (mono).
متى يحدث. المفتاح أرسل أكثر من 100 طلب إلى نقطة نهاية واحدة خلال 60 ثانية، أو أن عنوان IP واحدًا أرسل أكثر من 100 طلب إلى نقطة نهاية واحدة خلال 60 ثانية (يُحسب حد عنوان IP قبل فحص المفتاح، لذلك قد يرد الخادم دون أي مفتاح)؛ و header `Retry-After` يحمل عدد الثواني المطلوب انتظارها.
الحل. انتظر عدد الثواني المذكور في `Retry-After`، ثم أعد المحاولة.
متى يحدث. الطلب سيتجاوز حد الرصيد الخاص بالمفتاح لدورة الفوترة هذه؛ لم يُنفَّذ شيء، ولا يوجد header `Retry-After`.
الحل. ارفع حد الرصيد على المفتاح أو أزِله، أو انتظر دورة الفوترة التالية.
متى يحدث. خطأ لم تصنّفه API.
الحل. تحقّق من الطلب، ثم أعد المحاولة بعد لحظة قصيرة؛ وتواصل مع الدعم إذا تكرر الخطأ.
متى يحدث. قيست ملفات مرفوعة كثيرة في وقت واحد، أو انتهت مهلة القياس؛ ولم يُخصم أي رصيد.
الحل. أعد المحاولة بعد لحظة قصيرة.
متى يحدث. خدمة التفريغ النصي غير متاحة لهذا الطلب؛ وسيُعاد الرصيد المخصوم.
الحل. أعد المحاولة مرة واحدة؛ وإذا فشل الملف نفسه في كل مرة، فأرسله إلى `POST /v1/speech-to-text`، لتحمل مهمته السبب في الحقل `error`.
متى يحدث. انقطاع مؤقت داخل API.
الحل. أعد المحاولة بعد لحظة قصيرة.
متى يحدث. انتهاء مهلة مؤقت داخل API.
الحل. أعد المحاولة بعد لحظة قصيرة.
curl -X POST "https://api.echonova.ai/v1/speech-to-text" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@audio.mp3;type=audio/mpeg"{
"data": {
"jobId": "66e5f0c2a1b2c3d4e5f60718",
"status": "processing"
},
"success": true,
"statusCode": 200,
"errorMessage": null
}