Выброс из головы , достойный на новый проект .  Часть #1

Сидел как-то смотрел я Youtube и подумал, вот бы была бы возможность взять англоязычный ролик, вытащить его, отделить от ролика звуковую дорожку, в помощь python и любого распознавателя речи (а их много)  вытащить массив слов для перевода.


После того как мы вытащим слова, переводим их на другой язык, немного уменьшаем громкость оригинальной дорожки и накладываем переведенный звук поверх. Получится универсальный переводчик любого англоязычного ролика и наоборот! Именно звуковой перевод, не субтитры.. что реально интересно. Можно будет поиграться с движками распознавания - выбор есть.

Выброс из головы , достойный на новый проект .  Часть #1 YouTube, Python, Программирование, Google, Google Translate, Text-to-speech, Видео, Длиннопост

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

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


Поехали!


И так, как хороший ленивый программист игнорируем тз, а список требований сокращаем в 100 раз для своего удобства. В целом нам требуется :


1.Скачать видео из Youtube по URL

2.Отделить видео от аудио и сохранить 2 файла в одну папку

3.Вытащить текст из аудио

4.Перевести текст

5.Из текста создать новую дорожку

6.Наложить переведенную дорожку на оригинальную дорожку ( оригинальную немного приглушить что бы лучше было слышно перевод )

7.Наложить звук обратно на видео

8.Наслаждаться ОТМЕННЫМ переводом .

Выброс из головы , достойный на новый проект .  Часть #1 YouTube, Python, Программирование, Google, Google Translate, Text-to-speech, Видео, Длиннопост

И так начнём!

Создаем py файл, и начинаем калякать.


Для того, чтобы скачать видео нам требуется библиотека "youtube_dl" следственно импортируем её.

import os ## Требуется для os.path и поиска пути директории

import youtube_dl # импортирую библиотеку

ydl = youtube_dl.YoutubeDL({'outtmpl': '%(id)s%(ext)s'})

with ydl:

result = ydl.extract_info( ##извлекаем информацию о видеофайле из ссылки

'https://www.youtube.com/watch?v=vFdE02UwMV4%27, ## ссылка на видеофайл

download=False ## Скачать информацию True False

)

if 'entries' in result:

# Если плейлист или список

video = result['entries'][0]

else:

## просто видео

video = result


И так на выходе получаем словарь, в котором начинаем рыться и искать URL на видео.

После копания в данном словаре я нашел что видео и звуковая дорожка находятся отдельно. Прекрасно, тогда скачиваем всё!



Поиск ключа и его значений:

slovar = video.keys() # выводим все ключи словаря

videos = video['formats'][6]['url'] ## URL видео было в списке "formats"

print(video['formats'][6]['url']) ## ПРИНТУЕМ

audios = video['formats'][3]['url'] ## URL аудио было в списке "formats"

print(video['formats'][3]['url']) ## ПРИНТУЕМ



Скачивать решил через WGET библиотеку.


import wget

wget.download(videos, "yt_vid.mpeg")

wget.download(audios, "yt_sound.mp3")


Получаю два загруженных файла в папке, один видео, второй звук.


Получаем пути этих файлов:


path_vid = os.path.join(os.getcwd(), 'yt_vid.mpeg') ## Путь до видеофайла

path_audio = os.path.join(os.getcwd(), 'yt_sound.mp3') ## Путь до аудиофайла

Теперь перехожу к обработке .... Но уже в следующем посте .

Правила сообщества

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


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу