Выброс из головы , достойный на новый проект . Часть #1
Сидел как-то смотрел я Youtube и подумал, вот бы была бы возможность взять англоязычный ролик, вытащить его, отделить от ролика звуковую дорожку, в помощь python и любого распознавателя речи (а их много) вытащить массив слов для перевода.
После того как мы вытащим слова, переводим их на другой язык, немного уменьшаем громкость оригинальной дорожки и накладываем переведенный звук поверх. Получится универсальный переводчик любого англоязычного ролика и наоборот! Именно звуковой перевод, не субтитры.. что реально интересно. Можно будет поиграться с движками распознавания - выбор есть.
А также можно попробовать сделать любой русскоязычный ролик - английским, китайским , японским , да хоть каким .. Тоже интересно.
Вероятно, перевод будет кривой, но разве это повод опускать руки? Всегда можно что-нибудь придумать костыльное, но рабочее.
Поехали!
И так, как хороший ленивый программист игнорируем тз, а список требований сокращаем в 100 раз для своего удобства. В целом нам требуется :
1.Скачать видео из Youtube по URL
2.Отделить видео от аудио и сохранить 2 файла в одну папку
3.Вытащить текст из аудио
4.Перевести текст
5.Из текста создать новую дорожку
6.Наложить переведенную дорожку на оригинальную дорожку ( оригинальную немного приглушить что бы лучше было слышно перевод )
7.Наложить звук обратно на видео
8.Наслаждаться ОТМЕННЫМ переводом .
И так начнём!
Создаем 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') ## Путь до аудиофайла
Теперь перехожу к обработке .... Но уже в следующем посте .
Программирование на python
681 пост11.9K подписчика
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако!
Приветствуется:
• уважение к читателям и авторам
• конструктивность комментариев
• простота и информативность повествования
• тег python2 или python3, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу