ShamBo / app.py
shamvideo's picture
Create app.py
529dc53 verified
raw
history blame
2.61 kB
from transformers import pipeline
import speech_recognition as sr
from gtts import gTTS
import os
import io
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from googleapiclient.http import MediaIoBaseDownload
# Инициализация модели и токенизатора
model_name = "cointegrated/rut5-base-multitask"
chatbot = pipeline("text-generation", model=model_name)
# Функция для распознавания речи
def recognize_speech():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("Скажите что-нибудь...")
audio = recognizer.listen(source)
try:
text = recognizer.recognize_google(audio, language="ru-RU")
print("Вы сказали: " + text)
return text
except sr.UnknownValueError:
print("Не удалось распознать речь")
return ""
except sr.RequestError as e:
print("Ошибка сервиса распознавания речи; {0}".format(e))
return ""
# Функция для синтеза речи
def synthesize_speech(text):
tts = gTTS(text=text, lang="ru")
tts.save("response.mp3")
os.system("mpg321 response.mp3")
# Функция для загрузки документов с Google Drive
def load_documents_from_drive():
creds = Credentials.from_authorized_user_file('token.json', ['https://www.googleapis.com/auth/drive.readonly'])
service = build('drive', 'v3', credentials=creds)
results = service.files().list(q="mimeType='application/pdf' and trashed=false", fields="files(id, name)").execute()
items = results.get('files', [])
documents = []
for item in items:
file_id = item['id']
request = service.files().get_media(fileId=file_id)
fh = io.FileIO(item['name'], 'wb')
downloader = MediaIoBaseDownload(fh, request)
done = False
while done is False:
status, done = downloader.next_chunk()
print(f"Скачивание файла {item['name']}... {int(status.progress() * 100)}% завершено")
fh.close()
documents.append(item['name'])
return documents
# Основной цикл чатбота
def main():
while True:
user_input = recognize_speech()
if user_input:
response = chatbot(user_input, max_length=100, num_return_sequences=1)[0]['generated_text']
print("Чатбот: " + response)
synthesize_speech(response)
if __name__ == "__main__":
main()