URL: https://www.opennet.dev/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 116780
[ Назад ]

Исходное сообщение
"Представлена утилита для автоматической синхронизации субтитров"

Отправлено opennews , 10-Мрт-19 11:12 
Опубликован код утилиты subsync (https://github.com/smacke/subsync), обеспечивающей автоматическую синхронизацию субтитров с видео. Утилита позволяет откорректировать момент показа текста, синхронизировав его с началом произношения фраз. Код написан на языке Python и распространяется (https://github.com/smacke/subsync) под лицензией MIT. Подготовлен патч (https://github.com/smacke/subsync/raw/master/subsync-vlc.patch) для интеграции с мультимедийным проигрывателем  VLC. Для обработки видео используется FFmpeg, для разбора субтитров применяется библиотека srt (https://pypi.org/project/srt/), а для выделения речи модуль
py-webrtcvad (https://github.com/wiseman/py-webrtcvad).


Проект не привязан к конкретным языкам и базируется на сопоставлении абстрактных текстовых данных с выделенными фрагментами речи. Алгоритм синхронизации вначале выполняет дискретизацию видео и субтитров с разбиением на отрывки продолжительностью 10 мс. Далее для каждого отрывка определяется наличие речи: для видео задействован применяемый в WebRTC алгоритм определения наличия речи VAD, а для субтитров формируется раскладка на основе указанных временных меток. В итоге формируется два ряда, в которых каждый отрывок с речью отмечен 1, а без речи - 0. На последнем этапе осуществляется сопоставление двух полученных рядов и корректировка смещения с использованием быстрого преобразования Фурье (FFT).


URL: https://github.com/smacke/subsync
Новость: https://www.opennet.dev/opennews/art.shtml?num=50284


Содержание

Сообщения в этом обсуждении
"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 10-Мрт-19 11:12 
Скачиваешь с торрентов сериальчик на ангельском. Он оказывается записью с ТВ с неаккуратно вырезанной ТВ-рекламой (секунды 3 рекламы например остаются невырезанными). Идешь скачивать отдельно субтитры на русском. А у них время оказывается синхронизировано для записи с ТВ, осуществленной другим человеком, который рекламу вырезал более аккуратно (или менее аккуратно). В итоге, просматривая сериальчик, постоянно жмешь +delay / -delay. Этот питонопроект поможет в этой ситуации?

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено bircoph , 10-Мрт-19 11:16 
Нет, потому что речь на английском будет и синхронизация слетит.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено MrClon , 10-Мрт-19 11:56 
Почитал описание алгоритма на гитхабе, вроде должно работать, во всяком случае если продолжительности титров примерно совпадают с продолжительностью реплик

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Урри , 10-Мрт-19 20:47 
Да не будет оно работать. Оно работает только на сферическом коне в вакууме. Любой посторонний шум (машина проехала, речь в фоне, звон посуды) к xерам ломает их "алгоритм".

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено helgi , 11-Мрт-19 21:25 
Это для фильмов, в которых речь, музыка, эффекты разделены по каналам. Т.е. эта утилита работает с каналом речи только. Это не для сграбленных видео, где все в одном канале.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Stax , 11-Мрт-19 14:12 
> продолжительности титров примерно совпадают с продолжительностью реплик

Для перевода это условие не выполняется


"Представлена утилита для автоматической синхронизации субтит..."
Отправлено MrClon , 11-Мрт-19 14:30 
Смотря как перевод делали. Ведь продолжительность показа титра не обязана сильно коррелировать с количеством текста в нём. Т.е. оно конечно хорошо бы чтобы коррелировало, но далеко не всегда сабы бывают сделаны с учётом всех «хорошо бы»

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 11-Мрт-19 15:43 
Да, таких очень мало, т.к. обычно переводят по готовым английским субтитрам. :-)

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 10-Мрт-19 14:12 
Но в описании сказано "language-agnostic automatic synchronization".

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Stax , 11-Мрт-19 14:13 
Правильно, ему без разницы, какой язык речи и субтитров - можно английский, можно русский, можно любой другой. Но совпадать-то они должны, чтобы попадать друг в друга по длительности.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 10-Мрт-19 14:23 
В этом конкретном случае проще и лучше обычно скачать у того, кто клепал субтитры.

Иногда бывает, что в одной раздачи субтитры есть, но качество ужасное, поэтому приходится качать еще и нормальный рип, но не всегда субтитры подходят для него...


"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 10-Мрт-19 14:24 
> Этот питонопроект поможет в этой ситуации?

В общем, я только что потестил на разных файлах и походу оно делает нормальный ретайминг только в том случае, если нужен delay всех строк сразу (например, с самого начала и до конца на n sec назад или вперед). С этим оно справилось. Но на файлах с рекламными вставками, там где delay нужно было делать дважды (до и после рекламы), началась разножопица.


"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 10-Мрт-19 15:07 
Жаль, но вообще, вставки можно и вырезать, а это проще сделать бывает, чем подгонять субтитры вручную. Для релизера. Мне было бы лень так заморачиваться, если честно. :-)

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Урри , 10-Мрт-19 20:48 
Есть множество редакторов субтитров, которые это позволяют сделать в один клик - поправляют тайминги всех последующих субтитров по сдвигу одного.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 10-Мрт-19 21:00 
В этом случае и править ничего не надо, достаточно задать delay в видеоплеере, к сожалению, для многих сабов это не работает или работает плохо.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено MrClon , 10-Мрт-19 21:06 
В некоторых редакторах можно сдвинуть на n секунд не только все титры разом, но и все титры до/после заданного титра. Это помогает если рассинхрон появляется в середине фильма

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 10-Мрт-19 21:28 
Это сложно определить, да и часто бывает, что рассинхрон постоянный. Например, я устанавливаю delay, базируясь на первой реплике в фильме, но это не исправляет вторую, третью и т.д.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено MrClon , 10-Мрт-19 21:40 
Дык это. Выравниваешь все титры по первому, проверяешь парочку после него, если там всё ок то смотришь что в конце фильма. Если там есть рассинхрон то смотришь что есть-ли рассинхрон в середине, нарастает-ли он постепенно или появляется в некоторый момент. Прогрессирующий рассинхрон (бывает из-за разницы FPS) в некоторых редакторах можно править автоматически, если рассинхрон появляется единовременно то точку его появления легко найти «бинарным поиском». Не особо сложно, особенно по сравнению с ручной расстоновкой таймингов

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 11-Мрт-19 00:47 
дык сабж вроде бы и предназначен для того, чтобы не заморачиваться со всеми перечисленными манипуляциями, а просто прогнать все сабы из текущего каталога через этот subsync и на выходе получить сабы с исправленными таймингами; вот только с поставленной задачей оно не справляется

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено MrClon , 11-Мрт-19 11:23 
Тут весь тред уже не про сабж, а про менее автоматические альтернативы ему

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 10-Мрт-19 16:39 
aegisub в помощь. Сам пользуюсь еще с бородатых - для любителей бурятских мультиков, штука незаменимая (ибо тайминги могут варьироваться в зависимости от рипера). Брат жив, зависимость есть.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 11-Мрт-19 07:02 
Для автоматического ретайминга субтитров под разные релизы ещё есть https://github.com/tp7/Sushi

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 10-Мрт-19 11:43 
> Далее для каждого отрывка определяется наличие речи

также не будет работать для субтитров, которые составлялись видимо либо для глухих, либо для просмотра в публичных местах без звука; т.е. таких субтитров, где встречаются всякие там "[стук в дверь]", "[апплодисменты]" и т.д. А также переводы надписей.

Нужность проекта для отечественного пирата к сожалению никакая.


"Представлена утилита для автоматической синхронизации субтит..."
Отправлено watcher , 10-Мрт-19 12:09 
Написать утилиту, которая будет сопоставлять SDH и простые субтитры куда проще (достаточно школьных знаний)

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 10-Мрт-19 14:15 
В большинстве субтитров нет ни того, ни другого. Переводы надписей (кроме названия фильма) обычно только в форсированных, а звуки обозначают только в субтитрах для глухих.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 10-Мрт-19 14:47 
> Переводы надписей (кроме названия фильма) обычно только в форсированных

Да неужели? А в полных субтитрах надписи переводить не нужно?


"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 10-Мрт-19 14:59 
Но не так уж часто это делают, и не всегда они есть вообще.

Хотя, понятно, что перевода даже одной надписи, скорее всего, достаточно, чтобы такая автоматическая синхронизация поехала.


"Представлена утилита для автоматической синхронизации субтит..."
Отправлено MrClon , 10-Мрт-19 21:11 
Думаю научить утилиту игнорить титры которые не удалось сопоставить с куском речи (и куски речи которые не удалось сопоставить с титрами) относительно не трудно. Хотя я не очень понял как именно сабж сопоставляет титры кускам речи, так-что хз.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 11-Мрт-19 15:45 
Кстати, еще бывает текстовая реклама в субтитрах.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 12-Мрт-19 12:32 
Он берет титры в которых уже есть время и аджактит их на время тишины.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено MrClon , 12-Мрт-19 13:08 
Вот я не особо понял как именно он аджактит

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 13-Мрт-19 17:18 
Там где тишина нет субтитров. Там где звук двигай ближайшие титры из файлы с титрами.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 11-Мрт-19 00:27 
> Но не так уж часто это делают, и не всегда они есть вообще.

я чаще встречаю наличие полных/форсированных на выбор или только полных


"Представлена утилита для автоматической синхронизации субтит..."
Отправлено dimqua , 11-Мрт-19 03:13 
Да, я тоже, но я имел ввиду, что не всегда надписи есть в фильмах.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 12-Мрт-19 12:33 
Зачем эти новости про чьи то экспериментальные проект. Или тут репостить все из гитхаб трендинг?

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 22-Мрт-19 16:52 
Пущай пишуть.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Андрей , 13-Мрт-19 02:20 
Только собрался заняться диаризацией, которую подсказали тут:
https://www.opennet.dev/openforum/vsluhforumID3/116144.html#51

Так не те - уже всё готово. Хотя лишь более простой вариант: вместо детектирования разных голосов, только факт наличия речи.


"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Аноним , 13-Мрт-19 17:19 
Долго ты собирался.

"Представлена утилита для автоматической синхронизации субтит..."
Отправлено Андрей , 13-Мрт-19 20:17 
Ну, как известно, не лезь поперед батьки в пекло.