Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CONTRIBUTORS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,4 @@ Contributors:
* Jayson Vantuyl <[email protected]>: Various fixes
* Issac Kelly <[email protected]>: Added requirements
* Sriram Venkatesh <[email protected]>: Updated README
* Lakshay Aggarwal <[email protected]>: Added basic windows suupport
42 changes: 39 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,17 @@ Jarvis
======


How to use
How to use (For Mac and linux)
---------
```
python jarvis.py
```

How to use(For Windows)
----------------
```
python main.py
```
How does it work
---------------
* It uses Google's speech to text and text to speech engines to interact with the users.
Expand All @@ -19,24 +24,55 @@ How does it work
* It can tell about your current location. Say "Where am I" or "Where are we"
* It can play music(Not developed completely)

Features For Windows
-------------------------

* It can send emails for you.
* It can play music for you.
* It can do Wikipedia searches for you.
* It is capable of opening websites like Google, Youtube, etc., in a web browser.
* It is capable of opening your code editor or IDE with a single voice command.

Dependencies
-----------

Dependencies can be installed by running this [pip](https://pypi.python.org/pypi/pip) command `sudo pip install -r requirements.txt`
Dependencies can be installed by running this [pip](https://pypi.python.org/pypi/pip) command `sudo pip install -r requirements.txt` (Not to be done for windows)

1. BeautifulSoup (version 4)
2. [PyAIML](http://pyaiml.sourceforge.net/)
3. PyAudio
4. PyDub
5. Requests
6. PyYAML
7. Pyttsx3 (Only for windows)
8. SpeachRecognition (Only for windows)
9. Wikipedia (Only for windows)

Operating Systems
----------------
* Linux
- `sudo apt-get install libjack-jackd2-dev portaudio19-dev` for PyAudio to install
* Mac
- `brew install portaudio` for PyAudio to install
* Don't try on Windows, it won't work
* Windows with just some basic features (Not Fully Functioned)
```
pip install pyttsx3
```
In case you receive such errors:
* No module named win32com.client
* No module named win32
* No module named win32api
run the following command and repeat the previous step:
```
pip install pypiwin32
```
Now as soon as the previous installation is complete run the next command:
```
pip install speechRecognition
```
Now as soon as the previous installation is complete run the next command:
```
pip install wikipedia
```


109 changes: 109 additions & 0 deletions main.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
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()


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():
#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]', 'your-password')
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 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\\Haris\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"
os.startfile(codePath)

elif 'email to harry' 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 harry bhai. I am not able to send this email")