Сидел как-то смотрел я 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') ## Путь до аудиофайла
Теперь перехожу к обработке .... Но уже в следующем посте .