diff --git a/Project-45-Jarvis-AI/README.md b/Project-45-Jarvis-AI/README.md new file mode 100644 index 0000000..c5472c7 --- /dev/null +++ b/Project-45-Jarvis-AI/README.md @@ -0,0 +1,44 @@ +# Jarvis-AI-using-python3 + +# Modules requires: + import pyttsx3 #pip install pyttsx3 + import datetime #module + import speech_recognition as sr + import wikipedia + import smtplib + import webbrowser as wb + import os #inbuilt + import pyautogui + import psutil #pip install psutil + import pyjokes # pip install pyjokes + import requests, json #inbuilt + + +This is the New Jarvis AI Project it will do some functionality followed by user query. + +Say "Help" or "tell me your features" , it will show all it's features + +# This AI can do: + it can help to do lot many things like.. + it can tell you the current time and date, + it can tell you the current weather, + it can tell you battery and cpu usage, + it can create the reminder list, + it can take screenshots, + it can send email to your boss or family or your friend, + it can shut down or logout or hibernate your system, + it can tell you non funny jokes, :) + it can open any website, on chrome web-browser + it can search the thing on wikipedia, + it can change his/her voice from male to female and vice-versa + And yes more thing to come... + +# If you like it leave a Star * on this Repo + +![image](https://user-images.githubusercontent.com/11313549/83199718-64016700-a15f-11ea-8d7e-9b04280841f9.png) + +![image](https://user-images.githubusercontent.com/11313549/83199495-ed646980-a15e-11ea-8834-d193af78e21d.png) + +![image](https://user-images.githubusercontent.com/11313549/83199419-c312ac00-a15e-11ea-865c-54bfebae78bb.png) + + diff --git a/Project-45-Jarvis-AI/jarvis.py b/Project-45-Jarvis-AI/jarvis.py new file mode 100644 index 0000000..9651758 --- /dev/null +++ b/Project-45-Jarvis-AI/jarvis.py @@ -0,0 +1,371 @@ +import pyttsx3 #pip install pyttsx3 +import datetime #module +import speech_recognition as sr +import wikipedia +import smtplib +import webbrowser as wb +import os #inbuilt +import pyautogui +import psutil #pip install psutil +import pyjokes # pip install pyjokes +import requests, json #inbuilt + +engine = pyttsx3.init() +engine.setProperty('rate', 190) +voices = engine.getProperty('voices') +engine.setProperty('voice', voices[1].id) +engine.setProperty('volume', 1) + + +#change voice +def voice_change(v): + x = int(v) + engine.setProperty('voice', voices[x].id) + speak("done sir") + + +#speak function +def speak(audio): + engine.say(audio) + engine.runAndWait() + + +#time function +def time(): + Time = datetime.datetime.now().strftime("%H:%M:%S") + speak("The current time is") + speak(Time) + + +#date function +def date(): + year = int(datetime.datetime.now().year) + month = int(datetime.datetime.now().month) + date = int(datetime.datetime.now().day) + speak("The current date is") + speak(date) + speak(month) + speak(year) + + +def checktime(tt): + hour = datetime.datetime.now().hour + if ("morning" in tt): + if (hour >= 6 and hour < 12): + speak("Good morning sir") + else: + if (hour >= 12 and hour < 18): + speak("it's Good afternoon sir") + elif (hour >= 18 and hour < 24): + speak("it's Good Evening sir") + else: + speak("it's Goodnight sir") + elif ("afternoon" in tt): + if (hour >= 12 and hour < 18): + speak("it's Good afternoon sir") + else: + if (hour >= 6 and hour < 12): + speak("Good morning sir") + elif (hour >= 18 and hour < 24): + speak("it's Good Evening sir") + else: + speak("it's Goodnight sir") + else: + speak("it's night sir!") + + +#welcome function +def wishme(): + speak("Welcome Back") + hour = datetime.datetime.now().hour + if (hour >= 6 and hour < 12): + speak("Good Morning sir!") + elif (hour >= 12 and hour < 18): + speak("Good afternoon sir") + elif (hour >= 18 and hour < 24): + speak("Good Evening sir") + else: + speak("Goodnight sir") + + speak("Jarvis at your service, Please tell me how can i help you?") + + +def wishme_end(): + speak("signing off") + hour = datetime.datetime.now().hour + if (hour >= 6 and hour < 12): + speak("Good Morning") + elif (hour >= 12 and hour < 18): + speak("Good afternoon") + elif (hour >= 18 and hour < 24): + speak("Good Evening") + else: + speak("Goodnight.. Sweet dreams") + quit() + + +#command by user function +def takeCommand(): + r = sr.Recognizer() + with sr.Microphone() as source: + print("Listing...") + r.pause_threshold = 0.5 + audio = r.listen(source) + + try: + print("Recognizing...") + query = r.recognize_google(audio, language='en-in') + #speak(query) + #print(query) + except Exception as e: + print(e) + speak("Say that again please...") + + return "None" + + return query + + +#sending email function +def sendEmail(to, content): + server = smtplib.SMTP('smtp.gmail.com', 587) + server.ehlo() + server.starttls() + server.login("user-name@xyz.com", "pwd") + server.sendmail("user-name@xyz.com", to, content) + server.close() + + +#screenshot function +def screenshot(): + img = pyautogui.screenshot() + img.save( + "C:\\Users\\Jarvis-AI-using-python3-\\screenshots\\ss.png" + ) + + +#battery and cpu usage +def cpu(): + usage = str(psutil.cpu_percent()) + speak('CPU usage is at ' + usage) + print('CPU usage is at ' + usage) + battery = psutil.sensors_battery() + speak("Battery is at") + speak(battery.percent) + print("battery is at:" + str(battery.percent)) + + +#joke function +def jokes(): + j = pyjokes.get_joke() + print(j) + speak(j) + + +#weather condition +def weather(): + api_key = "YOUR-API_KEY" #generate your own api key from open weather + base_url = "http://api.openweathermap.org/data/2.5/weather?" + speak("tell me which city") + city_name = takeCommand() + complete_url = base_url + "appid=" + api_key + "&q=" + city_name + response = requests.get(complete_url) + x = response.json() + if x["cod"] != "404": + y = x["main"] + current_temperature = y["temp"] + current_pressure = y["pressure"] + current_humidiy = y["humidity"] + z = x["weather"] + weather_description = z[0]["description"] + r = ("in " + city_name + " Temperature is " + + str(int(current_temperature - 273.15)) + " degree celsius " + + ", atmospheric pressure " + str(current_pressure) + " hpa unit" + + ", humidity is " + str(current_humidiy) + " percent" + " and " + str(weather_description)) + print(r) + speak(r) + else: + speak(" City Not Found ") + + +def personal(): + speak( + "I am Jarvis, version 1.0, I am an AI assistent, I am developed by Praveen on 29 may 2020 in INDIA" + ) + speak("Now i hope you know me") + + +if __name__ == "__main__": + wishme() + while (True): + query = takeCommand().lower() + + #time + + if ('time' in query): + time() + +#date + + elif ('date' in query): + date() + +#personal info + elif ("tell me about yourself" in query): + personal() + elif ("about you" in query): + personal() + elif ("who are you" in query): + personal() + elif ("yourself" in query): + personal() + + elif ("developer" in query or "tell me about your developer" in query + or "father" in query or "who develop you" in query + or "developer" in query): + res = open("about.txt", 'r') + speak("here is the details: " + res.read()) + +#searching on wikipedia + + elif ('wikipedia' in query or 'what' in query or 'who' in query + or 'when' in query or 'where' in query): + speak("searching...") + query = query.replace("wikipedia", "") + query = query.replace("search", "") + query = query.replace("what", "") + query = query.replace("when", "") + query = query.replace("where", "") + query = query.replace("who", "") + query = query.replace("is", "") + result = wikipedia.summary(query, sentences=2) + print(query) + print(result) + speak(result) + +#sending email + + elif ("send email" in query): + try: + speak("What is the message for the email") + content = takeCommand() + to = 'reciever@xyz.com' + sendEmail(to, content) + speak("Email has sent") + except Exception as e: + print(e) + speak( + "Unable to send email check the address of the recipient") + elif ("search on google" in query or "open website" in query): + speak("What should i search or open?") + chromepath = 'C:/Program Files (x86)/Google/Chrome/Application/chrome.exe %s' + search = takeCommand().lower() + wb.get(chromepath).open_new_tab(search + '.com') + +#sysytem logout/ shut down etc + + elif ("logout" in query): + os.system("shutdown -1") + elif ("restart" in query): + os.system("shutdown /r /t 1") + elif ("shut down" in query): + os.system("shutdown /r /t 1") + +#play songs + + elif ("play songs" in query): + speak("Playing...") + songs_dir = "C:\\Music" + songs = os.listdir(songs_dir) + os.startfile(os.path.join(songs_dir, songs[1])) + quit() + +#reminder function + + elif ("create a reminder list" in query or "reminder" in query): + speak("What is the reminder?") + data = takeCommand() + speak("You said to remember that" + data) + reminder_file = open("data.txt", 'a') + reminder_file.write('\n') + reminder_file.write(data) + reminder_file.close() + +#reading reminder list + + elif ("do you know anything" in query or "remember" in query): + reminder_file = open("data.txt", 'r') + speak("You said me to remember that: " + reminder_file.read()) + +#screenshot + elif ("screenshot" in query): + screenshot() + speak("Done!") + +#cpu and battery usage + elif ("cpu and battery" in query or "battery" in query + or "cpu" in query): + cpu() + +#jokes + elif ("tell me a joke" in query or "joke" in query): + jokes() + +#weather + elif ("weather" in query or "temperature" in query): + weather() + +#jarvis features + elif ("tell me your powers" in query or "help" in query + or "features" in query): + features = ''' i can help to do lot many things like.. + i can tell you the current time and date, + i can tell you the current weather, + i can tell you battery and cpu usage, + i can create the reminder list, + i can take screenshots, + i can send email to your boss or family or your friend, + i can shut down or logout or hibernate your system, + i can tell you non funny jokes, + i can open any website, + i can search the thing on wikipedia, + i can change my voice from male to female and vice-versa + And yes one more thing, My boss is working on this system to add more features..., + tell me what can i do for you?? + ''' + print(features) + speak(features) + + elif ("hii" in query or "hello" in query or "goodmorning" in query + or "goodafternoon" in query or "goodnight" in query + or "morning" in query or "noon" in query or "night" in query): + query = query.replace("jarvis", "") + query = query.replace("hi", "") + query = query.replace("hello", "") + if ("morning" in query or "night" in query or "goodnight" in query + or "afternoon" in query or "noon" in query): + checktime(query) + else: + speak("what can i do for you") + +#changing voice + elif ("voice" in query): + speak("for female say female and, for male say male") + q = takeCommand() + if ("female" in q): + voice_change(1) + elif ("male" in q): + voice_change(0) + elif ("male" in query or "female" in query): + if ("female" in query): + voice_change(1) + elif ("male" in query): + voice_change(0) + +#exit function + + elif ('i am done' in query or 'bye bye jarvis' in query + or 'go offline jarvis' in query or 'bye' in query + or 'nothing' in query): + wishme_end()