|
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") |
|
|
|
|
|
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() |