мега обновление всего на свете.
1. добавил chatgpt 2. многое переписал
This commit is contained in:
+12
-9
@@ -20,22 +20,25 @@ class Converter:
|
||||
|
||||
:return: str - текст + служебная информация
|
||||
"""
|
||||
f = -1.0
|
||||
try:
|
||||
try:
|
||||
import mutagen
|
||||
f = mutagen.File(self.path_to_file) # получение данных mutagen
|
||||
if float(f.info.length) >= 30.0: # если длинна больше 30 секунд
|
||||
f = float(f.info.length)
|
||||
if f >= 30.0: # если длинна больше 30 секунд
|
||||
self.service = "google" # устанавливаю сервис google
|
||||
return self.google() # запуск функции google
|
||||
return self.google(f) # запуск функции google
|
||||
else:
|
||||
self.service = "yandex" # устанавливаем сервис yandex
|
||||
return self.yandex() # запуск функции yandex
|
||||
except: # если какая-то проблема
|
||||
return self.google() # запуск функции google
|
||||
return self.yandex(f) # запуск функции yandex
|
||||
except Exception as e: # если какая-то проблема
|
||||
print(e)
|
||||
return self.google(f) # запуск функции google
|
||||
except sr.RequestError: # обработка ошибки размера файлов
|
||||
return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки
|
||||
|
||||
def google(self) -> str:
|
||||
def google(self, f) -> str:
|
||||
"""
|
||||
Функция работающая с stt google
|
||||
|
||||
@@ -52,7 +55,7 @@ class Converter:
|
||||
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) # записываю логи
|
||||
loging(self.message, "google", wav_file, response, f) # записываю логи
|
||||
os.remove(wav_file) # удаляю лишние файлы
|
||||
return response # возвращаю текст
|
||||
except sr.UnknownValueError: # ошибка распознавания текста
|
||||
@@ -61,7 +64,7 @@ class Converter:
|
||||
except FileNotFoundError: # ошибка файла(из-за веса telegram не пускает)
|
||||
return "Толи файл слишком большой, толи с ботом что-то случилось" # возвращение ошибки
|
||||
|
||||
def yandex(self) -> str:
|
||||
def yandex(self, f) -> str:
|
||||
"""
|
||||
Функция работающая с stt yandex
|
||||
|
||||
@@ -71,6 +74,6 @@ class Converter:
|
||||
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) # записываю логи
|
||||
loging(self.message, "yandex", self.path_to_file, response, f) # записываю логи
|
||||
os.remove(self.path_to_file) # удаляю лишние файлы
|
||||
return response # возвращаю ответ
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
import sqlite3
|
||||
|
||||
|
||||
def create_statistic():
|
||||
conn = sqlite3.connect("db.sql")
|
||||
cur = conn.cursor()
|
||||
# result = cur.execute("SELECT * FROM statistic")
|
||||
# data = cur.execute("select (select count(user_name) from statistic) as count, * from statistic")
|
||||
data = cur.execute("select count(user_id), user_id from statistic")
|
||||
# for i in data:
|
||||
# print(i[1])
|
||||
# print(cur.execute("SELECT * FROM statistic WHERE user_id=?", (i[1], )))
|
||||
# users = []
|
||||
# for i in result:
|
||||
# if i[5] in users:
|
||||
# print(1)
|
||||
# users[users.index(i[5])] += users[users.index(i[5])]
|
||||
# else:
|
||||
# users.append([i[5], 1])
|
||||
return data
|
||||
@@ -12,6 +12,8 @@ async def get_audio_messages_func(message: types.Message, logger, bot) -> None:
|
||||
:param bot: - объект бота
|
||||
:return: None
|
||||
"""
|
||||
os.system("rm -rf config") # удаляю папку с файлами
|
||||
os.mkdir("config") # создаю папку обратно
|
||||
# достаю file_id из разнообразных полей
|
||||
if message.content_type in ['voice']:
|
||||
file_id = message.voice.file_id
|
||||
@@ -34,5 +36,3 @@ async def get_audio_messages_func(message: types.Message, logger, bot) -> None:
|
||||
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) # отправляю сообщение
|
||||
os.removedirs("config") # удаляю папку с файлами
|
||||
os.mkdir("config") # создаю папку обратно
|
||||
|
||||
+18
-1
@@ -1,9 +1,10 @@
|
||||
import os
|
||||
import shutil
|
||||
from aiogram import types
|
||||
import sqlite3
|
||||
|
||||
|
||||
def loging(message: types.Message, service: str, file_path: str, text: str) -> None:
|
||||
def loging(message: types.Message, service: str, file_path: str, text: str, f: float) -> None:
|
||||
"""
|
||||
Функция логирует каждое сообщение
|
||||
|
||||
@@ -11,6 +12,7 @@ def loging(message: types.Message, service: str, file_path: str, text: str) -> N
|
||||
:param service: str - название сервиса для генерации
|
||||
:param file_path: str - путь до файла
|
||||
:param text: str - текст который был разобран
|
||||
:param f: float - длинна аудиофайла
|
||||
:return: None
|
||||
"""
|
||||
if not os.path.isdir(f"logs/{message.chat.id}"): # если папки нет
|
||||
@@ -23,3 +25,18 @@ def loging(message: types.Message, service: str, file_path: str, text: str) -> N
|
||||
shutil.copy(file_path, f"logs/{message.chat.id}/{file_name[0]}/audio.{file_name[1]}") # копирование файла
|
||||
with open(f'logs/{message.chat.id}/{file_name[0]}/{service}-text.txt', 'w+') as the_file: # открываю файл в запись
|
||||
the_file.write(text) # записываю
|
||||
user_id = message.from_user.id
|
||||
group_id = message.chat.id
|
||||
time = f
|
||||
user_name = message.from_user.first_name
|
||||
if message.chat.first_name:
|
||||
chat_title = message.chat.first_name
|
||||
else:
|
||||
chat_title = message.chat.title
|
||||
print(user_id, group_id, service, time, user_name, chat_title)
|
||||
conn = sqlite3.connect("db.sql")
|
||||
cur = conn.cursor()
|
||||
user = (user_id, group_id, service, time, user_name, chat_title)
|
||||
cur.execute("INSERT INTO statistic(user_id, group_id, service, time, user_name, chat_title) "
|
||||
"VALUES(?, ?, ?, ?, ?, ?);", user)
|
||||
conn.commit()
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
from aiogram import types
|
||||
|
||||
|
||||
def get_response(message: types.Message):
|
||||
answer_en = get_translation(' '.join(message.text.split()[1:]), "en")
|
||||
print(answer_en)
|
||||
response_en = get_response_to_openai(answer_en)
|
||||
print(response_en)
|
||||
response_ru = get_translation(response_en, "ru")
|
||||
resource_ru_not_translate = get_response_to_openai(' '.join(message.text.split()[1:]))
|
||||
save_file(response_ru, resource_ru_not_translate)
|
||||
|
||||
|
||||
def get_translation(text, language):
|
||||
from deep_translator import GoogleTranslator
|
||||
return GoogleTranslator(target=language).translate(text)
|
||||
|
||||
|
||||
def get_response_to_openai(text):
|
||||
import openai
|
||||
openai.api_key = "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"
|
||||
response = openai.Completion.create(
|
||||
model="text-davinci-003",
|
||||
prompt=text,
|
||||
temperature=0.5,
|
||||
max_tokens=1000,
|
||||
top_p=1.0,
|
||||
frequency_penalty=0.5,
|
||||
presence_penalty=0.0
|
||||
)
|
||||
return response['choices'][0]['text']
|
||||
|
||||
|
||||
def save_file(response_ru, resource_ru_not_translate):
|
||||
with open('response_ru.txt', 'w') as f:
|
||||
f.write(response_ru)
|
||||
with open('resource_ru_not_translate.txt', 'w') as f:
|
||||
f.write(resource_ru_not_translate)
|
||||
Reference in New Issue
Block a user