"Кинопередвижка" Форум любителей и коллекционеров плёночного кино.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » "Кинопередвижка" Форум любителей и коллекционеров плёночного кино. » Беседка » Neuroflick - программа для замены звука на фильмокопиях


Neuroflick - программа для замены звука на фильмокопиях

Сообщений 1 страница 8 из 8

1

Здравствуйте, меня зовут Дмитрий. В 2016 году передо мной встала задача - научиться заменять звук у отечественных фильмокопий с русского на английский или на любой другой. Цена копии фильма с английским и русским звуком могла отличаться в 5-7 раз, я хотел заработать на том чтобы помочь иностранным киноколлекционерам сэкономить на покупке родных, дорогих принтов.
Но это не единственная цель. У некоторых коллекционеров, например, были дорогие 16мм и  35мм копии из 80-х и более старые, из эпохи до цифрового звука. Качество звуковой дорожки там не ахти, а цифровой звук, в отличие от цифрового изображения, сразу был принципиально лучше аналогово. Многие желали посмотреть свои редкие дорогие принты с хорошим звуком.
Для начала провел исследование на тему в чем собственно заключается проблема и как проблему решают сейчас.

Начнем с самой проблемы, ибо некоторые известные мне околокиношники не верят в ее существование. Почему нельзя просто запустить звук на компьютере, подогнать его к изображению идущему с проектора и спокойно смотреть кино? Потому что будет рассинхрон. Всегда, на любом проекторе, у любого киномеханика будет появляться уникальный, значительный и неустранимый рассинхрон. Потому что бобина с пленкой вращается не с одной и той же скорость. Она то чуть быстрее, то четь медленнее, в зависимости от того какая часть уже отсмотрена. Раньше это было просто спорным утверждением, но я это подтвердил на первой стадии исследования. Вот ролик о моем исследовании в котором очень много слайдов и математики, даже самые любознательные технари будут удовлетворены:
https://youtu.be/RufyhuQRooU

Итак, вот основные характеристики проблемы:

1) Рассинхрон между цифровой и пленочной звуковой дорожкой начинается на конце первой минуты проекции.
2) У проектора КН-20 рассинхрон на 16 минутный ролик составляет 40 секунд, а у Виктории-5 - около 4 секунд. Оба результата одинаково неприемлемы.
3) Рассинхрон не придерживается какой-то стабильной формулы, которую можно просто заложить в проигрыватель цифрового звука. То есть не получится сказать "вот тебе поправка на 4 секунды, играй и будет норм". Даже один и тот же проектор рассинхронизирует одну и ту же бобину по-разному в один и тот же день. То есть дорожка то ускоряется, то замедляется и делает это непредсказуемо.
4) На некоторых кинокопиях есть склейки. Потеряна пара кадров или даже секунд изображения.
5) Большинство людей пользуются двумя проекторами для проекции, то есть при переключении с поста на пост может быть рассинхрон.

Теперь о разных старых решениях:
Первое решение - это копии с DTS дорожкой. В России таких было 1 на 100 релизов, некоторые их них были бракованными и не читались ни на каком оборудовании. Сама технология появилась только в середине 90-х, а оборудование для чтения DTS есть у немногих киноколлекционеров. Найти диск со звуковой дорожкой или его образ это отдельный вид коллекционирования. В общем, если бы это решение было решением, то мне нечего было бы разрабатывать.
Второй метод - внести небольшую модификацию в проектор, и с помощью давно существовавшего созданного энтузиастами софта проводить синхронизацию. Но модифицировать свои проекторы многие не хотели. Если кому инетресно, это работает идеально и вот ссылка:
https://www.zachpoff.com/software/film-o-sync/

Итак, я решил разработать следующий пользовательский сценарий. Он на картинке (ссылка), поясняю:

1) Запускаем на компьютере специально созданное приложение, я назвал его Neuroflick.

2) В приложении загружаем две звуковые дорожки -  английскую и русскую. С русской дорожкой программа будет сопоставлять поступающий звук, в английскую будет выводить и "подгонять" фиксируя рассинхрон.

3) Мы выводим аналоговый звук с проектора на линейный вход компьютера.

4) Программа на компьютере "слышит" звук и находит какой момент на цифровой русской дорожке сейчас проигрывается.

5) Получив нужный таймкод программа запускает английскую звуковую дорожку или субтитры на том же самом моменте.

6) Программа сопоставляет звук с проектора со звуковой дорожкой непрерывно, фиксирует рассинхрон и подгоняет или замедляет воспроизведении английского звука или субтитр.

7) Цифровой звук из приложения выводится на колонки, а субтитры на экран приложения.

Дальше я расскажу как работал над приложением и тестировал его.

Отредактировано Дмитрий Шустрик (19-08-2023 20:52:01)

2

Программировать я не умею и начал искать компанию, которую можно нанять для решения этой задачи.
Я спросил всех знакомых и им это показалось слишком сложным, фрилансеры и фильмы в интернете не вызвали доверия, ибо просили то слишком много, то слишком мало.
В Омске я наткнулся на выступление программиста Ильи Сиганова на тему нейросетей. Был 2017 год и мне показалось что использование нейросетей для создания приложения может быть перспективным. Когда я связался с Ильей он сообщил что работает в омской компании 7bits и не будет брать заказы на стороне. Я пришел в их офис и заключил с ними контракт.
Оказалось что для разработки приложения вначале нужно провести исследование, в нем будет оценена возможность создания программы и сколько людей будут над ней трудиться и чем они будут пользоваться.
Это была первая итерация, она была оплачена заранее. Результатом исследования стала вот эта презентация, ссылка на нее уже была в первом посте:
https://youtu.be/RufyhuQRooU
Выяснилось что нейросети использоваться не будут, прототипирование было проведено на языке Python. Во время этой стадии я уже проводил тесты прототипа приложения, но не в реальном времени и не с проектора. Использовалась оцифровка первого ролика фильма "Послезавтра", сделанная на проекторе Victoria 5. Программа проверяла звуковую дорожку с интервалом 200ms.
Во время последующих тестов было решено отказаться от Python и прейти на Java из-за того что в реальном времени Java работала быстрее.
Мною была оплачена вторая итерация, а сам я начал искать замену своему КН-20. Звук с него был очень плохим, я купил пару СК1000К. Звук с него был получше, но вот таким:
https://youtu.be/n3VGL7QDRJ0
Как видите, не фонтан. Программа должна была отсеивать шумы, эта задача была поставлена.

Отредактировано Дмитрий Шустрик (19-08-2023 20:38:27)

3

Я оплатил вторую итерацию исследования, она длилась с ноября 2017 года до весны 2018 года.
По моему эскизу был разработан пользовательский интерфейс.
Программу теперь мог запускать я у себя дома, до этого это могли делать только программисты.
Начались тесты.
Первый раз синхронизировать звук удалось в начале марта 2010 года:
https://youtu.be/YUM0N5N6cAk
Как видите, сидящая девушка вначале произносит реплику раньше чем положено, а потом программа ее поправляет. Синхрон держался около 2 минут.
Посмотревшие его англоговорящие жаловались на внезапные ускорения и замедления звука и на то что синхрон с их точки зрения не полный.
Я сделал пометки для разработчиков.
Непонятно было почему программа не могла синхронизировать больше 2 минут и шла вразнос.

К концу апреля были добавлены субтитры:
https://youtu.be/SBEPryGbnF8

Но программа все еще "терялась" после 2 минут.

К 1 июня удалось синхронизировать весь 15-минутныйролик:
https://youtu.be/XIriR0qYry0
Программа 4 раза теряла синхрон, но потом его находила.

Я отплатил третью итерацию.

К сентябрю мне удалось синхронизировать фильм при переключении между постами:

https://youtu.be/PYSCML8LazU

Но зрители жаловались на "заикания" и плохой липсинк, который мне, как не носителю английского, был незаметен.

В конце сентября я смог синхронизировать звук вырезав 18 кадров из ролика:

https://youtu.be/cOndgksVKV4

На этом у меня закончились деньги.

4

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

5

Дмитрий Шустрик написал(а):

Во время последующих тестов было решено отказаться от Python и прейти на Java из-за того что в реальном времени Java работала быстрее.

К сожалению ни Python ни Java не годятся для решения подобных задач. Это задача реального времени и для её решения необходимы более быстродействующие платформы. Кроме того, многое зависит ещё и от операционной системы. Например Windows здесь не годится в корне, поскольку она принципиально не заточена под Real-Time задачи. Изначально это надо было реализовывать на Си и под *nix.
Поверьте, говорю Вам как специалист. Сами сталкиваемся с подобными проблемами.

А вообще, идея интересная. У меня как-то тоже бродила такая мысль по поводу синхронизации. Правда стоял вопрос перевода НА РУССКИЙ и втрой вопрос - озвучивание неозвученных копий (ну, это отдельная тема).

Первая идея, которая мне приходит в голову - банальное использование тайм-кода и синхронизацию по нему с использованием готовых решений, применяемых в DTS. А вот дальше:
Тайм код получаем по карте фильма, которая создаётся один раз при прогоне фильма в тестовом режиме. Потом эту карту сохраняем в виде файла и используем при демонстрации. Ключевой момент - на базе Вашей идеи: синхронизации карты тайм кода с исходной фонограммой.
Так вот - эта карта таймкода служит упреждающим буфером для синхронизации, производимой с упреждением и уже подсинхронизируемой в реальной ситуации. Сразу вижу, что в сложных ситуациях будет небольшой рассинрон, который будет реально малозаметен. Зато при этом должны получить комфортное звучание без заиканий и артефактов.

Сразу вижу нюансы:
- переходы с поста на пост
- склейки с потерей метража (думаю, решается повторным запуском тестового режима)

Идея сырая, пришла мне в голову, пока я читал эти посты. Может, этот алгоритм не выдержит никакой критики и ни к чёрту не годится... А может и нет. Преподношу As is.

Извините за длинный пост - накатило что-то.

6

Duwakin написал(а):

Извините за длинный пост - накатило что-то.

Очень странное извинение. Но извиняю.

7

Мне приходила подобная мысль, но только о программе которая по изображению на экране синхронизировала-бы звук. Чтоб можно было глухонемые фильмы/мультфильмы на Руси смотреть со звуком. А то восьмимиллимитровый формат какой-то вообще совсем унылый, потому что глухонемой. Дмитрий, вы молодец что занялись реализацией своей идеи.

Дмитрий Шустрик написал(а):

Цена копии фильма с английским и русским звуком могла отличаться в 5-7 раз, я хотел заработать на том чтобы помочь иностранным киноколлекционерам сэкономить на покупке родных, дорогих принтов.

Чем больше копий получат иностранные коллекционеры, тем меньше достанется нам россиянам.

Отредактировано RadiohateRR (22-08-2023 10:38:59)

8

RadiohateRR написал(а):

Чем больше копий получат иностранные коллекционеры, тем меньше достанется нам россиянам.

Целее будут. У них традиции сохранения фильмов дома с 70-х.


Вы здесь » "Кинопередвижка" Форум любителей и коллекционеров плёночного кино. » Беседка » Neuroflick - программа для замены звука на фильмокопиях