| | import socket |
| | import os |
| | import torch |
| | from threading import Timer |
| | import pyttsx3 |
| | import speech_recognition as sr |
| | from detectfaces import fer |
| | from models.PosterV2_7cls import pyramid_trans_expr2 |
| | from main import RecorderMeter1, RecorderMeter |
| | import time |
| |
|
| | script_dir = os.path.dirname(os.path.abspath(__file__)) |
| |
|
| | |
| | model_path = os.path.join(script_dir,"models","checkpoints","raf-db-model_best.pth") |
| |
|
| | |
| | if torch.backends.mps.is_available(): |
| | device = "mps" |
| | elif torch.cuda.is_available(): |
| | device = "cuda" |
| | else: |
| | device = "cpu" |
| |
|
| | |
| | model = pyramid_trans_expr2(img_size=224, num_classes=7) |
| |
|
| | |
| | model = torch.nn.DataParallel(model) |
| |
|
| | |
| | model = model.to(device) |
| | fer(model_path=model_path, device=device, model=model) |
| |
|
| | s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) |
| | s.bind(('', 5001)) |
| | s.listen(5) |
| | print("Bot is Running") |
| |
|
| | def handle_client(clientsocket): |
| | r = sr.Recognizer() |
| | m = sr.Microphone() |
| |
|
| | try: |
| | while True: |
| | prompt = '' |
| | print("Speak now:") |
| | sent = False |
| | with m as source: |
| | audio = r.listen(source) |
| |
|
| | try: |
| | prompt = r.recognize_google(audio) |
| | print("Tadbot Thinks you said:", prompt) |
| | sent = True |
| | except sr.UnknownValueError: |
| | print("Tadbot could not understand audio. Try Again") |
| | except sr.RequestError as e: |
| | print(f"Could not request results from Google Speech Recognition service: {e}") |
| |
|
| | if sent: |
| | print("please Wait!") |
| | try: |
| | clientsocket.send(bytes(prompt, 'utf-8')) |
| | response = clientsocket.recv(1024).decode("utf-8") |
| | engine = pyttsx3.init('espeak') |
| | voices = engine.getProperty('voices') |
| | engine.setProperty('voice', voices[26].id) |
| | engine.setProperty('rate', 145) |
| | engine.say(response) |
| | engine.runAndWait() |
| | print("TADBot:", response) |
| | except (socket.error, ConnectionResetError) as e: |
| | print(f"Connection error: {e}") |
| | break |
| | time.sleep(60) |
| |
|
| | finally: |
| | clientsocket.close() |
| | print("Connection Closed") |
| |
|
| |
|
| | while True: |
| | try: |
| | clientsocket, address = s.accept() |
| | print(f"Accepted connection from {address}") |
| | handle_client(clientsocket) |
| | except KeyboardInterrupt: |
| | print("Server shutting down...") |
| | break |
| | except Exception as e: |
| | print(f"An error occurred: {e}") |
| |
|
| | s.close() |