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

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

Работает - палкой и смекалкой , но все же , возможно когда-нибудь пригодится человечеству ( вероятность = 0 )

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

Проблема сразу меня атаковала и отняла 4 часа моего времени на её решение ( диванные эксперты справились бы за 1 минуту но я еще молод и глуп что бы просить помощи у великих .. )
Так вот , аудиофайл с youtube скачивается хоть и как mp3 файл , но mimetype у него webm , для этого пришлось скачать еще 3 файла с ffmpeg и закинуть в мою директорию указав в python .

import speech_recognition as sr

from os import path

from pydub import AudioSegment

AudioSegment.converter = "ffmpeg.exe"

AudioSegment.ffmpeg = "ffmpeg.exe"

AudioSegment.ffprobe ="ffprobe.exe"


с помощью библиотеки AudioSegment я импортирую исходный трек
sound = AudioSegment.from_file(namefile+".mp3")
beginning = sound + 1
Прибавляю 1db громкости ## мне помогло немного повысить точность распознания , если криво распознает убрать .

И теперь, сохраняет файл в wav формате со всеми изменениями .
beginning.export("outputfile.wav", format="wav")


Далее переходим к блоку распознания и так :

Импортируем библиотеки , да где то выше я уже импортировал их , но НУЖНО БОЛЬШЕ ИМПОРТОВ .
import speech_recognition
from speech_recognition import *

Берем наш файл и объявляем объект

sample_audio = speech_recognition.AudioFile('outputfile.wav')

r = sr.Recognizer()

with sr.AudioFile('outputfile.wav') as source:

audio = r.record(source) чтение объекта ( аудиофайла)

print(type(audio)) выводим тип аудиофайла , удостоверяемся что он объект своими глазами

massslov = [] - сюда будут выводиться слова которые нашел sphinx

try:

out = r.recognize_sphinx(audio, language="en-US")

massslov.append(out)

## далее идут исключения если ничего не нашел или невозможно найти .

except sr.UnknownValueError:

print("Sphinx could not understand audio")

except sr.RequestError as e:

print("Sphinx error; {0}".format(e))

print("--- %s seconds ---" % (time.time() - start_time)) ## считаю сколько времени займет процедура

Кстати, процедура не быстрая , 2 минутный трек читает около 80 сек . (На моём пеньке , у вас может будет быстрее) 

print(massslov) ## выводим массив найденных слов

Выброс из головы , достойный на новый проект .  Часть #2 Наверное конец ... Python, Программирование, Google, Нейронные сети, Google Translate, Перевод, Видео, Длиннопост

Давайте переведём эти слова


Использовать будем библиотеку deep_translator

from deep_translator import GoogleTranslator

to_translate = massslov[0]

translated = GoogleTranslator(source='auto', target='ru').translate(to_translate)

print(translated)



И на выходе получаем это :
Выброс из головы , достойный на новый проект .  Часть #2 Наверное конец ... Python, Программирование, Google, Нейронные сети, Google Translate, Перевод, Видео, Длиннопост

Получится что-то похожее на текст . Похожее на перевод .

Далее нужно этот текст озвучить :

Используем библиотеку gtts

from gtts import gTTS  ## импортируем библиотеку

import os  ## системные утилиты будет для сохранения нужна

text = translated ## говорим что текст для озвучки хранится в переменной translated

language = 'ru' # язык русский

speech = gTTS(text = text, lang = language, slow = False) ## с параметрами не игрался , возможно можно настроить более тонко , мне лень было честно , со slow можно играться , если в видео говорят быстро ставим True , а если нет - False.

speech.save("text.mp3") ## сохраняем в text.mp3 в нашей директории

И так ,есть видео , есть mp3 файл с переводом , давайте совместим видео с аудиодорожкой .


Используем библиотеку mhmovie

from mhmovie import *  ## импортируем библиотеку

m = Movie(namefile+".mpeg") # указываем видеофайл

mu = Music('text.mp3') # указываем звуковой файл

final = m+mu #соединить звук и видео

final.save(namefile+"film.mp4") ## сохраняем результат

и на выходе получаем ролик с переводом , открываем и наслаждаемся .. ( ржем с перевода ) мне стыдно :(

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

Все остальное допилю ,

Берем видео (Английская болтовня )

https://www.youtube.com/watch?v=hVivvHS4QZQ

А получаем вот что :

В общем ,  проект есть на моём github , код открыт для всех :
https://github.com/tagunzet/Translate_Youtube_movie/tree/mai...

Программирование на python

680 постов11.9K подписчика

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

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


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

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

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

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

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

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


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

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

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

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

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