Алгоритм перевода видео-аудио с любого языка на любой язык в 10 шагов

в 12:43, , рубрики: SaaS сервисы, видео, дубляж, перевод

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

Для этого вам потребуется какой-то сервис, который для вас переозвучит видео. Проведя исследование, я пришёл к выводу, что сейчас самый лучший по качеству сервис предоставляет (раск) https://www.rask.ai/ у них своя нейронка, и стоит их услуга примерно 100$ за 1 час переводов на 1 язык, это очень дорого

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

Примеры переводов

Алгоритм

Опишу как переводить видео с русского на английский. Но можно выбрать любую другую пару языков.

Шаг 0. Подготовим файл с видео
Допустим у нас есть файл x.ru.mp4

Шаг 1. Достать аудио из видео
Перевод видео на другой язык, это перевод его аудио на другой язык. По-этому нам само видео понадобится только в конце, когда мы будем накалдывать на него готовую английскую дорожку. 

Можно доставать аудио из видео с помощью ffmpeg, но это как вам угодно. Ещё раз, я акцентируюсь на алогритме, а не на инструментах. 

В результате этого шага у вас должен появиться файл x.ru.mp3

Шаг 2. Спарсить текст из аудио с временными пометками
Тут вам скорее понадобится какое-то апи, причём подойдёт как то, которое парсит время произношения каждого символа, так и то, которое просто отдаёт файл с субтитрами.

Шаг 3. Нормализовать текст с временными пометками
Так как я не знаю, в каком формате вы получили данные на шаге 2, помечу какими они должны стать. Вам нужен текст разбитый на предложения, произнесение которых не слишком долгое, и не слишком короткое. Идеально 20 секунд. Можно короче, если после предложения идёт длинная паза, условно от 3 секунд. 

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

В результате этого шага у вас должен появиться файл с субтитрами x.ru.srt

Шаг 4. Перевести файл с субтитрами
Любыми правдами и не правдами замените текст в файле с субтитрами на английский не изменяя временных пометок.

В результате этого шага у вас должен появиться файл с английскими субтитрами x.en.srt

Шаг 5. Озвучьте файл с субтитрами в отдельные аудио записи
Как мы помним у нас теперь файл с субтитрами состоит из абзацев длительностью примерно 20 секунд на оригинальном языке. Теперь вгрузите это в какую-нибудь TTS апишку и получите столько же аудиофайлов. Они не будут совпадать длиной с оригинальными аудио дорожками, это мы решим дальше

В результате этого шага у вас должно быть много файлов с короткими аудио 1.en.mp3, 2.en.mp3, ...

Шаг 6. Растяните, ужмите или дополните тищиной полученные файлы
Это дело вторческое. Мы специально разбивали текст на около 20 секундные дорожки. При таком раскладе разница в скорости разных языков почти невилируется. По-этому файлы на английском по длине будут отличаться максимум на 10–20% от длины аудио на русском. Если длина больше, то точно ужимаем с помощью того же ffmpeg. Если длина меньше, то можно растянуть, но звучит плохо. Можно дополнить файл тишиной, но тогда по всей аудио будут неуместные паузы. В общем, тут не идеально, да, но работает.

В результате этого шага у вас должно быть много файлов с короткими аудио 1.en.mp3, 2.en.mp3, ... которые соответствуют по длине оригинальным аудио фрагментам

Шаг 7. Создайте аудиофайлы с паузами, в которых не было текста
Вероятно в вашем видео спикер молчал между некоторыми абзацами, просто высчитайте по файлу с субтитрами, где там паузы и созайте mp3 с тишиной

В результате этого шага у вас должно быть много файлов с беззвучными аудио 1_2.en.mp3, 6_7.en.mp3, ...

Шаг 8. Слепите все аудиофайлы в один аудиофайл
В результате этого шага у вас должен появиться файл x.en.mp3

Шаг 9. Опционально, достаньте фоновый звук из оригинального видео
Вероятно ваш спикер был на улице, и вообще был какой-то фоновый звук. Его надо достать. 

В результате этого шага у вас должен появиться файл x.background.mp3

Шаг 10. Наложите звук на видео
У вас есть x.ru.mp4, x.background.mp3, x.en.mp3, вот их надо объединить. И готово.

Вопросы

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

Я делаю этот проект в партнёрстве с другим человеком, и у меня там только доля. По-этому я не могу поделиться с вами исходниками или информацией о себестоимости, но согласовал возможность поделиться с вами алгоритмом, в надежде, что аудитория хабра поможет разобраться со следующими вопросами:

  1. Среди вас есть кто-то кому мог бы быть интересен такой сервис и для какой цели?

  2. Как вы думаете, кому вообще мог бы быть полезен такой сервис, какой аудитории?

  3. Может быть у вас есть какие-то идеи о том, каким образом можно было бы такой сервис продвинуть, ну и любые вообще идеи в этом направлении. Буду очень признателен 🙂

Просьба

Я тут недавно выкладывал на хабр статью про то, что сделал свой фулстек курс бесплатным https://habr.com/ru/articles/866678/

Я только что этот же курс перевёл с помощью описанного выше алгоритма и разместил на другом своём ютуб канале https://www.youtube.com/@devFlexer

И разместил статью на забугорном хабре (dev.to): https://dev.to/iserdmi/free-full-stack-web-service-development-guide-from-scratch-with-video-lessons-source-code-and-bm5

И разместил статью на медиуме: https://medium.com/@iserdmi/free-full-stack-web-service-development-guide-from-scratch-with-video-lessons-source-code-and-b48d8e6ba5c2

Можете, пожалуйста, полайкать, покомментить статьи на dev.to и медиум, полайкать на ютубе? Мне это нужно чтобы внутренние алгоритмы dev.to, медиум и ютуба зашевелились. Дальше всё само сделает ежедневное выкладывание уроков.

Как результат, мне интересно, будет ли зарубежная аудитория смотреть контент переведённый таким алгоритмом, при условии что изначальный контент был интересен аудитории на русском языке. Обещаю через месяц другой сделать апедейт в этой статье и рассказать об успехах (или не успехах) в этом деле. Это может быть полезно тем, кто сейчас задумался о том, чтобы свой контент перевести таким образом и также выложить на ютуб

Автор: iserdmi

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js