رفتن به محتوای اصلی
بازگشت به وبلاگ

راهنماهای هوش مصنوعی

تبدیل SRT به VTT؛ زمان‌ها را عوض کنیم، متن فارسی را حفظ کنیم

یک مبدل محدود Python برای SRT متن‌ساده و خروجی VTT فارسی؛ سربرگ، زمان، ویرگول متن و خطاهای ردشده را با نمونهٔ واقعی فایل کنترل کنید.

تبدیل SRT به VTT با عوض‌کردن پسوند تمام نمی‌شود. سربرگ، زمان‌ها و محدودهٔ نشانه‌گذاری باید با قالب مقصد سازگار باشند. این راهنما یک زیرمجموعهٔ صریحِ SRT با متن ساده را به WebVTT تبدیل می‌کند؛ هیچ پخش صوت، ترجمه یا باززمان‌بندی انجام نمی‌دهد.

چه چیزی عوض می‌شود و چه چیزی حفظ می‌شود؟

جزءورودی تمرینخروجی
سربرگنداردWEBVTT و خط خالی
زمان شروع نمونه00:00:01,25000:00:01.250
شناسهٔ cueشماره۱ و۲همان شناسه‌ها
جملهٔ فارسیکتاب، روی میز آبی است.عین جمله و ویرگول فارسی

ویرگولِ جداکنندهٔ میلی‌ثانیه در خط زمان به نقطه تبدیل می‌شود؛ جایگزینی سراسریِ ویرگول در کل فایل اشتباه است. سطرهای جمله و مقادیر زمانی حفظ می‌شوند. برای حفظ معنای متنِ ساده در نمایش VTT، هر & در payload به & کدگذاری می‌شود؛ بنابراین متنِ ورودیِ دارای رشتهٔ لفظی &، در منبع VTT به & تبدیل می‌شود تا یک بار خواندن character reference همان رشتهٔ اصلی را نشان دهد. بایتِ منبع و متنِ نمایشی را در این بخش یکی نگیرید. این نمونه، شناسهٔ عددی SRT را به شناسهٔ اختیاری cue در VTT منتقل می‌کند.

دو cue کاملِ ورودی

1
00:00:01,250 --> 00:00:03,000
کتاب، روی میز آبی است.

2
00:00:03,000 --> 00:00:05,500
لطفاً صفحهٔ دوم را باز کنید.

جمله‌ها و زمان‌ها ساختهٔ تحریریه‌اند؛ رسانهٔ واقعیِ متناظر ندارند. cue اول۱٫۷۵ثانیه و دومی۲٫۵ثانیه است. فایل خروجیِ قابل دریافت، سربرگ و نقطهٔ زمان دارد. برای ساخت اولیهٔ قالب، راهنمای ساخت SRT فارسی را ببینید؛ این مقاله روی تبدیل ساختاریِ خروجی موجود تمرکز دارد.

قرارداد مبدل را محدود نگه داشته‌ایم

کد فقط شناسهٔ عددی، زمان کامل HH:MM:SS,mmm، پیکان مشخص و متن سادهٔ غیرخالی را می‌پذیرد. دقیقه و ثانیه بین۰۰و۵۹، پایان بعد از شروع و شروع‌ها مرتب‌اند. ورودی CRLF و BOM ابتدای متن را هم کنترل کرده‌ایم. شمارهٔ تکراری در این قرارداد رد می‌شود؛ این انتخابِ مبدل است، نه ادعای ممنوعیت همهٔ شناسه‌های تکراری در استاندارد WebVTT.

برچسب‌های ظاهری، علامت‌های < و >، پیکان داخل متن و تنظیم جایگاهِ پس از زمان پذیرفته نمی‌شوند؛ کد آن‌ها را مخفیانه حذف نمی‌کند. اگر فایل شما رنگ، فونت، موقعیت یا نشانه‌گذاری دارد، به مبدلی با قرارداد روشن برای همان ویژگی نیاز دارید. این فایل همهٔ گونه‌های SRT یا WebVTT را پوشش نمی‌دهد.

هم‌پوشانی با زمان نامعتبر یکی نیست

مبدل شروع هر cue را با شروع قبلی مقایسه می‌کند؛ شرط پایان قبلی پیش از شروع بعدی نگذاشته‌ایم. در زیرنویس WebVTT، بازه‌ها می‌توانند هم‌پوشانی داشته باشند؛ برای فصل‌ها محدودیت دیگری مطرح است. با این حال، هم‌پوشانیِ مجازِ ساختاری هنوز ممکن است از نظر خوانایی یا نمایش در پخش‌کننده مناسب نباشد.

چگونه کد را آزمایش کردیم؟

خروجی دو cue با سربرگ و زمان‌ها کنترل شده و جملهٔ دارای ویرگول فارسی عیناً باقی مانده است. سه ورودیِ آمپرسند خام، رشتهٔ لفظی &amp; و رشتهٔ لفظی &#65; هم کنترل شده‌اند که پس از کدگذاری و یک بار بازخوانیِ reference متن اصلی را بدهند؛ این آزمون محلی با html.unescape انجام شده، نه پخش مرورگر. چهار ورودیِ پایانِ پیش از شروع، دقیقه۶۱، نشانه‌گذاری ظاهری و شناسهٔ تکراری واقعاً رد شدند. این آزمون‌ها در Python انجام شده‌اند؛ پخش واقعی زیرنویس کنار رسانه یا تأیید همهٔ مرورگرها ادعا نشده است.

برای فایل خودتان، نسخهٔ اصلی را نگه دارید، کد را فقط روی متنی با همین قرارداد اجرا کنید و خروجی را با کدگذاری UTF-8 و پسوند واقعی .vtt ذخیره کنید. هنگام تحویل وب، MIME مربوط text/vtt است. سپس ابتدا، میانه و پایانِ همان نسخهٔ رسانه را در ابزار مقصد ببینید؛ تبدیل قالب، خطای همگامی را اصلاح نمی‌کند.

قدم بعد

اتصال VTT به ویدئوی HTML مرحلهٔ نمایش در سایت را توضیح می‌دهد. اگر به تولید متن زمان‌دار از صوت نیاز دارید، مقصد SRT یا VTT را در درخواست اپرانگار مشخص کنید تا قالب قابل تحویل تأیید شود؛ مبدل این صفحه به سرویس اپرا متصل نیست.

فایل تمرین و منبع

مبدل محدودِ متن ساده؛ بدون حدسِ سبک و تنظیم جایگاه · خروجی WebVTT همان دو جملهٔ آموزشی

منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثال‌ها و فایل‌های این راهنما آموزشی و ساختهٔ تحریریه‌اند.

برای این نیاز، کدام خدمت مناسب‌تر است؟

تماس و منشی، چت سایت و تحلیل مکالمه سه مسیر متفاوت‌اند. ابتدا خدمت متناسب نیازتان را انتخاب کنید.

انتخاب میان سه خدمتراهنمای شروع با تیم اپرا

برآورد هزینه