-
Notifications
You must be signed in to change notification settings - Fork 0
/
assist.py
171 lines (131 loc) · 4.03 KB
/
assist.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
# from typing_extensions import Self
import pyttsx3
import speech_recognition as sr
import webbrowser
import datetime
import wikipedia
# this method is for taking the commands
# and recognizing the command from the
# speech_Recognition module we will use
# the recongizer method for recognizing
def takeCommand():
r = sr.Recognizer()
# from the speech_Recognition module
# we will use the Microphone module
# for listening the command
with sr.Microphone() as source:
print('Listening')
# seconds of non-speaking audio before
# a phrase is considered complete
r.pause_threshold = 0.7
audio = r.listen(source)
# Now we will be using the try and catch
# method so that if sound is recognized
# it is good else we will have exception
# handling
try:
print("Recognizing")
# for Listening the command in indian
# english we can also use 'hi-In'
# for hindi recognizing
Query = r.recognize_google(audio, language='en-in')
print("the command is printed=", Query)
except Exception as e:
print(e)
print("Say that again ")
return "None"
return Query
def speak(audio):
engine = pyttsx3.init()
# getter method(gets the current value
# of engine property)
voices = engine.getProperty('voices')
# setter method .[0]=male voice and
# [1]=female voice in set Property.
engine.setProperty('voice', voices[0].id)
# Method for the speaking of the the assistant
engine.say(audio)
# Blocks while processing all the currently
# queued commands
engine.runAndWait()
def tellDay():
# This function is for telling the
# day of the week
day = datetime.datetime.today().weekday() + 1
#this line tells us about the number
# that will help us in telling the day
Day_dict = {1: 'Monday', 2: 'Tuesday',
3: 'Wednesday', 4: 'Thursday',
5: 'Friday', 6: 'Saturday',
7: 'Sunday'}
if day in Day_dict.keys():
day_of_the_week = Day_dict[day]
print(day_of_the_week)
speak("The day is " + day_of_the_week)
def tellTime():
# This method will give the time
time = str(datetime.datetime.now())
# the time will be displayed like
# this "2020-06-05 17:50:14.582630"
#nd then after slicing we can get time
print(time)
hour = time[11:13]
min = time[14:16]
speak(self, "The time is" + hour + "Hours and" + min + "Minutes")
def Hello():
# This function is for when the assistant
# is called it will say hello and then
# take query
speak("hello I am your desktop assistant. Tell me how may I help you")
def Take_query():
# calling the Hello function for
# making it more interactive
Hello()
# This loop is infinite as it will take
# our queries continuously until and unless
# we do not say bye to exit or terminate
# the program
while(True):
# taking the query and making it into
# lower case so that most of the times
# query matches and we get the perfect
# output
query = takeCommand().lower()
if "open geeksforgeeks" in query:
speak("Opening GeeksforGeeks ")
# in the open method we just to give the link
# of the website and it automatically open
# it in your default browser
webbrowser.open("www.geeksforgeeks.com")
continue
elif "open google" in query:
speak("Opening Google ")
webbrowser.open("www.google.com")
continue
elif "which day it is" in query:
tellDay()
continue
elif "tell me the time" in query:
tellTime()
continue
# this will exit and terminate the program
elif "bye" in query:
speak("Bye. Check Out GFG for more exicting things")
exit()
elif "from wikipedia" in query:
# if any one wants to have a information
# from wikipedia
speak("Checking the wikipedia ")
query = query.replace("wikipedia", "")
# it will give the summary of 4 lines from
# wikipedia we can increase and decrease
# it also.
result = wikipedia.summary(query, sentences=4)
speak("According to wikipedia")
speak(result)
elif "tell me your name" in query:
speak("I am Jarvis. Your deskstop Assistant")
if __name__ == '__main__':
# main method for executing
# the functions
Take_query()