Сканировать субтитры на структурные проблемы
Или вставьте текст субтитров
Параметры
Сколько миллисекунд пустого экрана допускается между концом одной реплики и началом следующей. Промежуток измеряется от самого дальнего достигнутого конца, а не от непосредственно предыдущей реплики, поэтому длинная реплика под несколькими короткими не создаёт промежутка, которого не было на экране. Что делает число, зависит от страницы: закрытие промежутков закрывает всё шире него (0 — обычное значение, означающее точную стыковку), а страница проверки перечисляет все отрезки шире него и файл не трогает. Всё на числе или меньше в любом случае остаётся как есть.
Длительность — 1000, 1s, 1.5s и 00:00:01,000 подойдут. Это граница между субтитром, который висит достаточно долго, чтобы его прочитали, и тем, который мелькает. Что происходит по другую сторону, зависит от страницы: закрытие промежутков держит короткую реплику на экране дольше, забирая добавленное время из следующего промежутка, чтобы ни одна реплика не накрыла слова следующей (последняя реплика в файле просто удлиняется), а страница проверки перечисляет все реплики короче границы и файл не трогает.
Одно поле, два варианта, и у каждого своя страница. Реплика совсем без текста — субтитр, который занимает таймлайн, ничего не показывая; нет такого прочтения файла, где это правильно, поэтому отчёт помечает её ошибкой. Реплика без букв — строка, в которой что-то есть, но нет слов: ноты вместо песни, голое число, три тире. В субтитрах для вещания их используют намеренно, поэтому отчёт помечает их для просмотра, а не как дефект, и колонка измерения показывает реально присутствующие символы.
В какой частоте кадров считается тайминг. На страницах форматов это то, что нужно MicroDVD: он хранит время в номерах кадров. На страницах частоты кадров это частота, по которой файл был рассчитан, — версия, для которой делались субтитры, — а второе поле страницы принимает частоту видео, с которым вы будете их использовать. Обычные значения: 23,976, 24, 25, 29,97, 30, 50, 59,94 и 60. Ошибка сдвигает весь таймлайн, а на страницах частоты кадров — на коэффициент, а не на фиксированную величину.
Это страница для случая, когда вы ещё не знаете, что именно не так с файлом: она прогоняет субтитры через шесть структурных проверок за один проход — пересечения, паузы, пустые реплики, реплики без слов, начала не по порядку и длительности вне ваших пределов — и выдаёт один отчёт с разделом на каждую проверку. Раздел печатается всегда, нашлись находки или нет, и в этом весь смысл: отчёт, который перечислял бы только проблемы, не позволил бы отличить проверку, вернувшуюся чистой, от проверки, которая не выполнялась.
У каждой проверки свой словарь: пересечения измеряются общими миллисекундами, паузы — пустыми, длительности — двумя заданными пределами, а две проверки порядка дают находки уровня документа, потому что реплика, которую пришлось отсортировать или исправить, не оставляет в файле места, на которое можно указать. Счётчики разделов не складываются в число проблем файла и не должны складываться: одна реплика может быть одновременно короткой, пустой и пересекающейся, и о каждой из этих сторон сообщает та проверка, которая умеет её описать, так что отчёт даёт форму проблем, а не итог. Шапка — часть ответа: в ней имя файла, формат, число реплик, число выполненных проверок и всё, что читателю пришлось исправить по дороге, — таймкод, который не удержался в записанном виде, или реплики, которые пришлось переместить, чтобы файл устоял.
Примеры
Файл с несколькими видами проблем
Субтитры
1
00:00:01,000 --> 00:00:03,000
Where were you?
2
00:00:03,500 --> 00:00:04,000
3
00:00:04,500 --> 00:00:09,000
I was working late.
4
00:00:09,300 --> 00:00:12,000
Until when?
Что находит отчёт
Checks run 6
Cues 4
Overlapping cues — 1 found
Gaps between cues — 2 found
Cue duration outside the limit — 1 found
Cues with no words — 1 found
Cues out of sequence — Nothing found
Cues ending before they start — Nothing found
Четыре реплики, четыре дефекта и два пустых раздела из шести. Пустой раздел о порядке — результат, а не пробел в отчёте: именно по нему видно, что файл проверяли на это и он вышел чистым. Пустая реплика и короткая реплика — одна и та же реплика, посчитанная дважды двумя правилами, которые описывают её по-разному.
Чистый файл
Субтитры
1
00:00:01,000 --> 00:00:03,000
Where were you?
2
00:00:03,000 --> 00:00:05,000
I was working late.
Что находит отчёт
Checks run 6
Cues 2
Overlapping cues — Nothing found
Gaps between cues — Nothing found
Cue duration outside the limit — Nothing found
Cues with no words — Nothing found
Cues out of sequence — Nothing found
Cues ending before they start — Nothing found
Шесть проверок, шесть пустых разделов. Это ответ, который страница должна давать чаще всего, и только так видно, что «ничего не найдено» печатается для каждой проверки, а не один раз на файл: одна итоговая строка не сказала бы, какие пять проверок были пропущены.
Файл, который читателю пришлось исправлять
Субтитры
1
00:00:09,000 --> 00:00:11,000
I was working late.
2
00:00:01,000 --> 00:00:02,000
Where were you?
3
00:00:05,000 --> 00:00:05,000
Until when?
Что находит отчёт
Lost while reading Timing × 1, Cue order × 2
Cues out of sequence — 1 found
Cues ending before they start — 1 found
Gaps between cues — 1 found
Cue duration outside the limit — 1 found
Три реплики и три проблемы, одну из которых читателю пришлось исправить до того, как что-либо можно было проверить. Шапка фиксирует обе правки, а миллисекунда, выдуманная для реплики 3, возвращается в разделе длительностей числом, измеренным относительно минимума в одну секунду: один и тот же дефект, описанный в одном отчёте с двух сторон.
Частые вопросы
Какие проверки выполняет эта страница над файлом субтитров?
Шесть: пересекающиеся реплики, паузы длиннее заданного порога, пустые реплики, реплики без слов, реплики, у которых время начала идёт назад, и реплики, чья длительность выходит за заданные минимум и максимум. У каждой свой раздел в отчёте, разделы печатаются всегда в одном порядке, и каждый появляется независимо от того, нашлось что-нибудь или нет.
Зачем чистому разделу место в отчёте?
Потому что «ничего не найдено» и «не проверялось» — разные ответы, а отчёт, перечисляющий только проблемы, не позволил бы их различить. Шесть разделов означают, что шесть проверок выполнились; пустой раздел говорит, что проверка смотрела и ничего не нашла, и это результат, на который можно опереться, а не отсутствие сведений.
Складываются ли счётчики разделов в число проблем в файле?
Нет, и не должны. Одна реплика может быть одновременно короткой, пустой и пересекающейся, и о каждой стороне сообщает то правило, которое умеет её описать, поэтому одна и та же реплика может появиться в трёх разделах. Ничего не складывайте: читайте разделы сверху вниз и берите каждый как отдельный ответ.
Какие пределы нужно задать перед запуском?
Два: порог паузы — самую длинную паузу, которую вы готовы принять, — и минимальную длительность реплики, то есть самый короткий допустимый показ. Максимум длительности не обязателен и по умолчанию равен семи секундам. Все три печатаются рядом с каждой находкой, которую они породили, поэтому отчёт говорит, с чем сравнивали, и не заставляет вас помнить числа.
Почему у некоторых находок нет номера реплики и таймкода?
Это находки уровня документа. Нарушение порядка и исправленный таймкод нулевой длины возникают во время чтения файла: реплики к моменту любой проверки уже отсортированы или исправлены, поэтому доказательством служит число правок, и честного места в файле, на которое можно указать как на виноватое, не остаётся.
Стоит ли пользоваться этой страницей вместо отдельных проверок?
Ею стоит выяснять, что не так, а отдельными страницами — действовать. Каждая из них подробно объясняет один дефект, задаёт свой предел и ведёт к операции, которая чинит именно эту проблему. Сканирование — вход, а не замена шести страниц за ним.
Какие форматы субтитров можно сканировать?
Десять, где хранятся и начало, и конец: SRT, WebVTT, ASS, SSA, SBV, SMI, MicroDVD, TTML, JSON и CSV. LRC и обычный текст не принимаются: четырём из шести проверок нужен конец, а двум другим — модель реплик, так что сканирование этих форматов могло бы вернуть только пустые разделы, которые читались бы как справка о полном здоровье файла.
Можно просканировать целый сериал за один запуск?
Да. В очередь можно поставить сколько угодно файлов, они сканируются по очереди, каждый со своим отчётом, и отчёты скачиваются одним архивом. Прогресс показывается по файлам, запуск можно остановить на середине, и ни один файл ни в какой момент не покидает браузер.