Смещение времени субтитров на языке A на основе проверенных субтитров на языке B.

Вопрос или проблема

У меня есть “законно полученная” копия телешоу, которая пришла с субтитрами на языке, который я не могу прочитать. Оригинальная озвучка шоу на японском, который я не понимаю. И у меня есть некоторые субтитры для шоу на английском, который я могу читать, писать и понимать устно.

Субтитры, которые шли с моей загрузкой, по-видимому, хорошо синхронизированы с японским диалогом. На самом деле, просмотр обоих файлов SRT показывает, что они достаточно похожи, за исключением различий во времени.

Как вы бы подошли к массовой загрузке субтитров, например, с OpenSubtitles, и их повторной синхронизации на основе хороших субтитров на другом языке?

Если это поможет, у меня установлен VLC, и я изучал, как корректировать задержку субтитров в VLC, но я надеялся на более автоматическое решение.

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

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

Чтобы уточнить: Существует ли уже существующий инструмент для работы с субтитрами на разных языках, который позволил бы мне сделать что-то конкретное, подобное этому? Моя интуиция подсказывает написать скрипт с ffmpeg, и если кто-то уже сделал это, я был бы рад услышать об этом.

Ответ или решение

Теория

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

Пример

В вашей ситуации у вас есть две версии субтитров: одна на японском языке, идеально синхронизированная с видеоматериалом, а другая на английском языке, но с несовпадающими временными метками. Для решения указанной проблемы вы можете использовать несколько подходов:

  1. Инструменты для работы с субтитрами: Существует несколько программ и утилит, которые могут помочь в коррекции временных меток. Одной из таких утилит является Subtitle Workshop, который позволяет редактировать и автоматически корректировать временные метки субтитров. Однако, для автоматической ретайминга придется сосредоточиться на более специализированных инструментах.

  2. Скрипты и ffmpeg: Вы упомянули ffmpeg, мощный инструмент для обработки медиафайлов. На самом деле, ffmpeg может быть использован в качестве компонента более сложного скрипта, который позволит автоматически синхронизировать субтитры. Используя Python, можно написать скрипт, который будет анализировать временные метки в японской версии и применять коррекцию к английским субтитрам.

  3. API и автоматизация: Некоторые сервисы, такие как OpenSubtitles, предлагают API для автоматического скачивания субтитров. Это может быть полезно для получения различных версий субтитров для вашего видеоматериала и дальнейшей автоматизации процесса ретайминга.

Применение

Для автоматического ретайминга субтитров на английском языке относительно японской версии с помощью скрипта на Python и ffmpeg, необходимо следовать следующему алгоритму:

  1. Обработка субтитров:

    • Загрузите оба файла субтитров в формате .srt.
    • Спарсите субтитры, разделив их на отдельные записи, содержащие временные метки и текст.
  2. Синхронизация временных меток:

    • Для каждой пары соответствующих записей (например, начала и окончания шоу) найдите схожие по содержанию пассы.
    • Рассчитайте смещения во времени между временными метками в японской и английской версии.
  3. Коррекция временных меток:

    • Примените корректировку времени ко всем временным меткам в английской версии субтитров, используя рассчитанные смещения.
  4. Вывод результатов:

    • Сохраните новый файл субтитров с корректными временными метками.

Вот пример кода на Python, представляющий общий подход к ретаймингу субтитров:

from datetime import timedelta
import pysrt

def adjust_timing(japan_srt_path, eng_srt_path, output_srt_path):
    jap_subs = pysrt.open(japan_srt_path)
    eng_subs = pysrt.open(eng_srt_path)

    # Предположим, что у нас есть метод для нахождения смещения времени
    time_offsets = calculate_time_offsets(jap_subs, eng_subs)

    # Применяем корректировки ко всем записям
    for eng_sub in eng_subs:
        for offset in time_offsets:
            eng_sub.start += timedelta(seconds=offset)
            eng_sub.end += timedelta(seconds=offset)

    eng_subs.save(output_srt_path)

def calculate_time_offsets(jap_subs, eng_subs):
    # Логика расчета смещений во времени между записями
    # Это будет основываться на определенных схожих пассах в вашей программе
    pass

adjust_timing('jpn_subs.srt', 'eng_subs.srt', 'output_eng_subs.srt')

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...