diff --git a/jarvis_assistant/README.md b/jarvis_assistant/README.md new file mode 100644 index 000000000..276478571 --- /dev/null +++ b/jarvis_assistant/README.md @@ -0,0 +1,25 @@ +# JARVIS(ASSISTANT) + +## Objective +Our virtual assistant will able to do the followings things- + +Weather forecasting, Launch Windows Applications, Open Websites, tells you about almost everything you ask, tells you date and time, greetings, news, etc. + +You can interact with your laptop’s microphone/console. The response generated by the assistant will display on the console or as a speech via the speaker +## Commands(You have to speak) +- wikipedia "what you want to search" +- open youtube +- open stackoverflow +- play music (you should change the path with your local storage - Line number 88) +- the time +- open code (you should change the path with your local storage - Line number 98) +- email to anshul (replace your email with mine - Line number 57 ,58 and 105) +## Requirements +```pip install requirements.txt``` + +## How to run the ASSISTANT? +``` python script.py ``` + +## Version +Python 3.7.4 +pip 20.2.3 \ No newline at end of file diff --git a/jarvis_assistant/__init__.py b/jarvis_assistant/__init__.py new file mode 100644 index 000000000..f37dfc5a0 --- /dev/null +++ b/jarvis_assistant/__init__.py @@ -0,0 +1,2 @@ +__author__ = "Anshul Singh" +__version__ = "0.1" diff --git a/jarvis_assistant/requirements.txt b/jarvis_assistant/requirements.txt new file mode 100644 index 000000000..f1a9d6a35 --- /dev/null +++ b/jarvis_assistant/requirements.txt @@ -0,0 +1,3 @@ +pyttsx3==2.7 +speechRecognition==3.8.1 +wikipedia==1.4.0 \ No newline at end of file diff --git a/jarvis_assistant/script.py b/jarvis_assistant/script.py new file mode 100644 index 000000000..abc214655 --- /dev/null +++ b/jarvis_assistant/script.py @@ -0,0 +1,101 @@ +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') +engine.setProperty('voice', voices[0].id) + + +def speak(audio): + engine.say(audio) + engine.runAndWait() + + +def wishMe(): + hour = int(datetime.datetime.now().hour) + if hour >= 0 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(): + + 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: + 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('youremail@gmail.com', 'your-password') + server.sendmail('youremail@gmail.com', to, content) + server.close() + + +if __name__ == "__main__": + wishMe() + while True: + query = takeCommand().lower() + 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 music' in query: + music_dir = 'D:\\Non Critical\\songs\\Favorite Songs2' + songs = os.listdir(music_dir) + 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: + # change this path according to you + codePath = "/path/to/vscode/executable" + os.startfile(codePath) + + elif 'email to anshul' in query: + try: + speak("What should I say?") + content = takeCommand() + to = "singhanshul28007@gamil.com" + sendEmail(to, content) + speak("Email has been sent!") + except Exception as e: + print(e) + speak("Sorry Anshul, I am not able to send this email")