'
Минязев А.С., Минязев Р.Ш.
РАЗРАБОТКА ИНФОРМАЦИОННОЙ СИСТЕМЫ ДЛЯ ПЕРЕВОДА ВИДЕО НА ИНОСТРАННЫЙ ЯЗЫК С ПОМОЩЬЮ НЕЙРОСЕТИ *
Аннотация:
рассматривается разработка информационной системы для перевода видео на иностранный язык с помощью нейросети. Программа разрабатывается на языке программирования Python в среде разработки PyCharm в виде веб-приложения с использованием библиотек на основе нейронных сетей. Рассматриваются вопросы выбора архитектуры и способа реализации данного приложения.
Ключевые слова:
нейросети, перевод видео, веб-приложение, язык Python
Постановка задачи.В последнее время дистанционный формат обучения стал очень популярным и востребованным способом получения образования. Это могут быть как лекции, записанные лекторами высших учебных заведений для студентов, так и видео платных курсов, на которых люди по желанию могут освоить новую специальность. Высшие учебные заведения стараются поддерживать связь с другими странами для обмена академическим опытом. Например, в КНИТУ-КАИ есть ГРИНТ с возможностью поступить на магистерские программы в университете-партнере Китая, в свою очередь китайские студенты могут обучаться здесь в России [1]. Владельцы платных курсов в свою очередь могут захотеть выйти на иностранную аудиторию для увеличения числа потребителей, что в свою очередь повысит продажи курсов. Таким образом, есть потребность записывать видео-лекции для студентов, плохо владеющих русским языком.Разрабатываемая информационная система по автоматическому переводу видео предоставляет максимально удобное решение для данной задачи. Преподавателю не требуется знать иностранный язык и хорошо на нём разговаривать. Не нужно заново записывать учебные видеоматериалы, достаточно перевести уже готовые видеоролики. Это значительно сократит временные затраты преподавателей и позволит им избежать трудоёмкой работы по озвучке учебного материала на иностранном языке.Сегодня существует некоторое количество сервисов по автоматическому переводу видео. Они могут весьма качественно переводить текст, клонировать голос говорящего, добавлять субтитры, обеспечивать визуальную синхронизацию губ человека на видео с озвучиваемым текстом. Несмотря на все перечисленные достоинства, данные сервисы в основном принадлежат иностранным компаниям, из-за чего некоторые из них недоступны на территории Российской Федерации или могут возникать трудности с их оплатой. Помимо этого, приложения по переводу видео часто являются платными и имеют интерфейс на иностранным языке, что может стать преградой для некоторых преподавателей.Разрабатываемое приложение будет доступным для всех граждан России. У сервиса будет понятный веб-интерфейс на русском языке, возможность переводить голос на разные иностранные языки (английский, французский, немецкий, испанский, итальянский). В разрабатываемой информационной системе человек при загрузке видео получает текст, исправляет там ошибки, выбирает язык перевода, получает переведённый текст, который также можно исправить, и только потом скачивает готовое видео на выбранном языке.Таким образом, разработка данной информационной системы на основе нейронной сети позволит сэкономить время при переводе видеоролика на иностранный язык и значительно сократить количество ошибок за счёт возможности их исправления.Разработка информационной системы для перевода видео.Информационная система по автоматическому переводу видео на иностранные языки будет представлять из себя веб-приложение. Через страницу в интернете пользователь будет загружать необходимые данные и получать готовый результат. Ниже представлено схематическое изображение архитектуры разрабатываемой информационной системы (см. рис. 1):Рис. 1. Схематическое изображение архитектуры приложения.При инициализации программы задаётся модель «large-v3» у Whisper [2] (для перевода речи в текст) и «xtts-v2» у coqui-ai/TTS [3] (для перевода текста в речь). Также задаётся конфигурация логирования для поиска некорректно работающих мест в коде. В директории приложения создаются папки uploads и output, в которых будут храниться промежуточные файлы. После этого программа ожидает получение видеофайла от пользователя.Пользователь загружает видео, указывает путь для сохранения результата и нажимает кнопку «Транскрибировать», что запускает метод transcribe. Если при нажатии кнопки не было загружено видео, то появится сообщение об ошибке. Если не был указан путь, то результат будет сохраняться в папку output, созданную при инициализации.Метод transcribe сначала создаёт временный видеофайл в папке upload и копирует туда содержимое загруженного видео. Затем с помощью ffmpeg [4] из видео извлекается аудиодорожка в формате wav, которая транскрибируется с помощью faster-whisper. На выходе получаем массив сегментов, содержащих текст, время начала и окончания произнесения текста. Обычно сегмент это одно или два предложения продолжительностью 5-10 секунд. Потом текст из сегментов сохраняется в txt файле, где будет храниться текст из видео. Время начала и окончания сегмента с произнесённым текстом сохраняются в vtt файл, который представляет из себя субтитры. Время переводится в формат «часы:минуты:секунды.миллисекунды», в начале файла добавляется «WEBVTT». Время начала и окончания сегмента разделяется стрелкой «-->». В конце метод сообщает, что операция успешно завершена.У пользователя на экране появляются текстовое содержимое видео, по которому можно проверить правильность перевода видео в текст, и текстовое поле с субтитрами, в котором можно исправить ошибки и неточности. После внесения всех изменений нужно нажать кнопку «Сохранить изменения в субтитрах (VTT)», что запустит метод save_vtt. Данный метод сохраняет в файл субтитры и добавляет в начало «WEBVTT», если его там нет. Затем в выпадающем списке пользователь выбирает язык перевода (по умолчанию английский) и нажимает кнопку «Перевести текст видео», что запускает метод translate.Метод translate проверяет, что есть файл с субтитрами и сохраняет его содержимое в переменную. Затем субтитры разбиваются на массив строк. Если в строке находится текст, то он переводится методом GoogleTranslate.translate из библиотеки deep-translator [5]. После субтитры с переведённым текстом сохраняются в файл, который расположен в output или папке, указанной пользователем.В результате работы метода на экране появляется текстовое окно с переведёнными субтитрами, которые можно при необходимости изменить. Чаще всего ошибки бывают в именах собственных, специфических терминах и жаргонизмах. После всех исправлений и нажатия кнопки «Сохранить изменения в переведённых субтитрах (VTT)» запускается метод save_vtt, который по аналогии с обычными субтитрами сохраняет файл с переведёнными.Пользователь может загрузить образец голоса, поставить флажки для наложения субтитров и синхронизации губ и нажать кнопку «Перевести видео», которая запустит метод voice_over_vtt. Сначала идёт проверка на наличие переведённых субтитров, которые потом разбиваются на строки и сохраняются в массив. Создаётся массив сегментов аудио. В качестве образца голоса озвучки используется извлечённая из видео аудиодорожка или пользовательская аудиодорожка, если она была предоставлена до этого. После этого начинается процесс получения переведённой озвучки. Сначала находится и сохраняется в переменную время начала первого сегмента в субтитрах. Затем метод проходится по строкам переведённых субтитров. Временные метки переводятся из строки времени формата VTT в числовой формат секунд с помощь метода parse_vtt_time. Затем полученное время начала и конца сегмента, сам текст и образец голоса используются для получения сегмента аудио с помощью метода generate_audio_segment.Перевод текста в голос осуществляется с помощью метода tts_to_file из библиотеки coqui-ai/TTS. Получая на вход текст, образец голоса в формате wav, язык озвучки и путь для сохранения результата, данный метод способен озвучить текст голосом образца и сохранить результат в указанной папке. Затем сравнивается длина получившегося аудио с длиной изначального сегмента, которая равна разнице времени конца и начала в субтитрах. Если получившееся аудио короче оригинала, то вычисляется разница во времени и этот промежуток заполняется тишиной. Если же аудио оказалось длиннее, то вычисляется во сколько раз и в это количество раз оно ускоряется. При этом есть ограничение, что нельзя ускорять более чем в 1.5 раза, чтобы речь не была чрезмерно быстрой и сложной для восприятия. Когда получается аудио в 1.5 и более раз длиннее оригинала, то итоговая аудиодорожка получится чуть длиннее, чем оригинальная. Затем метод generate_audio_segment возвращает аудиосегмент и путь к нему.Таким образом, метод voice_over_vtt получает массив озвученных сегментов из субтитров. Теперь необходимо объединить их все в один аудиофайл. В начало добавляется тишина, равная по длине времени начала первого сегмента в субтитрах. Цикл обрабатывает список сегментов аудио. Вычисляется разница между прошлом временем конца и текущим временем начала субтитра, чтобы вычислить длину пауз между предложениями. Затем к общему аудиофайлу добавляется эта пауза и сегмент аудио. В конце этот аудиофайл сохраняется, а промежуточные сегменты аудио удаляются. Аудиодорожка очищается от шумов и помех методом reduce_noise из библиотеки noisereduser. После этого с помощью команды ffmpeg переведённая озвучка накладывается поверх изначального видео. Если до этого был указан флажок «Наложить субтитры», то с помощью ffmpeg на видео будут наложены переведённые субтитры.Потом, при отмеченном флажке «Функция синхронизации губ», происходит синхронизация губ (lipsync) на видео с помощью библиотеки Wav2Lip. Для работы данной библиотеки необходимо в терминале с помощью метода subprocess.run запустить команду (см. главу 3.1). Данная библиотека работает некорректно, если на видео есть речь, но нельзя распознать лицо.Затем сравнивается длина оригинального и полученного после наложения видео. Длина видео находится внутри метода get_audio_duration с помощью ffmpeg команды. Если полученное видео длиннее (из-за сегментов, которые были в 1.5 и больше раз длиннее оригинальных), то находится разница между длительностями и создаётся видео из стоп-кадра. Эту работу выполняет метод create_freeze_frame_video.Сначала из видео извлекается последний кадр. После этого из этого изображения создаётся видео, по длительности равное разнице между оригинальным и полученным при наложении видео. После чего видео с наложенной дорожкой и видео, полученное из стоп-кадра, объединяются в одно итоговое видео, которое является результатом работы приложения. Все эти действия выполняются с помощью ffmpeg команд в терминале.По итогу, получено готовое видео с переведённой озвучкой. Метод voice_over_vtt сообщает об успешном окончании работы. На странице появляется итоговое видео и озвучка. Пользователь может оттуда скачать их себе на устройство. В любом случае, они будут сохранены в папку output или указанную пользователем в начале. Сразу после выполнения метода voice_over_vtt запускается метод cleanup_temp_files, который удаляет все файлы из uploads вместе с этой папкой и все файлы из output, кроме итогового видео и озвучки. После этого программа может быть использована снова при загрузке нового видео.
Номер журнала Вестник науки №5 (86) том 2
Ссылка для цитирования:
Минязев А.С., Минязев Р.Ш. РАЗРАБОТКА ИНФОРМАЦИОННОЙ СИСТЕМЫ ДЛЯ ПЕРЕВОДА ВИДЕО НА ИНОСТРАННЫЙ ЯЗЫК С ПОМОЩЬЮ НЕЙРОСЕТИ // Вестник науки №5 (86) том 2. С. 847 - 855. 2025 г. ISSN 2712-8849 // Электронный ресурс: https://www.вестник-науки.рф/article/22932 (дата обращения: 20.07.2025 г.)
Вестник науки © 2025. 16+
*