[Из песочницы] Про просмотр кино на английском с субтитрами, упрощение него с помощью двуязычных субтитров, и Bilingual Subtitler

Сначала, я “просто” смотрел кино. Потом узнал, что существуют “правильные переводы Гоблина” и перешел на них. Затем выяснилось, что существуют и другие авторские закадровые переводы. Потом были русские субтитры и оригинальные звуковые дорожки.

Затем логичным образом должен был идти переход на английский звук и английские субтитры.

Но… все оказалось не так просто, как казалось.

fuf-1qjouedthtsktlcdotekupo.jpeg

И я придумал выход из этой ситуации.

Всё началось с того, как, когда на сериал “Друзья”, только вышедший на Blu-ray, закончились русские субтитры...


… и один из пользователей в комментариях предложил прогонять английские субтитры через Google Translate в программе Subtitle Edit, раскрашивать получшееся других цветом и подцеплять к оригинальным, получив таким образом двуязычные субтитры — сверху оригинал, снизу “подстрочник”; литературного перевода через Google Translate, конечно, не получается, а вот просто подсматривать в русский текст, встречая незнакомое слово в английском тексте — пожалуйста.

e1siun5pm0hkmlroqmuiauansa8.png
Для автоматизации создания таких двуязычных субтитров и была в свое время написана первая версия Bilingual Subtitler, использующая для перевода субтитров Яндекс.Переводчик

Честно говоря, я использовал именно Яндекс.Переводчик потому...

… что Google публичное API своего переводчика закрыл, Bing требовал аппрува, а Яндекс спокойно выдавал ключи и имел библиотеки на c#. Однако впоследствии оказалось, что как минимум на момент 2016 и для художественных фильмов — Яндекс.Переводчик справлялся с переводом с английского на русский лучше, нежели Google Translate.


В процессе я понял, что такой метод проведения времени мне интересен


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

Закончился сериал “Друзья”, началось другое кино, и стало понятно, что данный метод просмотра не идеален


«Друзья» — сериал с достаточно простым языком и щедрый на тайминг реплик: вполне хватало времени прочитать оригинал, отследить непонятное, прочитать русский текст, понять, вернуться к просмотру. С более насыщенными текстами остро встала проблема нехватки времени на прочитывание и английского, и русского текстов.

Машинный перевод — сбивает. Бывало, читаю английский текст, все понимаю, читаю русский, в котором ввиду ограничений машинного перевода есть ошибка — и начинаю сомневаться, а вдруг здесь всё же не так — а время уходит, кино не ждет.

Самое интересное начало происходить чуть позже — на сложных фильмах я, когда начинал читать английский текст и понимать, что “с наскока” его не взять, сразу переключался на русский, читал его — и был таков, не возвращался к английскому. По идее стоило бы на таких моментах включать паузу, вчитываться, потом возобновлять воспроизведение — но мне, видимо, было слишком лениво каждый раз тянуться к пробелу (я даже не знал, что применяю такой “ленивый” подход, это получилось неосознанно, и только опосля заметил, что так поступаю).

Выход виделся достаточно простым — нужно «по умолчанию» выводить одни лишь английские субтитры, а русские подключать лишь по мере надобности.


Но есть проблема — мне, хоть я и уже долгое время (но довольно лениво) занимаюсь изучением английского, русские вспомогательные субтитры нужны довольно часто. И каждый раз сначала по клавише Пробела ставить паузу, по клавише S менять субтитры, читать, по Shift+S возвращать английские, и снова по Пробелу восстанавливать воспроизведение — 1 раз это «окей», 10 раз это «пойдет», 100 раз за фильм — это уже «ну его нафиг». Тогда стало ясно, что нужно через внешнюю программу контролировать плеер, чтобы все эти действия делать по нажатию одной клавиши: нажал — поставилась пауза, подключились русские субтитры — прочитал — нажал клавишу снова — русские субтитры убрались, остались одни английские, воспроизведение продолжилось.

Почему именно видеоплеер?
Я видел в интернете некоторое количество сервисов, предлагающих просмотр на английском с английскими субтитрами, однако у них были либо одна из, либо все проблемы:
  1. Предлагалось каждый раз останавливать видео и выбирать непонятное слово из субтитров, чтобы узнать его перевод.
  2. Неизвестно какое качество перевода.
  3. «Ассортимент» видео — ограничен тем, что загружено на сервис.

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

Здесь и далее по посту клавиши указаны применительно к видеоплееру Media Player Classic Homecinema.


По-хорошему, наверное, нужно было бы написать плагин к видеоплееру, но
а) Не хотелось привязываться к конкретному видеоплееру — у того же Media Player Classic Homecinema уже как-то объявляли, что «мы прекращаем разработку»; да и потом, а вдруг есть плееры лучше, а я не в курсе?

Так, отчасти, и оказалось...

… когда в комментарии под постом о Bilingual Subtitler меня начали спрашивать о PotPlayer — плеере, в котором можно щелкнуть по слову в субтитрах, и оно откроется в выбранном вами переводчике в браузере. Интересная штука.


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

В итоге

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

Ввиду смены подхода от «двуязычные субтитры всегда на экране» к «на экране только английские субтитры, русские добавляются на паузе» стало возможно сделать две клёвых вещи, а именно: возможность добавлять уже готовые (и «литературно переведенные») русские субтитры (раньше несоответствие между таймингами английских и русских субтитров рождало бы на экране кашу из неодновременно сменяющихся двух потоков субтитров; по крайней мере, мне так представляется), а также возможность добавлять не один поток русских субтитров! Ведь теперь нас не волнует занимаемое субтитрами место — они видны только на паузе, а значит, можно еще и посмотреть, как справились разные переводчики. Заодно, чтобы каждый мог настроить вид оригинальных/двуязычных субтитров так, как ему хочется, субтитры был переведены в формат ASS.

Реализована эмуляция нажатия клавиш, реализовано новое создание нужных субтитров, и вот он, Bilingual Subtitler, второй ревизии, которую уже можно показать людям :)

Как это примерно работает



Программа работает с любыми плеерами, поддерживающими горячие клавиши паузы, смены субтитров на предыдущие и на следующие (или включения конкретного трека субтитров). На данный момент проверена на Media Player Classic Homecinema и PotPlayer.

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

Сайт программы, с полным описанием, использованными библиотеками и контактами для связи →
GitHub репозиторий →

P.S. В программе использованы библиотеки для работы с Яндекс.Переводчиком авторства KvanTTT, за которые ему большое спасибо.

© Habrahabr.ru