Дубляж одной кнопкой
Приветули! Пару недель назад мне понадобилось перевести пачку старых видео, с озвучкой. В наш век нейросетей мне показалось что нейросети есть для всего.
В целом я был прав, но отчасти. Наткнулся на программулину pyvideotrans
Тыкался мыкался, взлетело тяжело, и не так как я рассчитывал. Она конечно всё перевела. Но во 1 прям очень плохо, во 2 звук мне пришлось сводить потом вручную. Согласитесь для того что бы посмотреть видео с русским дубляжом, слишком много возни.
Ну и так как количество видео убавилось на 1, а впереди их было много и в планах ещё больше. Я решил что надо исправить недоразумение и собрать что-то своё. Благо нейронки позволяют.
Так родилась идея, родить фабрику по переводу видео. Мы на вход кидаем видео, выбираем настройки, нажимаем старт, уходим, возвращаемся и получаем готовое видео.
А тут ещё на пикабу (@Magor15, как и обещал, я тебя тегаю.) задал вопрос про простой сценарий. На что я справедливо решил, что такая идея вероятно все же имеет спрос.
К тому моменту программа была готова где-то наполовину. Я выбрал самые стабильные модели из возможных.
И всё шло хорошо. Whisper хорошо определял текст, алгоритмом мы их размечали и получалось меньше 1% промахов в распознавании и разметке реплик. Что мотивировало работать дальше.
Из принципиального, хотелось иметь возможность закольцевать пайплайн локально. Для чего потребовалась LLM как переводчик текста. По началу я использовал qwen на 8b параметров, но во 1 он был квантованный, т.е. сжатый, и работы по переводу не специализированной моделью, занятие честно не благодарное. Поэтому я пошерстил информацию и обнаружил TranslateGemma 4B, более скормная модель, из плюсов, в нашей сборке она почти без квантования, и потому работа переводчика у неё лучше. Но опять же с оговоркой, что на высокую художественность тут расчитывать не стоит. Однако. После распознания речи, у нас генерируются субтитры на языке оригинала. И тут есть некоторый фокус, если хочется больше художественности.
Мы просто отгружаем srt файл с субтитрами в любую топовую нейросеть, прямо в чат, и просим красиво перевести. Результат получается кратно лучше, высокохудожественно, но немного не автоматизированно.
И после этой манипуляции выбираем в настройках "Только озвучить" подтягиваем полученные субтитры и смело озвучиваем выбранной далее нейросетью для озвучивания.
И тут мы подходим к этапу который съел больше всех времени. На выбор для озвучки есть две нейросети. Supertonic, простой как палка, есть пачка предобученных голосов от самого поставщика, работает как на процессоре так и на видеокарте, достаточно шустро. С ним было буквально 0 проблем, он работает с самой первой версии.
А вот его коллега OmniVoice, мммм, сколько нервов он мне промотал. Фокус в том, что omnivoice умеет клонировать голоса. Но для этого ему нужно хотя бы 10 секунд чистого звука. А если вы озвучиваете длинный фильм, то их надо правильно достать и отдать ему. Ошибок было много. О них я расскажу в следующих постах. Пока в общем.
Финальный штрих, который закрывал мою боль, это автоматическая сборка. Т.е. после озвучки, нужно было её добавить в оригинальное видео. А т.к. озвучка у нас идёт в чистом виде, без фоновых звуков фильма, нужно было применить алгоритм приглушения оригинала, который вставлял переведенную фразу в тайминги оригинала, и заглушал оригинальную дорожку.
И в итоге я получил готовое видео, переозвученное на русский язык. Да, результат далек от фантастики. Но если желание посмотреть видео с переводом сильно выше, чем желание ждать дубляж. И есть хотя бы rtx 3060 на 12 гб, то у меня есть что вам предложить :) Кстати вы можете оценить работу озвучивания supertonic вот в этом посте
Что по итогу. Работает всё. Я бросил все силы на то, что бы максимально отладить функционал. На моём пк, всё работает великолепно. И потому я предлагаю вам присоединится к бета тесту функционала. Однако должен предупредить, интерфейс пока болезный. Доверять полосам прогресса нельзя. Поэтому я дальше вам дам немного известных багов, а вы будете их иметь в виду во время пользования.
Если программа будет пользоваться спросом, интерфейс я приведу в порядок, но лично мне такого костыльного интерфейса хватает. Там не очень много проблем на самом деле.
И самая первая проблема в обманчивом окне для перетаскивания видео. Бросаем видео во вторую зону, а потом ОБЯЗАТЕЛЬНО нажимаем кнопку Определить. Всё, у вас создаётся проект для видео и вы можете выбирать модели, настройки и запускать. Это ключевая ошибка интерфейсная, на которой можно жестко споткнутся.
Ещё буквально пока писал пост обнаружил что окошечко "Откуда берём субтитры" может не появится, если ещё ни одного видео не перевели в принципе. Переводим одно видео, жмём несколько раз на кружок со стрелочкой, это обновляет интерфейс. И окошко должно появится.
Ну и финальное, что полосы прогресса отображают хрен пойми что. Внизу есть журнал, когда прогон закончится, у вас появится уведомление о завершении. Просто не обращайте внимания.
Архив с программой весит чуть больше 1 гб, после распаковки, установки и скачивания моделей распухнет до 15+ гб, имейте в виду. Для комфортного пользования рекомендуется хотя бы RTX 3060, модельки небольшие, на каждом этапе выгружаются. Я постарался максимально всё оптимизировать в этом месте. Если будет возможность, поделитесь на каком железе запускали и как прошло.
Спасибо что прочли, ссылочка на vt - переводчик видео.
P.S. Программа кстати бесплатная, предоставляется as is, все модели вы скачиваете из их оригинальных источников, для этого вам предоставлен мастер для скачивания, коммерция и клонирование чужого голоса без согласия запрещены. Подробную информацию о моделях можете прочитать на их оригинальных сайтах.











