Перейти к основному содержимому
SubtitleMatrix

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

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

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

Параметры

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

VobSub делит одну дорожку субтитров на два файла, и нужны оба: файл .sub держит картинки — цепочку пакетов MPEG program stream, каждый несёт растровое изображение, сжатое двухбитным кодом длин серий. Файл .idx держит всё остальное: палитру из шестнадцати цветов, размер кадра и по строке на субтитр с временем начала и смещением в байтах внутри .sub, где начинается его картинка.

Перетащите только .sub — и узнать, сколько субтитров в дорожке, неоткуда; перетащите только .idx — и читать будет нечего. Страница принимает пару и пишет .srt, причём порядок строк в индексе не считается порядком показа: записи сортируются по времени, потому что у необычного диска смещения могут идти не монотонно. Времена берутся из .idx, единственного места, где они существуют в пригодном виде: реплика кончается там, где начинается следующая, последней даются две секунды, и список потерь это фиксирует, а текст получается распознаванием, то есть прочтением, а не перепечаткой: DVD-субтитры набирали мелкими растровыми шрифтами с курсивом для закадровых голосов, а распознаватель не знает, что наклонённое слово — то же самое слово, поэтому файл нужно вычитывать.

Частые вопросы

Почему этой странице нужны два файла, когда остальным инструментам хватает одного?

Потому что VobSub хранит одну дорожку в двух файлах по своему устройству, а не потому, что инструмент захотел два входа. В .sub лежат картинки; в .idx лежат палитра из шестнадцати цветов, размер кадра и смещение каждой картинки вместе со временем начала. Ни один файл в одиночку не отвечает на вопрос «сколько здесь субтитров и что в них сказано». Если у вас .sub без .idx, эту пару когда-то разделили, и индекс нужно восстановить из исходного диска, прежде чем распознавание станет возможным.

На что указывают числа filepos в файле .idx?

На смещение в байтах внутри .sub, к началу пакета MPEG program stream, идентификатор потока которого помечает его как приватный — такие DVD-плееры используют для субтитров. Это смещение не номер субтитра и на необычном диске не обязательно возрастает вместе со временем, поэтому страница сортирует записи по времени, а не доверяет порядку строк в файле.

Почему некоторые строки выходят с неверными буквами, но правильной длины?

Потому что и палитра, и формы берутся из картинки, а распознавание различает формы фиксированного размера. DVD-субтитры часто набирали мелким, сильно наклонённым или очень жирным шрифтом; слово курсивом — обычная жертва, поскольку наклонённая версия буквы для человека остаётся той же буквой, а для распознавателя это другая форма. Если длины совпадают, а буквы нет, лечится это вычиткой, а не другим инструментом.

Сохраняется ли положение субтитра на экране в SRT?

Нет, и деваться ему некуда. VobSub хранит положение как прямоугольник области показа в двенадцатибитных координатах внутри каждого пакета, а в SRT синтаксиса позиционирования нет вовсе. Страница использует прямоугольник, чтобы понять, где чернила, и это помогает обрезке перед распознаванием, а затем отбрасывает его. Если плееру нужно позиционирование, его умеет нести ASS; SRT с маркерами положения — соглашение, которое одни плееры соблюдают, а другие печатают буквально.

Инструмент требует .idx, а у меня только .sub. Можно ли восстановить индекс?

Не из одного .sub и не надёжно из картинок. Смещения в принципе можно найти, сканируя приватные потоки, но времена восстановить нельзя: они живут в .idx и больше нигде в паре. Восстановление индекса означает вернуться к диску или VOB-файлу, из которого пару извлекли, либо взять исходный .idx, если он ещё лежит рядом с другой дорожкой. Придуманные времена дали бы файл, который выглядит правильным и уезжает относительно видео, а это хуже, чем никакого файла.

Отправляется ли пара файлов куда-нибудь, пока её читают?

Нет. Оба файла читаются в память во вкладке, декодируются здесь и распознаются здесь. Единственная загрузка — распознаватель текста, отдаваемый с этого сайта и кэшируемый браузером после первого раза. Можно смотреть на панель Network, пока обрабатывается пара: ни один запрос не несёт ни одного из файлов. Для VobSub это особенно важно, потому что такие файлы обычно берутся с диска, которым человек владеет, и это ровно тот материал, который не следует передавать сервису конвертации.

Похожие инструменты