The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

10.03.2019 10:30

Опубликован код утилиты subsync, обеспечивающей автоматическую синхронизацию субтитров с видео. Утилита позволяет откорректировать момент показа текста, синхронизировав его с началом произношения фраз. Код написан на языке Python и распространяется под лицензией MIT. Подготовлен патч для интеграции с мультимедийным проигрывателем VLC. Для обработки видео используется FFmpeg, для разбора субтитров применяется библиотека srt, а для выделения речи модуль py-webrtcvad.

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

  1. Главная ссылка к новости (https://github.com/smacke/subs...)
  2. OpenNews: Атака на Kodi, VLC и Popcorn-Time через вредоносные субтитры
  3. OpenNews: Релиз мультимедийного фреймворка GStreamer 1.14.0
  4. OpenNews: Новая версия медиапроигрывателя SMPlayer 18.9
  5. OpenNews: Релиз программы для перекодирования видео HandBrake 1.2.0
  6. OpenNews: Медиаплеер VLC преодолел рубеж в три миллиарда загрузок. Выпуск VLC 3.0.6
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/50284-subtitle
Ключевые слова: subtitle, sync, vlc
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (39) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (1), 11:12, 10/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    Скачиваешь с торрентов сериальчик на ангельском. Он оказывается записью с ТВ с неаккуратно вырезанной ТВ-рекламой (секунды 3 рекламы например остаются невырезанными). Идешь скачивать отдельно субтитры на русском. А у них время оказывается синхронизировано для записи с ТВ, осуществленной другим человеком, который рекламу вырезал более аккуратно (или менее аккуратно). В итоге, просматривая сериальчик, постоянно жмешь +delay / -delay. Этот питонопроект поможет в этой ситуации?
     
     
  • 2.2, bircoph (ok), 11:16, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • –7 +/
    Нет, потому что речь на английском будет и синхронизация слетит.
     
     
  • 3.4, MrClon (ok), 11:56, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Почитал описание алгоритма на гитхабе, вроде должно работать, во всяком случае если продолжительности титров примерно совпадают с продолжительностью реплик
     
     
  • 4.17, Урри (?), 20:47, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да не будет оно работать. Оно работает только на сферическом коне в вакууме. Любой посторонний шум (машина проехала, речь в фоне, звон посуды) к xерам ломает их "алгоритм".
     
     
  • 5.35, helgi (??), 21:25, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Это для фильмов, в которых речь, музыка, эффекты разделены по каналам. Т.е. эта утилита работает с каналом речи только. Это не для сграбленных видео, где все в одном канале.
     
  • 4.30, Stax (ok), 14:12, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > продолжительности титров примерно совпадают с продолжительностью реплик

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

     
     
  • 5.32, MrClon (ok), 14:30, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Смотря как перевод делали. Ведь продолжительность показа титра не обязана сильно коррелировать с количеством текста в нём. Т.е. оно конечно хорошо бы чтобы коррелировало, но далеко не всегда сабы бывают сделаны с учётом всех «хорошо бы»
     
     
  • 6.33, dimqua (ok), 15:43, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да, таких очень мало, т.к. обычно переводят по готовым английским субтитрам. :-)
     
  • 3.6, dimqua (ok), 14:12, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Но в описании сказано "language-agnostic automatic synchronization".
     
     
  • 4.31, Stax (ok), 14:13, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Правильно, ему без разницы, какой язык речи и субтитров - можно английский, можно русский, можно любой другой. Но совпадать-то они должны, чтобы попадать друг в друга по длительности.
     
  • 2.8, dimqua (ok), 14:23, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    В этом конкретном случае проще и лучше обычно скачать у того, кто клепал субтитры.

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

     
  • 2.9, Аноним (-), 14:24, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +7 +/
    > Этот питонопроект поможет в этой ситуации?

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

     
     
  • 3.14, dimqua (ok), 15:07, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Жаль, но вообще, вставки можно и вырезать, а это проще сделать бывает, чем подгонять субтитры вручную. Для релизера. Мне было бы лень так заморачиваться, если честно. :-)
     
     
  • 4.18, Урри (?), 20:48, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Есть множество редакторов субтитров, которые это позволяют сделать в один клик - поправляют тайминги всех последующих субтитров по сдвигу одного.
     
     
  • 5.19, dimqua (ok), 21:00, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В этом случае и править ничего не надо, достаточно задать delay в видеоплеере, к сожалению, для многих сабов это не работает или работает плохо.
     
     
  • 6.20, MrClon (ok), 21:06, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В некоторых редакторах можно сдвинуть на n секунд не только все титры разом, но и все титры до/после заданного титра. Это помогает если рассинхрон появляется в середине фильма
     
     
  • 7.22, dimqua (ok), 21:28, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Это сложно определить, да и часто бывает, что рассинхрон постоянный. Например, я устанавливаю delay, базируясь на первой реплике в фильме, но это не исправляет вторую, третью и т.д.
     
     
  • 8.23, MrClon (ok), 21:40, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Дык это Выравниваешь все титры по первому, проверяешь парочку после него, если ... текст свёрнут, показать
     
     
  • 9.25, Аноним (-), 00:47, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    дык сабж вроде бы и предназначен для того, чтобы не заморачиваться со всеми пере... текст свёрнут, показать
     
     
  • 10.28, MrClon (ok), 11:23, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Тут весь тред уже не про сабж, а про менее автоматические альтернативы ему... текст свёрнут, показать
     
  • 2.16, Аноним (-), 16:39, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    aegisub в помощь. Сам пользуюсь еще с бородатых - для любителей бурятских мультиков, штука незаменимая (ибо тайминги могут варьироваться в зависимости от рипера). Брат жив, зависимость есть.
     
  • 2.27, Аноним (27), 07:02, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Для автоматического ретайминга субтитров под разные релизы ещё есть https://github.com/tp7/Sushi
     

  • 1.3, Аноним (1), 11:43, 10/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    > Далее для каждого отрывка определяется наличие речи

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

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

     
     
  • 2.5, watcher (??), 12:09, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Написать утилиту, которая будет сопоставлять SDH и простые субтитры куда проще (достаточно школьных знаний)
     
  • 2.7, dimqua (ok), 14:15, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    В большинстве субтитров нет ни того, ни другого. Переводы надписей (кроме названия фильма) обычно только в форсированных, а звуки обозначают только в субтитрах для глухих.
     
     
  • 3.11, Аноним (11), 14:47, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > Переводы надписей (кроме названия фильма) обычно только в форсированных

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

     
     
  • 4.12, dimqua (ok), 14:59, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Но не так уж часто это делают, и не всегда они есть вообще.

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

     
     
  • 5.21, MrClon (ok), 21:11, 10/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Думаю научить утилиту игнорить титры которые не удалось сопоставить с куском речи (и куски речи которые не удалось сопоставить с титрами) относительно не трудно. Хотя я не очень понял как именно сабж сопоставляет титры кускам речи, так-что хз.
     
     
  • 6.34, dimqua (ok), 15:45, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Кстати, еще бывает текстовая реклама в субтитрах.
     
  • 6.37, Аноним (37), 12:32, 12/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Он берет титры в которых уже есть время и аджактит их на время тишины.
     
     
  • 7.39, MrClon (ok), 13:08, 12/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Вот я не особо понял как именно он аджактит
     
     
  • 8.41, Аноним (41), 17:18, 13/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Там где тишина нет субтитров Там где звук двигай ближайшие титры из файлы с тит... текст свёрнут, показать
     
  • 5.24, Аноним (-), 00:27, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    > Но не так уж часто это делают, и не всегда они есть вообще.

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

     
     
  • 6.26, dimqua (ok), 03:13, 11/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Да, я тоже, но я имел ввиду, что не всегда надписи есть в фильмах.
     

  • 1.38, Аноним (37), 12:33, 12/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Зачем эти новости про чьи то экспериментальные проект. Или тут репостить все из гитхаб трендинг?
     
     
  • 2.44, Аноним (44), 16:52, 22/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Пущай пишуть.
     

  • 1.40, Андрей (??), 02:20, 13/03/2019 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Только собрался заняться диаризацией, которую подсказали тут:
    https://www.opennet.me/openforum/vsluhforumID3/116144.html#51

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

     
     
  • 2.42, Аноним (41), 17:19, 13/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Долго ты собирался.
     
     
  • 3.43, Андрей (??), 20:17, 13/03/2019 [^] [^^] [^^^] [ответить]  
  • +/
    Ну, как известно, не лезь поперед батьки в пекло.
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру