С чего всё началось? Как-то я решил в третий раз с детства пересмотреть всю оригинальную коллекцию "Том и Джерри", но я, в отличие от маленького ребёнка, не потребляю любой контент вне зависимости от его качества. И вот я собрался посмотреть самую доступную версию, а там вот это цветошоу с постоянными царапинами на всём экране.
Спустя год я узнаю об Topaz Video Enhance AI (нынешний Topaz Video AI) и решил попробовать сделать апскейл до FullHD. Результат вышел скверный. Артефакты плёнки и видеокодеки не исчезли, а изображение стало резким с попыткой в реализм, что не уместно в мультике такого жанра. Помучавшись так, месяц или два, я это дело забросил. Но вот, собравшись с духом, я приступил к второй попытке.
Cодержание:
1. Хорошие исходники
Следующие пол года я собирал информацию по теме. Оказывается, существует ремастеринг плёнки, в процессе которого её покрывают специальным раствором для устранения царапин, проводят глубокое сканирование, делают дюжину операций на компьютере и т.п. об этом подробнее есть отдельная статья.
Один из примеров:
Спустя много времени на поиски, я смог найти архив на ресурсе internet archive, с большей частью отремастеренных серий, сейчас публикация заблокирована по очевидным причинам (пиратство). Однако в ней всё равно не хватало многих серий в "хорошем качестве", а именно тех что были улучшены HBO Max. Было это лет так 5 назад и большим спросом не пользовалось, так что их тоже пришлось искать опальными путями. Но ~15% серий остались на уровне простого сканирования плёнки c цветокоррекцией, т.е. с просто огромным количеством царапин.
2. Составление единой русской аудиодорожки
На этот этап ушло очень много времени. Как известно, Том и Джерри был ооочень популярен в 90-е годы, да и сейчас было записано много переводов, однако универсального, заведомо хорошего - нет. Один диктор может перевести то, что было написано на той стене, а 10 других - нет. У 4 дикторов может быть профессиональный голос, а у других нет, и т.п. Иногда вообще дубляж есть))). То есть, нам надо взять и склеить надлежащим образом все эти дорожки в одну. Но помимо этой проблемы, есть и другая. Все эти аудиодорожки были очень плохого качества, т.к. записывались по большей части на видеокассеты (некоторые серии шли по телевидению). Это значит, что их будет трудно сопоставить между собой и оригинальным аудио, взятым уже с плёнки в хорошем качестве.
Сначала необходимо найти собственно переводы аудиодорожек, мне сразу повезло и на всеми известном сайте, начинающемся на Ru был пакет, содержащий примерно 12 дорожек на каждую серию, а иногда и по 20.
В классическом Том и Джерри 19 часов общего хронометража, что очень много для подобного вида работ, так что даже вычтя все дорожки с откровенно плохим переводом, на работу ушло порядка 2 месяцев.
Использовал Audacity, потому что на мой взгляд, он больше всего подходит для подобного типа работ, ибо даёт быстрый доступ к базовым инструментам и лёгок в освоении. В нём просто регулировать скорость относительно оригинала и сводить аудиодорожки между собой, делать усиление звука, редактировать дорожку после уже завершения работы и т.д.
После этого, я нашёл утилиту Ultimate Vocal Remover, что позволило мне извлекать голос из записи, к примеру с видеокассеты, и помещать его поверх хорошей аудиодорожки, снятой с оригинальной плёнки. На улучшение всех дорожек ушло 2 недели. Заметно повысилось качество аудио на интро и аутро серий. По итогу все проекты суммарно занимали ~150 Гб
А теперь подробнее. Начнём с подгонки одной аудиодорожки к другой. Для этого надо
1. выделить и удалить участки без звука в конце и начале обоих аудиодорожек.
2. Выделить всю аудиодорожку которую мы подгоняем под другую, затем перейти в вкладку сверху "Эффекты", затем в выпавшем меню нажать навести курсор на "Высота тона/Темп" и уже там нажать на "Изменение скорости..".
В этом окне нам нужен только один параметр - Процент изменения. Положительное число – сжимает аудиодорожку, отрицательное – растягивает. Выставляем сначала небольшое число "наугад" и нажимаем "Применить", смотрим сколько не хватило и прожимаем Ctrl+Z, повторяем процесс, меняя значение в нужную сторону, стараясь максимально подогнать эту аудиодорожку. И так, у вас это получилось. Теперь зажимая Ctrl и прокручивая колёсико вперёд, сильно приблизьте аудиодорожку и найдите какой-нибудь одинокий всплеск, подгоните аудиодорожку перемещая её, так чтобы, всплеск на обоих дорожках находился друг над другом. Если всё совпало, и аудиодорожка в других местах не отстает более чем на сотню миллисекунд, то теперь следует отменить все изменения и, не удаляя ничего у аудиодорожки, к которой мы подгоняем, примените изменение скорости и снова подгоните её по времени. Далее удалите выступающую справа часть подгоняемой аудиодорожки. После этого можно приступать ко второму этапу.
Теперь время прослушивать аудиодорожку на необходимом языке, каждую реплику на необходимом языке выделите, а затем нажмите клавишу End, тем самым разделяя аудиодорожку в месте реплики, после необходимо удалить отделившуюся слева часть аудиодорожки, например прожав комбинацию клавиш Ctrl+x. После этого, нажмите на часть аудиодорожки с репликой и кликните правой кнопкой мыши на оригинальную аудиодорожку, на которую потом планируете наложить эти реплики, в выскочившем меню нажмите "Разделить клип", а затем удалите его предложенной ранее комбинацией клавиш. И так проводите этот цикл каждый раз, до окончания аудиодорожки. Очевидно что часть, оставшуюся справа от реплики, под конец нужно удалить. Очередь третьего этапа.
Сохраняем проект нажав комбинацию клавиш Ctrl+S. Затем нажимаем на кнопку "тихо", слева от аудиодорожки на которую будем в последствии накладывать реплики на необходимом языке и производим экспорт аудиоданных, комбинацией клавиш Shift+Ctrl+E, выбираем формат. Я обычно делал экспорт в mp3, но скорее всего лучше всё же использовать wav. Сохраняем, со всем соглашаемся. Приступаем к четвёртому этапу.
Для него нам понадобится утилита Ultimate Vocal Remover, в ней мы будем при помощи нейросетей, как удалять вокал из аудиодорожки, так и удалять музыку, оставляя только вокал. Скачиваем её на гитхабе, устанавливаем и открываем. Далее нажмите "Select Input" и выбираем аудиофайл с оригинальной аудиодорожкой, на которую будем впоследствии накладывать реплики. Выбираем папку для экспорта нажав на кнопку "Select output", затем выставляем все настройки, как показано на скрине и нажимаем кнопку "Start processing".
Ждём окончания процесса, затем проводим те же операции с файлом реплик(вокалом), который сохранили в третьем этапе. Но у же с этими настройками:
Приступаем к шестому этапу.
Возвращаемся обратно к Audacity, осталось дело за малым - вклеить реплики поверх аудиодорожки. Для этого опять кидаем нужные файлы в Audacity (получившуюся чистую аудиодорожку с репликами, оригинальную аудиодорожку и её же, но без вокала).
Обязательно, необходимо, не делать этого в прошлом проекте, чтобы на случай ошибки (не до конца отрезал реплику или наоборот), иметь возможность это исправить, заново прогнав аудиодорожку через Ultimate Vocal Remover.
Теперь вырезаем моменты с всплесками на аудиодорожке с репликами, а затем делаем их усиление, если голос звучит недостаточно громко. Усиление можно сделать перейдя на вкладку "Эффекты" сверху, затем переходим в "Громкость и компрессия" -> "Усиление". И так, зачем же нам нужна оригинальная аудиодорожка без вокала? В моментах где диктор не просто переводит что-то написанное на экране, а переводит чей-либо голос, он будет звучать сразу два раза, так как он исходит из оригинальной дорожки и из нашей с репликами на другом, необходимом нам языке. Чтобы этого избежать, надо вырезать на оригинальной дорожке моменты где вот так переплетаются реплики. А затем вырезать их же на оригинальной без вокала.
Поздравляю! Ваши мучения закончились. Также, следует дополнить, что если вы собрались делать такую операцию с больше чем парой серий, то переход к четвёртому этапу можно сделать уже после окончания первых 3х этапов в остальных сериях. Дабы сделать работу чуть менее монотонной.
3. Увеличение разрешения видео
Начнём с главного - Topaz Video AI. Эта программа включает в себя огромное количество нейронных сетей для разных типов входного видео, от компьютерной графики, до реальной жизни. И почти каждая из них имеет несколько уровней обучения, от очень низкого качества исходных данных до очень высокого. Я провёл улучшение в 300% (1440p, в исходнике было 480p).
Я выбрал модель Iris, которая при сравнении показала себя как самый удачный вариант. В Topaz Video AI нет модели, созданной именно для мультипликации, но у Iris выходит делать точную детализацию, при этом избавляясь не побоюсь этого сказать, от всех артефактов видео. И помимо этого ещё и дорисовывая хорошие линии, в местах где большая часть других нейросетей сделала бы слоённый торт, что не подходит для мультипликации как таковой.
Примеры показывающие как нейросеть улучшает качество в разных по уровню качества исходниках:
Несколько прямых сравнений 1, 2, 3:
Напрашивается вопрос, почему же это тогда не сделали 20 человек до меня? Всё просто. На обработку всех серий уходит 85-130 часов работы видеокарты на полную, без учёта времени простоя, когда вам нужно заняться ещё чем-то за пк. Да, есть один пример такой работы, но тут из всех 3 мной описанных шагов, сделан всего один и то на другой, старой модели нейросети, и с всего 36 сериями из 163.
Topaz Video AI не умеет в масштабирование. На моей RX 6600, обработка одной серии в занимает ~40 минут, а на RTX 4080 ~25 минут, а разница должна быть как минимум трёхкратной, без учёта Nvidia CUDA ядер, которые обычно очень нравятся нейросетям.
P.S.
Почему 2к, а не 4к? Нет, это не потребует больше времени на обработку, проблема в том что даже при внимательном рассмотрении, разницы в качестве картинки практически нет, а происходит это из-за недостатка исходных данных для подобного разрешения. Каша станет ещё больше кашей, а уголок и сам видеоплеер сделает чуть-чуть более точным.
4. Интерполяция кадров
Почему я не прибегнул к увеличению FPS в моём ремастере? Если кратко, то вот ответ:
Это самая способная нейросеть которую я вообще смог найти, а искал я далеко за пределами Topaz Video AI. Но оказалось что всё таки Chronas (ИИ модель из Topaz Video AI) пока что лидер в этом деле.
Помимо этого, интерполяция кадров потребляет просто немеренно много ресурсов. Разница во времени обработки аж 3х кратная. Так что, заниматься интерполяцией кадров в моём случае бессмысленно и долго.
5. Обработка результатов, паковка в .mkv контейнер
Начну с интересного - цветокоррекция. Здесь всё просто, скачиваем Adobe Premiere Pro, если надо, то перепаковываем видео в .mp4, например при помощи OBS Studio, необходимые серии, где вам кажется, что изображение блёклое или наоборот слишком красочное. Далее создаём новый проект, закидываем нужную серию, (заранее скажу что я в цветокоре практический 0, так что отталкивался от гайдов умельцев, особенно полезным оказался этот) и начинаем настраивать множество параметров в Lumetri Color, меняя цвета по вкусу. Затем делаем экспорт в кодеке HEVC и ожидаем окончания обработки видео.
Вот мой пример такой работы.
По итогу, с моими настройками (HEVC, битрейт 24 мбит/с), все серии с апскейлом весили ~190гб, а это очень много. Одна серия могла иметь вес в 1.5 гб, напомню, она длится 7 минут и имеет разрешение 1440p. Так дела не пойдут. Поскольку я в основном сижу на линуксе, решаю взять утилиту для конвертации видео HandBrake.
В вкладке "Размер изображения" всё должно быть выключено, кроме "Display Size", а в "Resolution limit" выставляем "8K Ultra HD".
В вкладке "Видео" самым оптимальным пресетом в моём случае (1440p 24fps), был - кодировщик видео "H.265", постоянное качество - "RF: 12", переменная частота кадров, предустановка "ultrafast", настройки "animation".
Планку постоянного качества необходимо подбирать самому, т.к. в разных мультиках разный уровень детализации и также этот параметр влияет как неудивительно, на качество видео, и для UltraHD видео он может быть слишком низок, а для FullHD, слишком высок или наоборот. Также, можно указать постоянный битрейт самому, но мне показалось, что c RF будет проще, так как серии сильно отличаются по разрешению изображения и вместо того чтобы каждый раз гадать с битрейтом, можно использовать RF, который везде будет делать одинаково хорошо
Теперь про паковку получившихся файлов в .mkv контейнеры. Если вы хотите где-то выложить вашу работу, то это весьма важный этап, т.к. в .mkv можно использовать сразу несколько аудиодорожек, например, сделать контейнер с английской и русской озвучкой. Как раз мой случай. Для этого нам понадобится утилита MKVToolNix, в неё кидаем получившиеся файлы (русская озвучка и видео с английской озвучкой), устанавливаем языки аудиодорожек.
Нажимаем "Выполнить паковку".
По итогу, все серии ужались с общего объёма в ~190 гб, до ~60гб, с самой минимальной потерей качества. Шага с HandBrake можно было избежать, примерясь, я, сразу с битрейтом видео при настройке вывода видео в Topaz Video AI, но возможно, эта ошибка помогла мне добиться большей точности в цветокоре за счёт более высокого разрешения изображения. И нет, размер изображения в обоих вариантах тот же (1920x1440), но битрейт напрямую влияет на сжатие изображения и при битрейте 5 мбит/с, в изображении будет гораздо меньше поддающейся обработке информации, чем при битрейте 10 мбит/с.