ملف WebVTT من أي تسجيل صوتي
يحوّل KIT التسجيل الصوتي إلى ملف ترجمة بصيغة WebVTT، الصيغة التي يعتمدها مشغّل الفيديو داخل صفحات الويب الحديثة. تناسب مطوّر الموقع أو صاحب المتجر الإلكتروني الذي يضيف فيديو تعريفيًا ويريد ترجمة تعمل مع وسم الفيديو في HTML دون معالجة يدوية.
شغّلها أونلاين
شغّل هذه المهمة على خوادمنا باستخدام حسابك. الأدوات المجانية تعمل داخل متصفحك، أما هذه فتُخصم من رصيدك في KIT حسب السعر الموضّح أعلاه.
لماذا WebVTT لا SRT هنا
صُمِّمت WebVTT خصيصًا للعرض داخل المتصفح، وتدعم خصائص لا تحملها SRT مثل موضع النص على الشاشة وتنسيقه. إن كان الفيديو سيُعرَض عبر وسم video في صفحة ويب، فهذه الصيغة هي الخيار الصحيح من البداية، لا خطوة تحويل لاحقة بعد اختيار صيغة أخرى غير متوافقة أصلًا مع متصفح الويب. اختيار الصيغة الصحيحة من أول خطوة يوفّر إعادة العمل لاحقًا.
كيف تصل الترجمة إلى موقعك
تُرفع ملف الصوت، ويخرج ملف VTT بامتداد vtt جاهز للربط في كود الصفحة عبر وسم track. لا حاجة لتحرير التوقيت يدويًا؛ الملف يعمل فور رفعه على الخادم وربطه بمسار الفيديو المعروض على الصفحة، بلا خطوة تحويل أو معالجة إضافية من فريق التطوير، ودون تعديل أي كود آخر في الصفحة نفسها أو إعادة نشرها من جديد.
التكامل مع بقية الموقع
يمكن طلب الملف عبر API ضمن خط إنتاج آلي، بحيث يُنشَأ ملف الترجمة تلقائيًا كلما رُفع فيديو جديد على الموقع، دون تدخل بشري في كل مرة. هذا يناسب متجرًا إلكترونيًا ينشر عشرات مقاطع المنتجات شهريًا، حيث تصبح الترجمة جزءًا من نظام النشر لا خطوة يدوية منفصلة يُعاد تكرارها لكل فيديو جديد يُضاف إلى صفحات المنتجات.
حالات الاستخدام
فيديو تعريفي لمتجر إلكتروني
تضيف شركة الواحة للتجارة المحدودة فيديو تعريفيًا بمنتجاتها في الصفحة الرئيسية لمتجرها، وتحتاج ترجمة تعمل مع مشغّل الفيديو في الموقع نفسه. ملف WebVTT يُدرَج مباشرة في كود الصفحة دون طبقة إضافية.
دورة تدريبية على منصة تعليمية
تبني منصة تعليمية إقليمية دروسًا مصوَّرة بالعربية، وتحتاج ترجمة متوافقة مع مشغّل الفيديو المدمج في المنصة. الملف الناتج يعمل فورًا دون تعديل من فريق التطوير.
صفحة هبوط بفيديو شهادات عملاء
يضع مسوّق رقمي فيديو شهادات عملاء على صفحة هبوط جديدة، ويحتاج ترجمة تظهر لمن يتصفّح بلا صوت من الجوال. WebVTT يضمن ظهور النص متزامنًا مع كل شهادة.
الأسئلة الشائعة
ما الفرق العملي بين WebVTT وSRT بالنسبة لي؟
WebVTT يعمل مباشرة مع وسم الفيديو في صفحات الويب ويدعم تنسيقًا إضافيًا، بينما SRT أنسب لمنصات مثل يوتيوب. اختر حسب مكان عرض الفيديو.
هل يحتاج ملف VTT أي تعديل قبل ربطه بالموقع؟
لا، يخرج جاهزًا للربط المباشر عبر وسم track، بامتداد وترميز متوافقين مع المتصفحات الحديثة كافة.
هل يمكن أتمتة إنشاء الترجمة عند رفع فيديو جديد؟
نعم، يمكن استدعاء الأداة تلقائيًا من نظامك عبر API كلما نُشر فيديو جديد، فتصل ترجمته دون تدخل يدوي.
كم تكلفة ترجمة فيديو مدته خمس دقائق؟
نحو $0.03: $0.002 للطلب زائد $0.0055 عن كل دقيقة من الخمس دقائق.
هل تدعم الترجمة الناتجة النص العربي عرضًا صحيحًا على المتصفح؟
نعم، الترميز المستخدم يحافظ على اتجاه النص العربي وربط حروفه، ويظهر سليمًا في كل متصفح حديث يدعم WebVTT.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/audio/subtitles-vtt \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"audio":"https://ejemplo.com/audio.mp3"}'const res = await fetch("https://api.kit.forhosting.com/audio/subtitles-vtt", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"audio": "https://ejemplo.com/audio.mp3"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/audio/subtitles-vtt",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"audio": "https://ejemplo.com/audio.mp3"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/audio/subtitles-vtt", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"audio":"https://ejemplo.com/audio.mp3"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"audio":"https://ejemplo.com/audio.mp3"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/audio/subtitles-vtt", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"audio": "https://ejemplo.com/audio.mp3"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "audio.subtitles_vtt",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الحدود
max_mb | 200 |
max_minutes | 180 |
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
422 | task_failed | لم تنجح معالجة المهمة، ولن تُحتسب عليك؛ أعد المحاولة أو راسلنا مباشرة. |