ShamBo / app.py
shamvideo's picture
Update app.py
05b5e18 verified
import os
# Настройка переменной окружения
os.environ['TRANSFORMERS_CACHE'] = '/path/to/writable/directory'
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, numreturn_sequences=1)[0]['generated_text']
print("Чатбот: " + response)
synthesize_speech(response)
if __name__ == "__main__":
main()