Выброс из головы , достойный на новый проект . Часть #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) ## выводим массив найденных слов
Давайте переведём эти слова
Использовать будем библиотеку deep_translator
from deep_translator import GoogleTranslator
to_translate = massslov[0]
translated = GoogleTranslator(source='auto', target='ru').translate(to_translate)
print(translated)
И на выходе получаем это :
Получится что-то похожее на текст . Похожее на перевод .
Далее нужно этот текст озвучить :
Используем библиотеку 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 файл с переводом , давайте совместим видео с аудиодорожкой .
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, если актуально
• код публиковать в виде цитаты, либо ссылкой на специализированный сайт
Не рекомендуется:
• допускать оскорбления и провокации
• распространять вредоносное ПО
• просить решить вашу полноценную задачу за вас
• нарушать правила Пикабу