AiSrt : ترجم، استخرج ونسخ نصوص الترجمة الخاصة بك بفضل الذكاء الاصطناعي
أداة مجانية لجعل الفيديوهات متاحة بـ 29 لغة، للصم، وضعاف السمع وجميع عشاق المحتوى متعدد اللغات
هل لديك فيديو مع ترجمات باللغة الإنجليزية وتود الحصول عليها بالفرنسية، الإسبانية، العربية أو اليابانية؟ أو فيلم بدون أي ترجمة، ترغب في استخراج .srt منه؟ هذا بالضبط ما كتبته من أجله AiSrt.
AiSrt هي أداة سطر أوامر تعتمد على الذكاء الاصطناعي لـ ترجمة ملفات الترجمة الخاصة بك .srt، استخراج المسارات المدمجة بالفعل في ملفات الفيديو الخاصة بك، ونسخ الصوت من فيديو مباشرة إلى ترجمات. الثلاثة في نفس الملف التنفيذي.
بالنسبة للترجمة، لديك الخيار بين محركين: واجهة برمجة التطبيقات من OpenAI، التي تكلف بضعة سنتات لكل فيلم، أو خادم Ollama الذي يعمل على جهازك الخاص. الثاني مجاني، يعمل دون اتصال، ولا يتطلب أي مفتاح أو حساب. ترجماتك لا تغادر القرص الصلب الخاص بك.
وإذا كان الفيديو لا يحتوي على أي ترجمات، فإن AiSrt تستخدم Whisper، نموذج التعرف على الصوت من OpenAI، الذي يحول المسار الصوتي إلى .srt بمفرده. بصراحة، في المرة الأولى التي رأيت فيها مؤتمرًا مدته ساعة يظهر مترجمًا دون أن أكتب سطرًا واحدًا، كان ذلك شيئًا مميزًا.
لماذا AiSrt؟
- الوصول أولاً. الأشخاص الصم وضعاف السمع يستحقون وصولًا بسيطًا إلى المحتويات الفيديو. يجب أن يستغرق إنشاء وترجمة الترجمات بضع دقائق، وليس ليلة كاملة.
- 29 لغة. العربية، الألمانية، الإنجليزية، الصينية، الكورية، الدنماركية، الإسبانية، الفنلندية، الفرنسية، اليونانية، الهندية، العبرية، المجرية، الإندونيسية، الإيطالية، اليابانية، الماليزية، الهولندية، النرويجية، البولندية، البرتغالية، الرومانية، الروسية، السويدية، التشيكية، التايلاندية، التركية، الأوكرانية والفيتنامية.
- ترجمة تأخذ في الاعتبار السياق. هذه هي الفرق الرئيسية مع المترجم الحرفي: العبارات الاصطلاحية، الفكاهة والألعاب اللغوية تمر بشكل أفضل بكثير.
- ثلاث وظائف في أداة واحدة: الترجمة، الاستخراج، النسخ.
- مجاني ودون اتصال إذا كنت ترغب. مع تثبيت Ollama على جهازك، فإن الترجمة لا تكلف شيئًا، ولا تتطلب أي مفتاح ولا ترسل أي شيء إلى أي مكان. مفيد لمحتوى لا ترغب في تمريره عبر خدمة طرف ثالث.
- لا شيء للتثبيت بجانبه. الملف التنفيذي مستقل، لا يوجد وقت تشغيل .NET للتنزيل، كل شيء موجود فيه. و ffmpeg مثل whisper.cpp يتم استرجاعهما تلقائيًا على Windows وLinux عند الحاجة.
- تسريع NVIDIA على Windows. إذا اكتشفت AiSrt بطاقة الرسوميات الخاصة بك، فإنها تتحول إلى إصدار CUDA من whisper وتكون النسخ أسرع بكثير.
التثبيت
المتطلبات الأساسية
لا شيء إلزامي، في الواقع. الاستخراج والنسخ يعملان بدون مفتاح، بدون حساب وبدون إرسال أي شيء إلى أي مكان.
بالنسبة للترجمة، تحتاج إلى واحد من اثنين: مفتاح API من OpenAI (مدفوع حسب الاستخدام، بضعة سنتات لكل فيلم)، أو Ollama مثبت على جهازك (مجاني، دون اتصال). الأقسام التالية تشرح كل منهما، اختر ما يناسبك.
لا يوجد وقت تشغيل للتثبيت: كل أرشيف يحتوي على ملف تنفيذي مستقل لنظامك.
- قم بتنزيل الأرشيف أدناه الذي يتناسب مع جهازك: Windows x64، Linux x64، أو macOS (Apple Silicon M1 إلى M4، أو Intel x64).
- قم بفك ضغطه في المجلد الذي تختاره.
- اختياري: أضف هذا المجلد إلى متغير البيئة الخاص بك
PATHلاستدعاءaisrtمن أي طرفية.
على نظام macOS، إذا رفض النظام تشغيل الملف الثنائي، افتح Terminal في المجلد واستخدم chmod +x aisrt، ثم xattr -cr aisrt. تم توقيع وبناء إصدارات macOS، لذا من المفترض أنك لن تحتاج إلى ذلك.
كيفية الحصول على مفتاح API من OpenAI
مرة أخرى: هذا فقط من أجل الترجمة.
- اذهب إلى platform.openai.com وأنشئ حسابًا، أو قم بتسجيل الدخول.
- اذهب إلى مفاتيح API من قائمة ملفك الشخصي، في أعلى اليمين.
- انقر على إنشاء مفتاح سري جديد.
- أعطه اسمًا، مثل AiSrt، ثم أكد.
- انسخ المفتاح على الفور، فلن يظهر مرة أخرى أبدًا.
- الصقه في
appsettings.json، بدلاً من"OPENAI_KEY":
{
"OpenAI": {
"ApiKey": "sk-votre-cle-api-ici",
"Model": "gpt-5-mini",
"Temperature": 1
}
}هذا الملف موجود بجانب الملف التنفيذي. بمجرد تثبيت AiSrt، يتم قراءته من %LOCALAPPDATA%\AiSrt\appsettings.json على Windows، ومن ~/.config/aisrt/appsettings.json على Linux وmacOS.
نصيحة: يمكنك أيضًا الاحتفاظ بالمفتاح في ملف .env بشكل منفصل. ضع "UseSecretEnvFile": true في appsettings.json، حدد مسار الملف، واكتب فيه السطر OPENAI_KEY=sk-votre-cle-api-ici. هذا ما أفعله في منزلي، فهذا يمنع نقل المفتاح في ملف تكوين يتم مشاركته بلا تفكير.
التكلفة: تفرض OpenAI رسومًا حسب الاستخدام، واستخدام الترجمة يكلف القليل جدًا. احسب بعض السنتات لفيلم كامل باستخدام gpt-5-mini.
أو: الترجمة مجانًا، في منزلك، باستخدام Ollama
لا ترغب في إنشاء حساب OpenAI، أو لا تريد أن تذهب ملفاتك إلى طرف ثالث؟ قم بتثبيت Ollama، الذي يعمل على نموذج لغة مباشرة على جهازك. إنه مجاني، غير محدود، ويعمل بدون اتصال بالإنترنت بمجرد تحميل النموذج.
ثلاث خطوات :
# 1. تثبيت Ollama من ollama.com، ثم بدء الخادم
ollama serve
# 2. تحميل النموذج الافتراضي
ollama pull gpt-oss:20b
# 3. الترجمة، محليًا
aisrt "film.srt" -t fr --provider ollamaخيار --provider ينطبق على الأمر الحالي. إذا كنت تريد أن يصبح Ollama محركك الافتراضي، ضع "Provider": "ollama" في قسم Translation من appsettings.json، ولن تضطر إلى التفكير في ذلك مرة أخرى.
أي نموذج تختار؟ لقد اختبرت العديد منها وكانت الإجابة مفاجئة لي. يجب أن يتبع النموذج المحلي تنسيق إخراج صارم جدًا، كتلة تترجم كتلة مرسلة، بالترتيب، دون تعليق. بعض النماذج لا تنجح في ذلك على الإطلاق: qwen2.5 أدرجت ملاحظات باللغة الصينية في وسط الترجمة، ثلاث مرات من ثلاث، حتى عندما تم تقييدها إلى أقصى حد. هذا غير قابل للاستخدام. llama3.1:8b تؤدي بشكل جيد جدًا وتعمل تقريبًا عشر مرات أسرع. gpt-oss:20b هو النموذج الذي أقدمه بشكل افتراضي، لأنه لم يفقد أي كتلة خلال تجاربي، لكنه أثقل بكثير (حوالي 14 جيجابايت) وأبطأ.
لنكن صادقين بشأن المقايضة: محليًا، هو مجاني ولكنه بطيء، والجودة أقل من ما يقدمه gpt-5-mini. لفيلم تشاهده الليلة، فإن واجهة برمجة التطبيقات OpenAI بسعر ثلاثة سنتات أكثر راحة. لمعالجة موسم كامل دون النظر إلى العداد، أو للمحتوى الحساس، يصبح Ollama مثيرًا للاهتمام.
شيء جعلني أضيع الوقت وأوفر عليكم: يتحدث AiSrt إلى Ollama من خلال واجهته البرمجية الأصلية ويطلب منه نافذة سياق كافية. إذا مررنا عبر طبقة التوافق OpenAI من Ollama، يتم تجاهل هذا الإعداد، ويقطع النموذج إجابته دون إخبارك، وتجد نفسك مع كتل مفقودة في الملف النهائي. يتم التعامل مع ذلك من أجلك، ولكن هذا يفسر لماذا تكون الحزم أصغر محليًا (10 كتل بدلاً من 40).
ما يحدث قبل أن يبدأ
تدور تحققان عند بدء التشغيل، وقد تجنبت بفضلهما الكثير من الإحباط.
الأولى تنظر إلى الملف الذي تقدمه. إذا كتبت aisrt film.mkv متجاهلاً الخيار، فإن AiSrt ستخبرك أنه فيديو وتوجهك إلى --extract أو --transcribe. سابقاً، كان يقرأ الملف الثنائي كنص ويرسله كما هو إلى الذكاء الاصطناعي، الذي كان يرد بخطأ غير مفهوم حول حجم الطلب. بالمناسبة، إذا أعطيته ترجمة ليست من .srt (مثل .ass، .vtt، أو .sub)، فإنه يقوم بتحويلها تلقائيًا باستخدام ffmpeg ثم يتابع الترجمة.
الثانية تتحقق من أن محرك الترجمة يستجيب، قبل إرسال أي شيء. مفتاح غير صالح، حساب بدون رصيد، خادم Ollama غير مشغل، نموذج غير محمل: كل حالة لها رسالتها وأمر إصلاحها. لا شيء أسوأ من بدء استخراج ستة مسارات، ثم الذهاب لتناول القهوة، والعودة لتجد ستة أخطاء متطابقة.
دليل الاستخدام
الصيغة العامة
aisrt [<ملف>] [خيارات]جميع الخيارات
| الخيار | الوصف | القيمة الافتراضية |
|---|---|---|
<file> | مسار الملف .srt للترجمة، أو ملف الفيديو مع --extract و --transcribe | لا شيء |
-t, --target <code> | رمز اللغة المستهدفة | fr |
-s, --source <code> | رمز اللغة المصدر | en |
--languages | يعرض 29 لغة ورموزها | لا شيء |
--streams | يُدرج مسارات الترجمة لفيديو، دون استخراج أي شيء | لا شيء |
--extract | يستخرج مسارات الترجمة من فيديو، بتحديد تفاعلي | لا شيء |
--transcribe | ينقل الصوت من فيديو إلى .srt باستخدام whisper.cpp | لا شيء |
-p, --provider <nom> | محرك الترجمة: openai أو ollama | الذي في appsettings.json |
--stream <n|all> | مع --extract: المسار الذي سيتم استخراجه، دون المرور عبر القائمة | لا شيء |
-tt, --translate-to <code> | مع --extract أو --transcribe: يترجم النتيجة دون أي استفسار | لا شيء |
-m, --model <nom> | مع --transcribe: نموذج whisper، دون المرور عبر القائمة | لا شيء |
-al, --audio-language <code> | مع --transcribe: اللغة المنطوقة في الفيديو | en |
-ni, --non-interactive | لا يطرح أي أسئلة، يطبق القيم الافتراضية | لا شيء |
--version | يعرض الإصدار | لا شيء |
-h, --help | يعرض المساعدة | لا شيء |
انتبه لعدم الخلط بين --streams بصيغة الجمع، التي تكتفي بإدراج المسارات، و --stream بصيغة المفرد، التي تختار واحدة للاستخراج. حرف واحد من الاختلاف، تأثيران مختلفان تمامًا. ترددت في إعادة التسمية، ثم قررت لا: الاسمان هما ما يأتي بشكل طبيعي.
1. ترجمة الترجمة النصية
الوظيفة الرئيسية، وهي التي أستخدمها أكثر:
# ترجمة من الإنجليزية إلى الفرنسية (السلوك الافتراضي)
aisrt "film.srt"
# ترجمة من الإنجليزية إلى الإسبانية
aisrt "film.srt" -s en -t es
# ترجمة من الفرنسية إلى اليابانية
aisrt "film.fr.srt" -s fr -t jaالملف المترجم يحمل رمز اللغة المستهدفة في اسمه: film.fr.srt، film.es.srt، وهكذا. الملف السابق، إذا كان موجودًا بالفعل، يتم نسخه إلى .bak.srt قبل إعادة الكتابة.
تبدأ الترجمة على دفعات من 40 كتلة، وكل دفعة تُكتب على القرص بمجرد عودتها. إليك ما يبدو عليه الأمر عندي على فيلم كامل:
598 كتلة مقسمة إلى 15 دفعة، وترى الوقت يتراكم على اليمين: حوالي دقيقة لكل دفعة، أقل بقليل من خمس عشرة دقيقة للفيلم بالكامل. إذا انقطع عند الدفعة 13، إعادة تشغيل نفس الأمر تعود من الدفعة 13.
2. سرد المسارات في فيديو
قبل الاستخراج، يمكننا النظر فيما يوجد في الملف:
aisrt --streams "film.mkv"ستحصل على جدول يحتوي على رقم التدفق، اللغة، الترميز ونوع كل مسار، نص أو صورة نقطية.
3. استخراج الترجمة النصية من فيديو
الكثير من ملفات MKV و MP4 تحتوي بالفعل على ترجمات. من الأفضل استردادها بدلاً من إعادة تصنيعها:
aisrt --extract "film.mkv"تظهر لك قائمة لتختار مسارًا، أو استخراج كل شيء دفعة واحدة. يتم التعامل مع تنسيقات النص (SRT، ASS، SSA، WebVTT، mov_text). الترجمات النصية النقطية (PGS، DVD، DVB) هي في الواقع صور: AiSrt تحددها وتخبرك بوضوح، بدلاً من تجاهلها في صمت. بمجرد الانتهاء من الاستخراج، يقترح ترجمة كل مسار على الفور، مع لغة المسار كلغة بداية.
ملاحظة: يتم تنزيل ffmpeg تلقائيًا على Windows وLinux إذا لم يكن موجودًا بالفعل على جهازك. على macOS، قم بتثبيته باستخدام brew install ffmpeg.
4. نسخ الصوت إلى ترجمات نصية
لا توجد ترجمات على الإطلاق في الفيديو؟ نحن نصنعها، باستخدام whisper.cpp :
aisrt --transcribe "film.mkv"عند التشغيل الأول، يطلب منك AiSrt اختيار نموذج التعرف على الصوت الذي تريد استخدامه :
- base.en، حوالي 150 ميغابايت: سريع، دقيق في اللغة الإنجليزية الواضحة
- small.en، حوالي 500 ميغابايت: الحل الجيد
- medium.en، حوالي 1.5 جيجابايت: أكثر دقة، أبطأ
- base، small، medium: نفس الأحجام، ولكن متعددة اللغات
- large-v3، حوالي 3 جيجابايت: الأكثر دقة، متعدد اللغات، والأبطأ
يمكنك تخطي هذه القائمة باستخدام --model إذا كنت تعرف بالفعل ما تريده.
نسخ شيء آخر غير الإنجليزية
بشكل افتراضي، يستمع whisper إلى الإنجليزية. لفيديو بلغة أخرى، يجب أن تخبره، وتختار نموذجًا متعدد اللغات :
aisrt --transcribe "film.mkv" --audio-language fr --model baseالملف الناتج يسمى film.fr.srt، وإذا تابعت بترجمة، يعرف AiSrt أن نقطة البداية هي الفرنسية.
فخ كنت أفكر فيه لبعض الوقت: النماذج التي تنتهي أسماؤها بـ .en تم تدريبها على الإنجليزية فقط. أعطهم صوتًا فرنسيًا ولن يحتجوا، بل سيعيدون لك الفونيمات الإنجليزية بكل ثقة. هذه هي النتائج التي لا تكتشف إلا من خلال قراءة الملف. لذلك يرفض AiSrt هذا المزيج قبل بدء أي شيء، ويعطيك قائمة بالنماذج المناسبة.
على Windows و Linux، يقوم AiSrt بتنزيل whisper بمفرده. على Windows، يكتشف أيضًا بطاقة NVIDIA ويأخذ نسخة CUDA، التي هي أسرع بكثير.
على macOS، يجب عليك اتخاذ خطوة إضافية. لا ينشر مشروع whisper.cpp أي تنفيذ سطر أوامر، بل إطار عمل مخصص لمطوري Apple: لذلك لا يوجد شيء للتنزيل تلقائيًا. الحل يكمن في أمر واحد :
brew install whisper-cpp ffmpegسيقوم AiSrt بعد ذلك بالبحث عن الأدوات المثبتة على نظامك واستخدامها كما هي. ليس لدي جهاز Mac تحت تصرفي لتجربة هذا السيناريو من البداية إلى النهاية، لذا إذا كنت على macOS وواجهت مشكلة، اكتب لي، فهذا يهمني.
تتابع كامل، من الفيديو الخام إلى الترجمات المترجمة
# الخطوة 1: نسخ الصوت الإنجليزي
aisrt --transcribe "conference.mp4"
# يعطي conference.en.srt
# الخطوة 2: الترجمة إلى الفرنسية
aisrt "conference.en.srt" -s en -t fr
# يعطي conference.fr.srt
# الخطوة 3: والترجمة إلى الإسبانية أيضًا
aisrt "conference.en.srt" -s en -t es
# يعطي conference.es.srtثلاثة أوامر، ويصبح الفيديو الذي لا يحتوي على ترجمات متاحًا بثلاث لغات.
تفصيل صغير يهم إذا كنت تقوم بكتابة كل هذا: AiSrt ترجع 0 عندما تسير الأمور بشكل جيد، 1 في حالة الفشل، و 2 إذا قمت بإلغاء الأمر بنفسك. ما تم كتابته بالفعل على القرص يبقى هناك، وستستأنف الترجمة عند الإطلاق التالي.
أتمتة كل شيء، دون سؤال واحد
الأوامر الثلاثة أعلاه تطرح أسئلة: أي مسار لاستخراج، أي نموذج للاستخدام، هل يجب الترجمة خلفه. مفيدة عندما تكون أمام الشاشة، ولكن أقل بكثير عندما تريد معالجة موسم كامل أثناء الليل.
أربع خيارات تحل محلها، وسلسلة الأوامر الكاملة تصبح على سطر واحد:
# استخراج المسار 2، وترجمته إلى العربية، دون أن تسأل شيئًا
aisrt --extract "episode.mkv" --stream 2 --translate-to ar --non-interactiveأو لمجلد كامل، على نظام ويندوز:
Get-ChildItem *.mkv | ForEach-Object {
aisrt --extract $_.FullName --stream 1 --translate-to ar --non-interactive
}--non-interactive لا يخمن شيئًا: كل سؤال يأخذ قيمته الافتراضية، ويخبرك بأي قيمة أخذها وأي خيار كان سيسمح باختيار آخر. من ناحية أخرى، فإن القيمة التي تقدمها بشكل صريح لا تُهمل أبدًا في صمت. إذا طلبت المسار 7 من ملف لا يحتوي سوى على اثنين، سيتوقف ويعرض لك المسارات المتاحة، بدلاً من استخراج كل شيء وكأن شيئًا لم يكن. بالنسبة للسكريبت، فإن الخطأ الواضح أفضل من نتيجة غير متوقعة.
وإذا ضغطت على Ctrl+C في هذا الوضع، سيتوقف على الفور، دون طلب تأكيد. لن يكون هناك أحد للرد، وسؤال بلا إجابة سيعطل السكريبت إلى الأبد.
اللغات المدعومة
| كود | لغة | كود | لغة | كود | لغة |
|---|---|---|---|---|---|
ar | العربية | cs | التشيكية | da | الدنماركية |
de | الألمانية | el | اليونانية | en | الإنجليزية |
es | الإسبانية | fi | الفنلندية | fr | الفرنسية |
he | العبرية | hi | الهندية | hu | المجرية |
id | الإندونيسية | it | الإيطالية | ja | اليابانية |
ko | الكورية | ms | الملايوية | nl | الهولندية |
no | النرويجية | pl | البولندية | pt | البرتغالية |
ro | الرومانية | ru | الروسية | sv | السويدية |
th | التايلاندية | tr | التركية | uk | الأوكرانية |
vi | الفيتنامية | zh | الصينية |
اكتب aisrt --languages لاستعادة هذه القائمة في أي وقت.
إعدادات متقدمة
كل شيء يتم ضبطه في appsettings.json :
- النموذج، مع المفتاح
Model، إذا كنت تفضل نموذج OpenAI آخر غيرgpt-5-mini. - حجم الدفعات، مع
BatchSize: عدد الكتل المرسلة لكل طلب، 40 بشكل افتراضي. - طول الأسطر، مع
MaxLineLength: بعد 50 حرفًا، يقوم AiSrt بقص السطر ليظل قابلًا للقراءة على الشاشة. - مهلة الشبكة، مع
RequestTimeoutMinutes: 10 دقائق بشكل افتراضي. إذا كنت تزيد منBatchSize، قم بزيادته أيضًا. - التعليمات المعطاة للذكاء الاصطناعي، مع
SystemPromptوUserInstructionPrompt. هنا تصبح الأمور مثيرة للاهتمام: يمكنك تعديل الترجمة لتناسب سياق قانوني أو طبي أو ديني أو تقني من خلال إعادة كتابة هذين النصين. لقد قمت عمداً بإخراجهما من الكود لهذا السبب. - درجة الحرارة، بين 0.3 لترجمة حرفية جدًا و1.5 لترجمة أكثر حرية. 1 بشكل افتراضي.
- محرك الترجمة، مع
Providerفي قسمTranslation:openaiأوollama. هذا هو الإعداد الذي ينطبق على جميع أوامرك، حيث--providerينطبق فقط على الأمر الحالي. - إعدادات Ollama، في قسمها الخاص: عنوان الخادم مع
BaseUrl، النموذج معModel، حجم الدفعات معBatchSize، وحجم نافذة السياق معNumCtx. إذا كنت تزيد من الأولى، فتذكر زيادة الثانية.
لمن؟
- الأشخاص الصم وضعاف السمع، الذين يحتاجون إلى ترجمات للوصول إلى مقاطع الفيديو يوميًا.
- المحتوى المبدعين الذين يريدون الوصول إلى جمهور يتجاوز لغتهم.
- المعلمون والمدربون الذين تستحق دوراتهم التدريبية عبر الإنترنت أفضل من الترجمة التلقائية التقريبية.
- المترجمون المحترفون، لتخليص مسودة أولية في بضع دقائق.
- عشاق السينما والمسلسلات، بالطبع.
- الجمعيات والمنظمات غير الحكومية التي تنشر مقاطع الفيديو على الصعيد الدولي.
AiSrt مجاني ومفتوح المصدر وجاهز للاستخدام.
قم بتنزيله، جربه، واجعل مقاطع الفيديو الخاصة بك متاحة للجميع.

No comments yet.