Skip to content

Commit 5d784e8

Browse files
Create Ridi_AI_or_Digital_Assistant.py
1 parent e25c1d7 commit 5d784e8

File tree

1 file changed

+93
-0
lines changed

1 file changed

+93
-0
lines changed

Diff for: Ridi_AI_or_Digital_Assistant.py

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
import sys
2+
import speech_recognition as sr
3+
import pyttsx3
4+
import webbrowser
5+
import pywhatkit
6+
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QPushButton
7+
from PyQt5.QtCore import Qt, QThread, pyqtSignal, QTimer
8+
9+
class ListenerThread(QThread):
10+
signal = pyqtSignal(str)
11+
12+
def __init__(self):
13+
super().__init__()
14+
15+
def run(self):
16+
recognizer = sr.Recognizer()
17+
with sr.Microphone() as source:
18+
recognizer.adjust_for_ambient_noise(source, duration=0.6) # Adjust for ambient noise
19+
while True:
20+
print("Listening...")
21+
audio = recognizer.listen(source, timeout=None, phrase_time_limit=6) # Listen with timeout and phrase time limit
22+
23+
try:
24+
text = recognizer.recognize_google(audio)
25+
self.signal.emit(text)
26+
except sr.UnknownValueError:
27+
self.signal.emit("")
28+
29+
class MainWindow(QMainWindow):
30+
def __init__(self):
31+
super().__init__()
32+
33+
self.setWindowTitle("Voice Assistant")
34+
self.setGeometry(100, 100, 300, 200)
35+
36+
self.label = QLabel("Assistant is inactive.", self)
37+
self.label.setAlignment(Qt.AlignCenter)
38+
self.label.setGeometry(50, 50, 200, 30)
39+
40+
self.button = QPushButton("Start Listening", self)
41+
self.button.setGeometry(100, 100, 100, 30)
42+
self.button.clicked.connect(self.start_listening)
43+
44+
self.listener_thread = ListenerThread()
45+
self.listener_thread.signal.connect(self.process_input)
46+
47+
self.synthesizer = pyttsx3.init()
48+
self.active = False
49+
50+
def start_listening(self):
51+
self.label.setText("Assistant is active.")
52+
self.button.setEnabled(False)
53+
self.listener_thread.start()
54+
55+
def process_input(self, text):
56+
if not self.active:
57+
if "ridi" in text.lower():
58+
self.active = True
59+
self.label.setText("Assistant is listening.")
60+
self.speak("Hello, how can I assist you?")
61+
62+
else:
63+
if "open youtube" in text.lower():
64+
self.speak("Opening YouTube...")
65+
webbrowser.open("https://www.youtube.com")
66+
67+
elif "open facebook" in text.lower():
68+
self.speak("Opening Facebook...")
69+
webbrowser.open("https://www.facebook.com")
70+
71+
elif "play" in text.lower() and "on youtube" in text.lower():
72+
query = text.lower().replace("play", "").replace("on youtube", "").strip()
73+
self.speak(f"Playing {query} on YouTube...")
74+
pywhatkit.playonyt(query)
75+
76+
elif text.lower() == "exit":
77+
self.speak("Goodbye!")
78+
sys.exit()
79+
80+
else:
81+
self.speak("Sorry, I couldn't understand you.")
82+
83+
def speak(self, text):
84+
self.synthesizer.say(text)
85+
self.synthesizer.runAndWait()
86+
87+
if __name__ == '__main__':
88+
app = QApplication(sys.argv)
89+
90+
window = MainWindow()
91+
window.show()
92+
93+
sys.exit(app.exec_())

0 commit comments

Comments
 (0)