|
- import sys
- from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QPushButton, QLabel, QVBoxLayout, QWidget
- from PyQt5.QtMultimediaWidgets import QVideoWidget
- from PyQt5.QtMultimedia import QMediaPlayer, QMediaContent
- from PyQt5.QtCore import QUrl
- import speech_recognition as sr
- import question
- import os
-
-
-
- current_directory = os.path.dirname(os.path.realpath(__file__))
- main_video_path = os.path.join(current_directory, 'Friendly_new.mp4')
-
- class HospitalChatbotGUI(QMainWindow):
-
- def __init__(self):
- super().__init__()
-
-
- self.setWindowTitle("Hospital Chatbot")
- self.setGeometry(100, 100, 800, 600)
- self.central_widget = QWidget(self)
- self.setCentralWidget(self.central_widget)
- self.layout = QVBoxLayout()
-
-
- #self.submit_button = QPushButton("Submit", self)
- #self.submit_button.clicked.connect(self.get_response)
- #self.layout.addWidget(self.submit_button)
-
- self.speak_button = QPushButton("Speak", self)
- self.speak_button.clicked.connect(self.audio_to_text)
- self.layout.addWidget(self.speak_button)
-
-
- self.video_widget = QVideoWidget(self)
- self.layout.addWidget(self.video_widget)
- #self.video_widget.setFixedWidth(500)
-
- self.central_widget.setLayout(self.layout)
-
- self.media_player = QMediaPlayer()
- self.media_player.setVideoOutput(self.video_widget)
- self.media_player.mediaStatusChanged.connect(self.handle_media_status_changed)
-
-
-
- #self.sample_video_url = "/home/knight/ChatBot_UI/Friendly_new.mp4"
- self.sample_video_url = main_video_path
-
-
- self.answer_video_url = None
- self.play_video(self.sample_video_url)
-
-
-
-
- def audio_to_text(self):
-
- init_rec = sr.Recognizer()
- print("Let's speak!!")
- with sr.Microphone(3) as source:
- audio_data = init_rec.record(source, duration=2)
- print("Recognizing your text.............")
- text = init_rec.recognize_google(audio_data)
-
- self.get_response(text.strip())
- print(text)
-
-
-
- def get_response(self,text):
- video_url = None
- print("Response Text: ",text)
-
- user_input = text.strip()
-
- lowercase_text = user_input.lower()
-
- matching_intent = [intent for intent, questions in question.intents_and_question.items() if any(q in lowercase_text for q in questions)]
-
- if matching_intent:
- print("Intent: ", matching_intent[0])
- video_url = question.get_video_response(matching_intent[0])
- else:
- print("No matching intent found.")
-
- if video_url:
-
-
- self.play_video(video_url)
- return
- matching_intent = None
-
- #self.play_video("/home/knight/ChatBot_UI/Friendly_new.mp4")
- self.play_video(main_video_path)
-
-
-
-
- def play_video(self, video_url):
-
- media_content = QMediaContent(QUrl.fromLocalFile(video_url))
- self.media_player.setMedia(media_content)
- self.media_player.play()
-
-
- def handle_media_status_changed(self, status):
- if status == QMediaPlayer.EndOfMedia:
- print("Video finished playing.")
- #self.play_video("/home/knight/ChatBot_UI/Friendly_new.mp4")
- self.play_video(main_video_path)
-
-
-
-
-
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- window = HospitalChatbotGUI()
- window.show()
-
- sys.exit(app.exec_())
|