diff --git a/functions/convert.py b/functions/convert.py index a3fa8dd..e5af590 100755 --- a/functions/convert.py +++ b/functions/convert.py @@ -18,54 +18,21 @@ class Converter: :return: str - текст + служебная информация """ - r = requests.get("http://192.168.0.108:5000/ping") - if r.status_code == 200: - response = requests.post("http://192.168.0.108:5000/decrypt_audio", - files={"file": open(self.path_to_file, "rb").read()}) - if response.status_code == 200: - return f"От компа:\n{response.text}" + try: + r = requests.get("http://192.168.0.108:5000/ping") + if r.status_code == 200: + response = requests.post( + "http://192.168.0.108:5000/decrypt_audio", + files={"file": open(self.path_to_file, "rb").read()}, + timeout=6000 + ) + if response.status_code == 200: + return response.json() + else: + return 'Не удалось получить текст.' else: - return 'Не удалось получить текст.' - else: + result = self.model.transcribe(self.path_to_file) + return result["text"] + except requests.ConnectionError: result = self.model.transcribe(self.path_to_file) return result["text"] - - # def google(self, f) -> 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") # замена в ссылке на файл 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, f) # записываю логи - # os.remove(wav_file) # удаляю лишние файлы - # return response # возвращаю текст - # except sr.UnknownValueError: # ошибка распознавания текста - # return "google\n\n Слова не распознаны, вы что вообще мне впихнуть пытаетесь" # возвращаю ошибочное - # # сообщение - # except FileNotFoundError: # ошибка файла(из-за веса telegram не пускает) - # return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки - # - # def yandex(self, f) -> str: - # """ - # Функция работающая с 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, f) # записываю логи - # os.remove(self.path_to_file) # удаляю лишние файлы - # return response # возвращаю ответ diff --git a/functions/get_audio_messages_func.py b/functions/get_audio_messages_func.py index 66cd769..92f3d0d 100755 --- a/functions/get_audio_messages_func.py +++ b/functions/get_audio_messages_func.py @@ -1,4 +1,6 @@ import os +from io import BytesIO + from functions.convert import Converter from aiogram import types @@ -19,6 +21,12 @@ async def get_audio_messages_func(message: types.Message, logger, bot, model) -> file_id = message.voice.file_id elif message.content_type in ['video']: file_id = message.video.file_id + elif message.content_type in ['video_note']: + file_id = message.video_note.file_id + elif message.content_type in ['document']: + file_id = message.document.file_id + elif message.content_type in ['audio']: + file_id = message.audio.file_id else: file_id = message.video_note.file_id file_name = "config/" + str(message.message_id) + '.ogg' # создаю file_name @@ -35,4 +43,6 @@ async def get_audio_messages_func(message: types.Message, logger, bot, model) -> message_text = converter.audio_to_text() # получаю текст из конвертора logger.info(f"Чат {name} (ID: {message.chat.id}) обработал файл {file_name}, " f"сервисом {converter.service}") # записываю всё в logger - await bot.send_message(message.chat.id, message_text, reply_to_message_id=message.message_id) # отправляю сообщение + file = BytesIO(message_text['timestamp'].encode('utf-8')) + file.name = 'timestamp.txt' + await bot.send_document(chat_id=message.chat.id, document=file, caption=f"От компа:\n{message_text['final_text']}") diff --git a/modules/Bot.py b/modules/Bot.py index df95980..2a686c6 100755 --- a/modules/Bot.py +++ b/modules/Bot.py @@ -46,7 +46,7 @@ async def start(message: types.Message): await start_stat.start_stat(message) -@dp.message_handler(content_types=['voice', 'video_note', 'video']) # обрабатываю голосовые сообщения, кружки, видео +@dp.message_handler(content_types=['voice', 'video_note', 'video', 'audio', 'document']) # обрабатываю голосовые сообщения, кружки, видео async def get_audio_messages(message: types.Message): file_data.save_data('audio_resive') if message.chat.type == 'group' or message.chat.type == "supergroup":