Created
September 13, 2021 07:30
-
-
Save Dhravya/24017cf15b59bc47c310b8db4b27f3e2 to your computer and use it in GitHub Desktop.
Virtual assistant
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import pyttsx3 # pip install pyttsx3 | |
import speech_recognition as sr # pip install speechRecognition | |
import datetime | |
import wikipedia # pip install wikipedia | |
import webbrowser | |
import os | |
import smtplib | |
engine = pyttsx3.init('sapi5') | |
voices = engine.getProperty('voices') | |
# print(voices[1].id) | |
engine.setProperty('voice', voices[0].id) | |
def speak(audio): | |
engine.say(audio) | |
engine.runAndWait() | |
webbrowser.register('edge',None, webbrowser.BackgroundBrowser("C://Program Files (x86)//Microsoft//Edge//Application//edge.exe")) | |
webbrowser.get('edge') | |
def wishMe(): | |
hour = int(datetime.datetime.now().hour) | |
if hour >= 6 and hour < 12: | |
speak("Good Morning!") | |
elif hour >= 12 and hour < 18: | |
speak("Good Afternoon!") | |
else: | |
speak("Good Evening!") | |
speak("I am Jarvis Sir. Please tell me how may I help you") | |
def takeCommand(): | |
# It takes microphone input from the user and returns string output | |
r = sr.Recognizer() | |
with sr.Microphone() as source: | |
print("Listening...") | |
r.pause_threshold = 1 | |
audio = r.listen(source) | |
try: | |
print("Recognizing...") | |
query = r.recognize_google(audio, language='en-in') | |
print(f"User said: {query}\n") | |
except Exception as e: | |
# print(e) | |
print("Say that again please...") | |
return "None" | |
return query | |
def sendEmail(to, content): | |
server = smtplib.SMTP('smtp.gmail.com', 587) | |
server.ehlo() | |
server.starttls() | |
server.login('[email protected]', 'DEMO@123') | |
server.sendmail('[email protected]', to, content) | |
server.close() | |
if __name__ == "__main__": | |
wishMe() | |
while True: | |
# if 1: | |
query = takeCommand().lower() | |
# Logic for executing tasks based on query | |
if 'wikipedia' in query: | |
speak('Searching Wikipedia...') | |
query = query.replace("wikipedia", "") | |
results = wikipedia.summary(query, sentences=2) | |
speak("According to Wikipedia") | |
print(results) | |
speak(results) | |
elif 'open YouTube' in query: | |
webbrowser.open("youtube.com") | |
elif 'open google' in query: | |
webbrowser.open("google.com") | |
elif 'open stackoverflow' in query: | |
webbrowser.open("stackoverflow.com") | |
elif 'play my playlist' in query: | |
webbrowser.open( | |
"https://open.spotify.com/playlist/5melILm0jHm9p9wpyXIpis") | |
elif 'play music' in query: | |
music_dir = 'D:\\Non Critical\\songs\\Favorite Songs2' | |
songs = os.listdir(music_dir) | |
print(songs) | |
os.startfile(os.path.join(music_dir, songs[0])) | |
elif 'the time' in query: | |
strTime = datetime.datetime.now().strftime("%H:%M:%S") | |
speak(f"Sir, the time is {strTime}") | |
elif 'open code' in query: | |
codePath = "C:\\Users\\dhrav\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe" | |
os.startfile(codePath) | |
elif 'email to me' in query: | |
try: | |
speak("What should I say?") | |
content = takeCommand() | |
to = "[email protected]" | |
sendEmail(to, content) | |
speak("Email has been sent!") | |
except Exception as e: | |
print(e) | |
speak("Sorry my friend dhravya bhai. I am not able to send this email") | |
elif 'bye' in query: | |
break |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment