Перейти до основного вмісту
SubtitleMatrix

Конвертувати SUB/IDX (VobSub) у SRT

МедіавхідРастрові субтитри (PGS / VobSub)

Перший запуск завантажує читач тексту — близько 4 МБ плюс мовну модель, віддається цим сайтом і після цього кешується браузером. Нічого не надсилається, а результат читає машина: вичитайте його, перш ніж покладатися на нього.

Параметри

Растровий субтитр — це зображення тексту, тож слова треба вичитати з нього назад. Скажіть читачеві, якою мовою написані субтитри — список охоплює всі мови, якими публікується цей сайт. Російські субтитри, прочитані англійською моделлю, виходять шумом, а не російською. Завантажується лише обрана модель (інші — ніколи), тож перемикання коштує одного завантаження на мову, яке потім кешується.

VobSub розкладає одну доріжку субтитрів на два файли, і потрібні обидва. Файл .sub тримає зображення: ланцюг пакетів MPEG program stream, кожен із зображенням, стисненим двобітовим кодуванням довжин серій. Файл .idx тримає все інше: шістнадцятиколірну палітру, розмір кадру й по рядку на кожен субтитр із часом початку та зсувом у байтах усередині .sub, де починається його зображення. Віддайте лише .sub — і не буде способу дізнатися, скільки субтитрів узагалі є; віддайте лише .idx — і не буде зображення для читання. Ця сторінка бере пару й пише .srt.

Кожен пакет знаходять за цим зсувом у байтах, тому індекс — не зручність, а карта. Усередині пакета два слова заголовка дають розмір і позицію керуючої послідовності; послідовність задає область показу, вибирає, на які чотири записи палітри посилаються пікселі, і вказує на стиснене зображення. Декодер проходить кодування довжин серій двічі — раз для парних рядків, раз для непарних, — бо VobSub зберігає два поля черезрядкового кадру окремо. Через цю деталь наївний декодер дає картинку, у якій кожен другий рядок відсутній.

Час беруть з .idx, і це єдине місце, де він існує у придатній формі. Репліка закінчується там, де починається наступна; останній репліці дають дві секунди, і список втрат це фіксує. Субтитри, чиї зображення не дають читабельного тексту, вилучають і рахують, а не пишуть порожніми рядками.

Сам текст походить з OCR, тобто це прочитання, а не транскрипція. Саме тут субтитри DVD найскладніші: їх робили дрібними растровими шрифтами з курсивом для голосів за кадром, а розпізнавач не знає, що похилене слово — те саме слово. Вичитайте файл. Вибирайте мову, якою написані субтитри: модель задають на сторінці, завантажують один раз і кешують у браузері. Нічого не завантажується: пара розбирається й розпізнається у цій вкладці, а єдині мережеві запити — за власними файлами розпізнавача, які віддає сайт.

Часті запитання

Чому цій сторінці потрібні два файли, коли іншим інструментам досить одного?

Бо VobSub за задумом зберігає одну доріжку в двох файлах, а не тому, що інструмент хоче два входи. .sub тримає зображення; .idx тримає шістнадцятиколірну палітру, розмір кадру й зсув кожного зображення разом із часом початку. Жоден файл окремо не відповідає на питання «скільки тут субтитрів і що в них написано». Якщо у вас є .sub без .idx, цю пару колись розділили, і індекс треба відновити з вихідного диска, перш ніж OCR стане можливим.

На що вказують числа filepos у файлі .idx?

На зсув у байтах усередині .sub, на початок пакета MPEG program stream, чий ідентифікатор потоку позначає його як приватний, — такий використовують плеєри DVD для субтитрів. Зсув — не номер субтитру, і на незвичайному диску він не обов’язково зростає разом із часом, тому сторінка сортує записи за часом, а не довіряє порядку рядків у файлі.

Чому деякі рядки виходять із неправильними літерами, але правильної довжини?

Бо і палітра, і форми походять із зображення, а OCR розрізняє форми фіксованого розміру. Субтитри DVD часто робили дрібним, сильно похиленим або дуже жирним шрифтом; слово курсивом — для діалогу за кадром і текстів пісень — звичайна жертва, бо похилений варіант літери для людини не інша літера, а для розпізнавача інша форма. Якщо довжини збігаються, а літери ні, виправлення — вичитування, а не інший інструмент.

Чи переживає позиція субтитру на екрані перетворення в SRT?

Ні, і їй нема куди подітися. VobSub зберігає позицію як прямокутник області показу в дванадцятибітових координатах усередині кожного пакета, а SRT не має синтаксису позиціювання взагалі. Сторінка використовує прямокутник, щоб знати, де фарба, — це допомагає OCR правильно обрізати, — а потім відкидає його. Якщо плеєру потрібні позиційовані субтитри, інформацію може нести ASS; SRT із маркерами позиції — це домовленість, яку одні плеєри поважають, а інші друкують буквально.

Інструмент каже, що потрібен .idx, а в мене лише .sub. Чи можна відновити індекс?

З самого .sub — ні, і з зображень — ненадійно. Зсуви в принципі можна знайти, скануючи приватні потоки, але часи відновити неможливо: вони живуть у .idx і більше ніде в цій парі. Відновлення індексу означає повернутися до диска або VOB-файлу, з якого пару витягли, чи взяти початковий .idx, якщо він ще лежить поруч з іншою доріжкою. Вгадування часів дало б файл, який виглядає правильним і сповзає щодо відео, — це гірше за відсутність файлу.

Чи надсилається пара файлів кудись, поки її читають?

Ні. Обидва файли читають у пам’ять у цій вкладці, декодують тут і розпізнають тут. Єдине завантаження — текстовий розпізнавач, який віддає сайт і кешує браузер. Можна стежити за панеллю Network, поки обробляється пара: жоден запит не несе ані .idx, ані .sub. Для VobSub це особливо важливо, бо ці файли зазвичай походять із диска, який користувач має, і є саме тим матеріалом, який не варто віддавати сервісу перетворення.

Споріднені інструменти