Озвучка, заметки программиста

Озвучка, заметки программиста
Отгадали фильм? В статье будет пасхалка со ссылкой.
Заметки в рабочих чатах по мотивам ГрюJJnОJdf

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

По задачам:

  1. Как удобно скачать ролик из интернета с помощью консоли
  2. Как пожать видео, если оно "слишком" production
  3. Как отрезать нужный эпизод
  4. Как сгенерировать субтитры*
  5. Как добавить субтитры на видео*
  6. Как разделить в дорожке голос от фона
  7. tl;dr (резюме или requirements.txt для установки всех приложений в Python)

*пп. 4-5 - от лукавого, автоматическая генерация субтитров в CapCut работает очень даже хорошо (и быстро).

Скачать ролик из интернета с помощью консоли (если он доступен на Youtube, пример):

pip install yt-dlp
yt-dlp "https://www.youtube.com/watch?v=ACPcQyrl3Xo"

Пожать видео, если оно "слишком" production. Пример как мне удалось превратить видео размера 500MB (исходник в формате *.mov) в 35 MB (результат в формате *.mp4) без заметной потери качества для просмотра с планшета или телефона (приложение ffmpeg):

Обратите внимание на параметр "-crf 23", чем больше нужно пожать, тем больше должно быть значение (и наоборот)

ffmpeg -i input.mov -c:v libx264 -crf 23 -preset slow -c:a aac -b:a 192k output.mp4

Отрезать нужный эпизод (вырезаем участок с 22 секунды по 2 мин 06 секунд из видео input.mp4 и сохраняем результат в output.mp4 с помощью приложения ffmpeg):

ffmpeg -i input.mp4 -ss 00:00:22 -to 00:02:06 -c copy output.mp4

Сгенерировать субтитры:

установить пакет Python:

pip install openai-whisper

Пользуемся. Версия A (показать на экране):

whisper input.mp4 --language Russian

Версия B (сохранить в файл субтитров, чтобы можно было добавить к видео):

whisper input.mp4 --language Russian --output_format srt

Добавить сутритры на видео:

Просто докинуть дорожку субтитров к видео:

ffmpeg -i input.mp4 -i output.srt -c copy -c:s mov_text output.mp4

(Обычно более полезно для удобной озвучки) Добавить субтитры изображением поверх видео, чтобы их можно было видеть при просмотре видео в вашем любимом видеоредакторе (e.g. CapCut):

ffmpeg -i input.mp4 -vf "subtitles=output.srt:force_style='Fontsize=24,PrimaryColour=&HFFFFFF&'" -c:a copy output.mp4

Разделить в дорожке голос от фона: платные видеоредакторы (e.g. CapCut Pro) и Web-утилиты опустим, поговорим про то, что доступно из консоли программисту. Нашел интересный проект человека, который раньше работал в Meta, оттуда уволился и сделал этот open source проект своим (а что так можно было? ;)):

Устанавливаем Python пакет:

pip install demucs

Мне правда пришлось актуализировать некоторые пакеты до последних версий:

pip install --upgrade torch torchaudio soundfile

Выгружаем из видео видеодорожку отдельно в .wav файл:

ffmpeg -i input.mp4 -vn -acodec pcm_s16le -ar 44100 -ac 2 audio.wav

И обрабатываем дорожку на две (фон и голос):

demucs -d cpu --two-stems=vocals audio.wav

Мне модель по умолчанию (и последняя актуальная) по качеству не понравилась. Больше подошла предыдущая модель. Ее можно установить и использовать следующим образом:

pip install diffq
demucs -d cpu --two-stems=vocals -n mdx_extra_q audio.wav

PROFIT: закидываем два-три видео в видеоредактор: один с субтитрами (для удобно озвучки), второй без - для финального монтажа видеролика без лишнего текста, третий (по желанию) на английском языке, чтобы было удобно послушать эмоции и оригинальную речь актера. Закидываем туда дорожку с фоном и голосом. Фон оставляем как есть, а голос нарезаем на те куски, которые принадлежат нашему герою, чтобы вынести на отдельную дорожку и замьютить (и при желании послушать для сравнения). Пример в CapCut:

Озвучка эпизода из прекрасного фильма "Еще по одной". Хотите услышать результат - подписывайтесь и ставьте лайки 😃

Bonus или обещанный tl;dr

  1. Установить: ffmpeg
  2. Установить следующие пакеты на Python (requirements.txt):
demucs
diffq
openai-whisper
yt-dlp
  1. Вероятно будет необходимо (доставить и) сделать upgrade следующий Python пакетов (в формате requirements.txt):
soundfile
torch
torchaudio

На память, удобный shortcut для разреза дорожки в CapCut: Command (⌘) + B

P.S. Данный manual в идеальном мире разработчика предполагает настройку Python окружения (чтобы не гадить в system-wide). Если вы не программист - можно не париться. Но если программист и не знаете, что это такое, то обязательно изучите. Написать мануал по этой части у меня пока не дошли руки, но вы можете легко почерпнуть эти знания из интернета или, если удобнее, на курсе:

Python для анализа [больших] данных | BigData Team
База по Computer Science для работы с данными: работа в консоли, настройка окружения, классы и структуры данных. Научитесь оценивать производительность и сложность алгоритмов. Погружение в анализ данных на Python.