добавил комменты и убрал стандартный логер

This commit is contained in:
2022-12-24 15:02:54 +03:00
parent 939b657bca
commit b99a826c05
2 changed files with 64 additions and 42 deletions
+51 -30
View File
@@ -5,6 +5,9 @@ from functions.loging import loging
class Converter:
"""
Этот класс выполняет главную функцию, конвертирует голос в текст
"""
def __init__(self, path_to_file: str, message, language: str = "ru-RU"):
self.language = language
self.path_to_file = path_to_file
@@ -12,44 +15,62 @@ class Converter:
self.message = message
def audio_to_text(self) -> str:
"""
Основная функция
:return: str - текст + служебная информация
"""
try:
try:
import mutagen
f = mutagen.File(self.path_to_file)
if float(f.info.length) >= 30.0:
self.service = "google"
return self.google()
f = mutagen.File(self.path_to_file) # получение данных mutagen
if float(f.info.length) >= 30.0: # если длинна больше 30 секунд
self.service = "google" # устанавливаю сервис google
return self.google() # запуск функции google
else:
self.service = "yandex"
return self.yandex()
except:
return self.google()
except sr.RequestError:
return "Толи файл слишком большой, толи с ботом что-то случилось"
self.service = "yandex" # устанавливаем сервис yandex
return self.yandex() # запуск функции yandex
except: # если какая-то проблема
return self.google() # запуск функции google
except sr.RequestError: # обработка ошибки размера файлов
return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки
def google(self) -> str:
"""
Функция работающая с stt google
:return: str - текст + служебная информация
"""
subprocess.run(['ffmpeg', '-v', 'quiet', '-i', self.path_to_file, self.path_to_file.replace(".ogg", ".wav")])
# перевод ogg в wav
try:
os.remove(self.path_to_file)
wav_file = self.path_to_file.replace(".ogg", ".wav")
r = sr.Recognizer()
with sr.AudioFile(wav_file) as source:
audio = r.record(source)
r.adjust_for_ambient_noise(source)
os.remove(self.path_to_file) # удаляю файл
wav_file = self.path_to_file.replace(".ogg", ".wav") # замена в ссылке на файл ogg в wav
r = sr.Recognizer() # создаю объект google stt
with sr.AudioFile(wav_file) as source: # получаю байты из файла
audio = r.record(source) # получаю файл в нужном google stt формате байт
r.adjust_for_ambient_noise(source) # мини очистка шума
try:
response = "google\n\n" + r.recognize_google(audio, language=self.language)
loging(self.message, "google", wav_file, response)
os.remove(wav_file)
return response
except sr.UnknownValueError:
return "google\n\n Слова не распознаны, вы что вообще мне впихнуть пытаетесь"
except FileNotFoundError:
return "Толи файл слишком большой, толи с ботом что-то случилось"
response = "google\n\n" + r.recognize_google(audio, language=self.language) # получение текста
loging(self.message, "google", wav_file, response) # записываю логи
os.remove(wav_file) # удаляю лишние файлы
return response # возвращаю текст
except sr.UnknownValueError: # ошибка распознавания текста
return "google\n\n Слова не распознаны, вы что вообще мне впихнуть пытаетесь" # возвращаю ошибочное
# сообщение
except FileNotFoundError: # ошибка файла(из-за веса telegram не пускает)
return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки
def yandex(self) -> str:
from speechkit import ShortAudioRecognition, Session
reg = ShortAudioRecognition(Session.from_api_key("AQVN3xNJamAFP4_FS6Gis0Uud0vONFk24umBSXvh"))
response = "yandex\n\n" + reg.recognize(open(str(self.path_to_file), str('rb')).read())
loging(self.message, "yandex", self.path_to_file, response)
os.remove(self.path_to_file)
return response
"""
Функция работающая с stt yandex
:return: str - текст + служебная информация
"""
from speechkit import ShortAudioRecognition, Session # импортирую сесию и объект для stt
reg = ShortAudioRecognition(Session.from_api_key("AQVN3xNJamAFP4_FS6Gis0Uud0vONFk24umBSXvh")) # получаю
# объект для расшифровки
response = "yandex\n\n" + reg.recognize(open(str(self.path_to_file), str('rb')).read()) # получаю весь текст
loging(self.message, "yandex", self.path_to_file, response) # записываю логи
os.remove(self.path_to_file) # удаляю лишние файлы
return response # возвращаю ответ