Список форумов Kage Project Kage Project
 
  РегистрацияРегистрация  ВходВход
  Архив субтитровАрхив субтитров  ПоискПоиск  ЧаВоЧаВо  ПользователиПользователи
 Войти и проверить личные сообщенияВойти и проверить личные сообщения

Re_Sync: подгонка тайминга по подходящему варианту субтитров
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов Kage Project -> Техническая поддержка
Предыдущая тема :: Следующая тема 
Автор Сообщение
Lord_D



Зарегистрирован: 30.03.2011
Сообщения: 15
Откуда: Новосибирск
СообщениеДобавлено: Пт Апр 01, 2011 15:33 pm   Заголовок сообщения: Re_Sync: подгонка тайминга по подходящему варианту субтитров Ответить с цитатой

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

Программа производит подгонку тайминга по подходящему варианту субтитров.
Она может помочь, когда есть:
    – другой подходящий по таймингу перевод;
    – старая версия этого же перевода с подогнанным ранее таймингом;
    – вложенные субтитры*;
    – закодированные в видео субтитры**.
Программа также будет полезна для фансаберов, которым приходится поддерживать в актуальном состоянии переводы для нескольких вариантов видео. Можно смело вносить изменения в перевод (включая добавление и удаление фраз) и затем применять программу, получая тайминг для другого релиза из старой версии.

Загрузка и исходный код.

* Вытащить такие субтитры можно:
Из MKV: mkvextract (консольная, идет с mkvtoolnix). GUI к ней: MKVCleaver, MKVExtractGUI.
Из OGG: VirtualDubMod.
** Тайминг для таких субтитров можно выдрать программами вроде AVISubDetector и VideoSubFinder, но, зачастую, быстрее подогнать руками Smile.

P.S. Если кто-то желает помочь в развитии проекта – вэлком.


Последний раз редактировалось: Вс Июл 14, 2013 15:40 pm
К началу
Посмотреть профиль Отправить личное сообщение Добавить в игнор-лист
kiros



Зарегистрирован: 30.09.2008
Сообщения: 1089
Откуда: Бене Гессерит
СообщениеДобавлено: Сб Апр 02, 2011 15:16 pm   Ответить с цитатой

Цитата:
Программа сугубо консольная.

Чё? Smile
--------------------------------------------------------
Не решился запустить т.к.

1. duxus.narod.ru выдал "Ваш сайт еще не создан".
2. Добавлено: Пт Апр 01
3. Сообщения: 1
К началу
Посмотреть профиль Отправить личное сообщение Добавить в игнор-лист
Lord_D



Зарегистрирован: 30.03.2011
Сообщения: 15
Откуда: Новосибирск
СообщениеДобавлено: Сб Апр 02, 2011 18:29 pm   Ответить с цитатой

kiros:
Цитата:
Программа сугубо консольная.

Чё? Smile

Без графического интерфейса.

kiros:

Не решился запустить т.к.

1. duxus.narod.ru выдал "Ваш сайт еще не создан".
2. Добавлено: Пт Апр 01
3. Сообщения: 1

Я вас понимаю, особенно с датой вышло прикольно Very Happy.
1. Не создавал главную страницу, чтобы никто не лазил кроме как по прямым ссылкам на файлы.
2. Совпадение. Серьезно.
3. Зарегистрировался специально, чтобы выложить прогу. Просто переводом не занимаюсь (пока?) - надобности не было.
Регистрировать аккаунт для трояна на корпоративную почту было бы несколько неумно Very Happy.

Можно проверить на http://www.virustotal.com/ или запустить в песочнице (Sandboxie) или виртуалке. Могу еще исходники выложить. Больше нечем Вас убедить. Но было бы обидно, если бы никто даже не попробовал. Все-таки много сил потратил.
К началу
Посмотреть профиль Отправить личное сообщение Добавить в игнор-лист
Shitsu
Гость




СообщениеДобавлено: Сб Апр 02, 2011 19:40 pm   Ответить с цитатой

Цитата:
Могу еще исходники выложить

было бы здорово
К началу
Lord_D



Зарегистрирован: 30.03.2011
Сообщения: 15
Откуда: Новосибирск
СообщениеДобавлено: Сб Апр 02, 2011 20:06 pm   Ответить с цитатой

Shitsu
Прикрепил исходники в первое сообщение. К сожалению, под линуксом пока собрать не получится. Я использовал при конвертации кодировок некоторые возможности из нового стандарта C++, а в GCC они еще оказались не реализованы Sad. Вот теперь думаю - ждать пока сделают или переделывать...
Можно заменить codecvt_utf8 и codecvt_utf16 на codecvt_byname (в MSVC он у меня нормально не заработал, может в линуксе будет работать), добавить ручное удаление BOM и добавление при выводе (если сам codecvt_byname не умеет) и, возможно, отключить смену кодировки консоли - в линуксе она и по умолчанию нормальная.
Но сейчас времени маловато. Позже займусь.
К началу
Посмотреть профиль Отправить личное сообщение Добавить в игнор-лист
Shitsu
Гость




СообщениеДобавлено: Сб Апр 02, 2011 20:21 pm   Ответить с цитатой

Lord_D
спасибо, буду разбираться
К началу
Lord_D



Зарегистрирован: 30.03.2011
Сообщения: 15
Откуда: Новосибирск
СообщениеДобавлено: Ср Апр 06, 2011 15:45 pm   Ответить с цитатой

06.05.2011:
    + Новая опция: --no-skip.

24.04.2011:
    + Фильтр названий стилей SSA/ASS.
    + Новая опция: --skip-lyrics.

15.04.2011:
    * Мелкие исправления.

06.04.2011:
    + Поддержка UNIX-систем;
    + Опции для переопределения параметров по умолчанию.
К началу
Посмотреть профиль Отправить личное сообщение Добавить в игнор-лист
Thyl
Гость




СообщениеДобавлено: Пн Май 16, 2011 2:48 am   Ответить с цитатой

А можно изложить алгоритм работы программы? Каким образом она вычисляет новые тайминги.
К началу
Lord_D



Зарегистрирован: 30.03.2011
Сообщения: 15
Откуда: Новосибирск
СообщениеДобавлено: Пн Май 16, 2011 6:50 am   Ответить с цитатой

Thyl
В шапке написан.
К началу
Посмотреть профиль Отправить личное сообщение Добавить в игнор-лист
Thyl
Гость




СообщениеДобавлено: Пн Май 16, 2011 12:35 pm   Ответить с цитатой

Спасибо, туплю.
К началу
Squarie
Гость




СообщениеДобавлено: Чт Май 19, 2011 12:32 pm   Ответить с цитатой

Я к вам в гости как быдлокодер из соседнего прикрепленного топика :3

Чисто из любопытства потратил пару дней на эксперименты по созданию аналогичной программы, правда, по другому алгоритму. В результате иногда 2-3 фразы, обычно стоящие особняком, ускакивают не в ту сторону. Как часто в этой программе такое происходит? Долго приходится подбирать настройки для нормальной работы?

Я пока свою программу назвать законченной не готов из-за косяков с интерфейсом и некоторыми проблемами тайминга, могу только примерно показать, что есть сейчас.

Интерфейс - не знаю пока, что делать со списками, полные имена файлов влезают нормально разве что на 1920х1080.

Визуальные результаты ретайминга для ggшных релизов Мадоки (пока самое суровое испытание, учитывая их зачастую невырезанную рекламу) - три строчки для кадого файла - тайминг входных сабов, тайминг опорных сабов, тайминг выходных сабов. Местами видны выпадающие в сторону фразы (6 файл, в середине, блок, который идет до рекламы, сдвинулся вместе с послерекламным блоком), и неоднократно уехавший эндинг с превьюшкой (но там сдвиг выше заданного в настройках предельного)


- Добавление файлов происходит в соответствующий столбец начиная с выбранной строки. Для обработки сразу нескольких файлов пока что лучше сразу добавлять их в список всем скопом, выделив несколько файлов в диалоге открытия
- Фразы скачут, я предупредил :3
- srt пока что не поддерживается. Только ssa/ass.
- только под винду, хотя может заработать и под wine

+ программа сама извлекает сабы из mkv
+ обработанные сабы складываются в папочку outdir с именем опорного файла и расширением ass

Я предупредил :3

http://zefiris.su/files/subsync.rar
К началу
Lord_D



Зарегистрирован: 30.03.2011
Сообщения: 15
Откуда: Новосибирск
СообщениеДобавлено: Чт Май 19, 2011 14:04 pm   Ответить с цитатой

Squarie
Здравствуйте! Рад вас здесь видеть!

Squarie:
Чисто из любопытства потратил пару дней на эксперименты по созданию аналогичной программы, правда, по другому алгоритму. В результате иногда 2-3 фразы, обычно стоящие особняком, ускакивают не в ту сторону. Как часто в этой программе такое происходит? Долго приходится подбирать настройки для нормальной работы?

Когда как. Чаще происходит такое, что небольшая часть после рекламы при синхронизации с сабами, где рекламы нет, не сдвигается, а синхронизация достигается где-то через минуту. В результате получаем еще и наложение. Лучше всего синхронизируется srt, где фразы не могут в изначальном варианте накладываться друг на друга.

Squarie:
Я пока свою программу назвать законченной не готов из-за косяков с интерфейсом и некоторыми проблемами тайминга

Могу отметить только то, что ваш навык лени ниже моего и интерфейс вы таки сделали. Впрочем, я тоже собираюсь переписать программу на Qt (в том числе из-за нормальной поддержки юникода).

Squarie:
не знаю пока, что делать со списками, полные имена файлов влезают нормально разве что на 1920х1080.

Я бы отображал только имена файлов, без путей. А при наведении в хинте отображал полный путь.

Выложите, пожалуйста, субтитры, на которых вы тестируете - сравним.

Также, хотел бы расспросить вас об алгоритме синхронизации по звуку. Хотел бы когда-нибудь добавить аналогичную возможность в свою программу. Если не жалко времени (и алгоритма) - желательно подробно. И что значат два графика - с синей волной и с "шумом". Можно в личку.

Еще один алгоритм, который я, честно, подсмотрел в roadmap Aegisub - автоматическая синхронизация по двум аудио. Это должен быть самый точный вариант (нужно только звук привести к одному формату и громкости). Но, к сожалению, они планируют эту возможность только на 4 версию, а второй уже пара-тройка лет. Так что есть большой шанс не дождаться. Если есть желание - дарю чужую идею. Smile

И еще такой вопрос: вы на каком языке пишите? Я так понимаю, дельфи. Просто изначально идея моего проекта была в том, чтобы привлечь других разработчиков и вместе сделать универсальную программу с несколькими алгоритмами. Нет смысла рассыпаться по разным проектам.
Почему я предлагаю C++/Qt? Я сам порой и несколько знакомых постоянно работают в линуксе. Я бы хотел максимально расширить аудиторию проекта. Плюс, в линуксе намного больше сильных программистов. Если написать на ЛОРе, могут и присоединиться. Ну и Qt просто очень удобный и богатый на возможности фреймворк.
К началу
Посмотреть профиль Отправить личное сообщение Добавить в игнор-лист
Squarie
Гость




СообщениеДобавлено: Чт Май 19, 2011 14:59 pm   Ответить с цитатой

Я тестирую на сабах Мадоки из архива (hr_mahou_shoujo_madoka_magica_01_12_(5905) и [dreamers_team]_mahou_shoujo_madoka_magica_(5902).rar), на картинке вроде первые, но пожно переделать на дримеров, там примерно то же самое получается. У меня есть ггшные релизы всех серий кроме 2, 7 и 9, соответственно на остальных экспериментирую (на картинке 1, 3-6, 8, 10-12 по порядку), есть yesy и неполные Nutbladder - могу ещё с них картинки выложить, просто по yesy совсем скучно - там он изначально почти совпадает.

Я в общем-то намеренно не стал использовать предложенный вами алгоритм в надежде создать что-нибудь, где каждая строка самостоятельна, но дружит с соседями в определенной окрестности. Когда (если) доработаю - опишу, как работает.

На программу синхронизации по звуку я откликов практически не слышал, а так как сам русабом не пользуюсь вообще и с проблемой практически не сталкиваюсь - толком не испытывал, и не знаю. насколько её алгоритм вообще пригоден к использованию на самом деле. Работает она примерно так:

- Мплеером конвертируем звук в простой для чтения формат
- Строим таблицу с громкостью каждой десятой доли секунды.
- Находим среднюю громкость, всё что ниже нее - глушим в ноль как "фон".
- Для всех сдвигов от -полутора минут до полутора минут (вроде) с шагом в 0.1 секунды смотрим, сколько сабов попадают началом и концом на резкие перепады громкости - начало и конец звука соответственно. Если требуется один сплошной сдвиг - получаем явный пик в данной точке. Если сдвигов требуется больше одного, то получаем несколько пиков и встречаемся с проблемой разделения файла в каком-то месте (вот тут я не помню как решал и скорее всего работает неправильно)
- Производим сдвиг основного куска сабов, и после этого уже ищем опенинг(обычно 90 секунд звука, окруженное небольшими паузами), отделяем кусок перед ним и проверяем на попадание при +- 10 секунд - случай с вырезанной 10секундной рекламкой.

то есть для сложного ретайминга (как в случае с ггшными релизами Мадоки) этот метод не прокатит совсем.

Я пишу на Дельфях, да, так как мне на них удобнее, но и Си для меня не чужой язык. Я совершенно не умею работать в команде и с чужим кодом, так что тут я пас. Я просто делаю свои проекты для себя, пока мне это интересно, и потом бросаю их.
К началу
Lord_D



Зарегистрирован: 30.03.2011
Сообщения: 15
Откуда: Новосибирск
СообщениеДобавлено: Пт Май 20, 2011 7:50 am   Ответить с цитатой

Squarie:
Когда (если) доработаю - опишу, как работает.

С удовольствием почитаю.

Squarie:
На программу синхронизации по звуку я откликов практически не слышал, а так как сам русабом не пользуюсь вообще и с проблемой практически не сталкиваюсь - толком не испытывал, и не знаю. насколько её алгоритм вообще пригоден к использованию на самом деле.

В целом, 50/50. Иногда работает удивительно хорошо, иногда - удивительно плохо Very Happy. За алгоритм спасибо. Я, скорее всего, реализую что-то несколько другое, если руки дойдут.

Squarie:
Я совершенно не умею работать в команде и с чужим кодом, так что тут я пас.

Мое дело - предложить, ваше дело - отказаться. Smile


Мадока от Hyakka Ryoran под gg подгоняется с настройками по умолчанию. Ну, для первой серии для более точного позиционирования фраз до опенинга можно установить max-desync=150. Видно, что использовался тайминг от gg, поэтому никаких проблем быть не должно. Проверил 1, 3 и 5 серии. Дальше смысла не увидел. Графики в архиве ниже.

Самым сложным для моей программы пока была подгонка русских сабов "Морской невесты" (Seto no Hanayome) под BD-равки по корейским сабам. Тайминг по определению не может совпадать.
Первую серию подбирал минуту: --max-desync=50 --max-offset=2000
Вторая подошла с настройками по умолчанию.
А вот с третьей 15 минут возился. Итог: --no-skip --max-desync=150 --max-offset=2000 --min-duration=1900 - вроде все совпало.

Графики и субтитры Морской невесты
К началу
Посмотреть профиль Отправить личное сообщение Добавить в игнор-лист
Squarie
Гость




СообщениеДобавлено: Пт Май 20, 2011 15:19 pm   Ответить с цитатой

прогнал сабы своей программой, по картинке вроде ничего, но равок для проверки у меня нету.

Полученные сабы
Визуальное представление
К началу
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Kage Project -> Техническая поддержка Часовой пояс: GMT + 3
На страницу 1, 2  След.
Страница 1 из 2
 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы, прикрепленные к сообщениям