مدلهای زبانی بزرگ (LLMs) بهعنوان ابزارهایی قدرتمند برای رونویسی و ترجمهی زیرنویسها در زمانی بیسابقه ظهور کردهاند. هرچند که هنوز به اندازهای کامل نیستند که بتوانند بهطور کامل جایگزین زیرنویسگذاری انسانی شوند—بهویژه زمانی که دقت مطلق اهمیت دارد—اما LLMs یک جایگزین بسیار سریع و مقرونبهصرفه ارائه میدهند.
چه بخواهید در مراحل اولیه زیرنویس اضافه کنید تا نسخهی نهایی دستی خود را آماده کنید، و چه به دنبال روشی اقتصادی برای در دسترس قرار دادن محتوای رسانهای خود باشید، مدلهای زبانی بزرگ میتوانند یک تغییر اساسی ایجاد کنند.
پیشرفتهای جدید در مدلهای زبانی بزرگ
در پست قبلی، دربارهی نحوهی ترجمهی زیرنویسها با ChatGPT نوشتم. اکنون در سال ۲۰۲۵ هستیم و پیشرفتهای چشمگیری در حوزهی مدلهای زبانی بزرگ رخ داده است. مدلهایی مانند o1 از OpenAI، Claude 3.5 Sonnet، و Gemini 2.0 از گوگل وارد بازار شدهاند و بهبودهای قابل توجهی در زمینهی اندازهی پنجرهی متنی، قابلیتهای چندرسانهای (multimodal)، و توانایی استدلال ارائه کردهاند.
این پیشرفتها به ما امکان میدهند که زیرنویسها را مستقیماً از یک ویدئو با کیفیت بالا ترجمه کنیم. بنابراین، تصمیم گرفتم که این پست تکمیلی را بنویسم.
در این مقاله، نحوهی رونویسی و ترجمهی زیرنویسها از یک فایل ویدئویی با استفاده از API مدل Gemini و زبان برنامهنویسی Python را نشان خواهم داد.
📌 اگر به جزئیات فنی علاقه ندارید و فقط به یک ابزار برای رونویسی و ترجمهی زیرنویس از جریان ویدیویی HLS نیاز دارید، میتوانید از ابزار من در لینک زیر استفاده کنید:
زیرنویس چیست؟
زیرنویسها نسخهی متنی دیالوگهای یک ویدئو هستند و به افراد ناشنوا یا کمشنوا کمک میکنند تا محتوای ویدئویی را درک کنند. به عنوان نمونه، یک فایل زیرنویس با فرمت SRT به شکل زیر است:
۱ ۰۰:۰۰:۰۰,۰۰۰ --> 00:00:05,000 Hello, how are you? ۲ ۰۰:۰۰:۰۵,۰۰۰ --> 00:00:10,000 I'm fine, thank you.
Gemini 2.0 Flash Thinking Mode
ما از مدل پیشرفتهی Gemini 2.0 Flash از گوگل استفاده میکنیم که یک سیستم چندرسانهای (Multimodal) است و قابلیت پردازش متن، تصویر و صدا را دارد.
یکی از قابلیتهای برجستهی این مدل، توانایی رونویسی و ترجمهی زیرنویس در یک مرحله، مستقیماً از یک فایل صوتی است. این روش دقت و کیفیت زیرنویسها را به میزان قابل توجهی افزایش میدهد و نیاز به تبدیل جداگانهی زیرنویس به زبانهای مختلف را از بین میبرد.
📌 Thinking Mode کیفیت زیرنویسها را باز هم بهتر میکند.
در مقایسهی بین زیرنویسهای تولیدشده با Gemini 2.0 Flash و Gemini 2.0 Flash Thinking Mode، مشاهده شد که مدل معمولی هنوز مشکلاتی در همگامسازی (syncing) داشت، در حالی که Thinking Mode زیرنویسهایی تقریباً بینقص از نظر هماهنگی با صدا تولید میکرد.
📌 قیمتگذاری:
Gemini 2.0 Flash در حال حاضر تا سقف ۱۵۰۰ درخواست رایگان ارائه میدهد، اما این شرایط ممکن است پس از خروج از نسخهی بتا تغییر کند.
تهیه زیرنویسها
میتوانید این قابلیت را در Google AI Studio امتحان کنید. تنها کافی است یک فایل صوتی آپلود کرده و از مدل Gemini 2.0 Flash Thinking Mode برای رونویسی استفاده کنید.
💡 فرمت پیشنهادی درخواست (Prompt):
شما یک آوانویس (transcriber) حرفهای هستید.
شما باید یک فایل صوتی را دریافت کرده و زیرنویس آن را به زبان فارسی ارائه دهید.
نتیجه باید یک فایل زیرنویس با فرمت استاندارد SRT باشد.📌 **الزامات حیاتی:**
1. خروجی باید تنها شامل محتوای SRT باشد، بدون متن اضافی.
2. هر زمانبندی باید در فرمت معتبر SRT باشد: `۰۰:۰۰:۰۰,۰۰۰ –> 00:00:00,000`.
3. هر بخش زیرنویس باید شامل ۱-۲ خط و حداکثر ۵ ثانیه باشد.
4. هر ورودی زیرنویس باید شامل موارد زیر باشد:
– یک شمارهی ترتیبی
– یک خط زمانبندی
– ۱-۲ خط متن
– یک خط خالی بین ورودیها
5. فایل SRT باید کل فایل صوتی را پوشش دهد و هیچ بخشی را از قلم نیندازد.
6. زبان فایل خروجی باید مطابق با زبان هدف باشد.📌 **راهنمای زمانبندی:**
– اطمینان حاصل کنید که هیچ همپوشانی (overlap) در زمانها وجود ندارد.
– همیشه از فرمت کامل زمانبندی استفاده کنید (۰۰:۰۰:۰۰,۰۰۰).
– زمانها باید دقیقاً با گفتار هماهنگ باشند.📌 **راهنمای متن:**
– از علائم نگارشی و حروف بزرگ صحیح استفاده کنید.
– کلمات زائد مانند “ام”، “اه”، “مثلاً”، و … را حذف کنید.
– لکنتها مانند “من من من” یا “اه اه اه” را اصلاح کنید.
– الفاظ نامناسب را با معادلهای ملایمتر جایگزین کنید.
– اگر صداهای محیطی مهمی وجود دارند، آنها را داخل **[براکت]** مشخص کنید.
You're a professional transcriber. You take an audio file and MUST output the transcription in English. You will return an accurate, high-quality SubRip Subtitle (SRT) file.CRITICAL REQUIREMENTS: ۱. You MUST output ONLY the SRT content with no additional text or markdown. ۲. Every timestamp MUST be in valid SRT format: 00:00:00,000 --> 00:00:00,000. ۳. Each segment should be 1-2 lines and maximum 5 seconds. Refer to the example SRT file for reference. ۴. Every subtitle entry MUST have: - A sequential number - A timestamp line - ۱-۲ lines of text - A blank line between entries. ۵. The SRT file MUST cover the entire input audio file without missing any content. ۶. The SRT file MUST be in the target language. Timing Guidelines: - Ensure no timestamp overlaps. - Always use full timestamp format (00:00:00,000). - Ensure the timing aligns closely with the spoken words for synchronization. - Make sure the subtitles cover the entire audio file. <Text Guidelines: - Use proper punctuation and capitalization. - Keep original meaning but clean up filler words like "um", "uh", "like", "you know", etc. - Clean up stutters like "I I I" or "uh uh uh". - Replace profanity with mild alternatives. - Include [sound effects] in brackets if applicable.
پایپلاین (Pipeline) پردازش خودکار زیرنویسها
عالی است! اما باید توجه داشت که حداکثر طول فایل صوتی قابل پردازش در Gemini 2.0 Flash حدود ۸ تا ۱۰ دقیقه است، زیرا این مدل محدودیت خروجی تقریباً ۸۰۰۰ توکن دارد.
🔹 چگونه فایلهای صوتی طولانیتر را پردازش کنیم؟
برای رونویسی فایلهای صوتی طولانی، باید آنها را به بخشهای کوچکتر تقسیم کنیم. از آنجا که انجام این کار بهصورت دستی زمانبر و خستهکننده است، بهتر است از یک فرآیند خودکار با استفاده از زبان برنامهنویسی Python استفاده کنیم.
مراحل پردازش پیشنهادی:
۱️⃣ استخراج صدا 🎵
اگر فایل شما یک ویدئو است، ابتدا باید صدا را استخراج کنید. این کار را میتوان با استفاده از ابزارهایی مانند ffmpeg انجام داد.
۲️⃣ تقسیم صدا به بخشهای کوچکتر ✂
فایلهای صوتی طولانی را به بخشهای ۸ تا ۱۰ دقیقهای تقسیم کنید تا با محدودیت Gemini 2.0 Flash سازگار باشد.
۳️⃣ رونویسی هر بخش ✍
هر بخش صوتی را جداگانه به مدل Gemini 2.0 Flash Thinking Mode ارسال کنید تا زیرنویسهای اولیه را دریافت کنید.
۴️⃣ اعتبارسنجی زیرنویسها ✅
بررسی کنید که همهی بخشهای زیرنویس از نظر زمانبندی صحیح باشند و محتوای آنها بدون خطا باشد.
۵️⃣ ترکیب زیرنویسهای نهایی 📜
پس از بررسی و ویرایش هر بخش، همهی زیرنویسها را در یک فایل SRT واحد ترکیب کنید تا نسخهی نهایی آماده شود.
📌 اجرای این فرآیند در پایتون
برای خودکارسازی این مراحل، میتوان از کتابخانههای ffmpeg برای استخراج صدا، pydub برای تقسیم صدا، و OpenAI API یا Google Gemini API برای رونویسی و ترجمه استفاده کرد.
🔗 در ادامه، کد پایتون مربوط به این پایپلاین را بررسی خواهیم کرد… 🚀
متن کامل: +