Iron Man Jarvis AI in Python | Build Own Alexa in Python | Desktop Voice Assistant in Python

 

Iron Man Jarvis AI in Python | Build Own Alexa in Python | Desktop Voice Assistant in Python
नमस्कार, आज हम एक AI Based डेस्कटॉप Voice Assistance बनाने जा रहे है| आपने Iron Man Movie में Tony Stark का AI असिस्टेंस देखा होगा, उसमें Tony स्टार्क सिर्फ बोल के अपने सारे काम करा लेता, और उसका AI असिस्टेंस सब कुछ कर देता| हम वैसा ही AI Voice असिस्टेंस बनाने जा रहे है| ध्यान रखे मूवी में दिखाए गया AI Voice असिस्टेंस बहुत ही ज्यादा एडवांस है| हम जो असिस्टेंस बनाएंगे वो आपके बोलने से आपके कंप्यूटर सिस्टम में कुछ कामों को परफॉर्म करेगा जैसे मान लीजिये आपने अपने बोला 'Open VScode' तो वह VScode खोल देगा|  

क्या होता है AI Voice Assistant?

AI-Based Voice Assistant एक ऐसा प्रोग्राम या सिस्टम हैं जो मानव आवाज को पहचान सकता हैं और कंप्यूटर की आवाजों के माध्यम से रिप्लाई दे सकता हैं। यह AI-Based Voice assistants माइक्रोफोन से Audio को रिकॉर्ड करता है और फिर उसे टेक्स्ट में बदल देता है, बाद में इसे Google Text to Speech के माध्यम  से Audio में Respond करता है|

यह क्या करेगा हमारा AI Desktop voice Assistant हमारे लिए?

  • यह हमारे ओर से ईमेल भेज सकता है, जिसे भी हम चाहेंगे ।
  • यह हमारे लिए गाना चला सकता है।
  • यह हमारे लिए Wikipedia में कोई रिजल्ट खोज कर सकता है।
  • यह वेब ब्राउजर में गूगल, यूट्यूब आदि वेबसाइट खोल सकता है।
  • यह हमारे लिए कोड एडिटर/VScode या IDE को सिंगल वॉयस कमांड से खोलने में सक्षम है। 
बढ़िया, चलिए अब Coding शुरू करते है हम अपना JARVIS बनाने की -J.A.R.V.I.S

wishMe () फंक्शन

अब, हम एक wishMe() फंक्शन बनाएंगे जो हमारे J.A.R.V.I.S. कंप्यूटर के समय के अनुसार हमें को wish करेगा। हमें अपने J.A.R.V.I.S को वर्तमान या लाइव समय प्रदान करने के लिए, हमें डेटाटाइम नामक एक मॉड्यूल को import पड़ेगा। इस मॉड्यूल को अपने प्रोग्राम में import करने के लिए:

import datetime
OK, अब wishMe () फंक्शन बनाते है,  

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")

यहाँ पे datetime फंक्शन से हम टाइम का hour एक hour नाम के वेरिएबल में स्टोर करते, और ये चेक करते है की hour की वैल्यू 0 से बड़ी और 12 से छोटी हो तो Good Morning बोले, अच्छा ये system से जो वो Good Morning बोलेगा वो speak फंक्शन के कारण बोलेगा और ये speak फंक्शन speechRecognition मॉडल्स के अन्दर होता है, इसका काम speak फंक्शन के अन्दर लिखे text को बोलना होता है| इसी प्रकार अगर hour की वैल्यू 12 से बड़ी और 18 से छोटी होती है तो Good Afternoon बोलेगा और अगर 18 से बड़ी वैल्यू होगी तो Good Evening बोलेगा| 

import speech_recognition as sr #pip install speechRecognition

जैसा की ऊपर हमने जाना की speak फंक्शन speechRecognition मॉडल्स के अंदर होता है तो अब सवाल ये उठता है की इस मॉडल्स को कैसे इम्पोर्ट करे क्युकी speechRecognition बिल्ड -इन मॉडल्स नहीं होता इसे अलग से pip की मदद से इनस्टॉल करना पड़ता है| इनस्टॉल करने के लिए नीचे लिखे कमांड को अपने Command Prompt में टाइप करे-
  
pip install speechRecognition
जैसे ही आपका मॉडल्स सफलतापूर्वक इनस्टॉल हो जाता है वैसे ही आप speechRecognition उपयोग कर सकते है और इसे उपयोग करने के लिए आपको टाइप करना पड़ेगा- 

import speech_recognition as sr #pip install speechRecognition

takeCommand () फंक्शन 

अब, हम एक takeCommand ()  फंक्शन बनाएंगे जो हमारे कंप्यूटर mic से ऑडियो इनपुट लेगा और query नाम के वेरिएबल text रूप में स्टोर कर देता है|  और यही query task के रूप में परफॉर्म होती है| 
यहाँ हम पूरा प्रोग्राम रहे है और फिर लाइन बय लाइन समझते है-

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():
    #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(audiolanguage='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(tocontent):
    server = smtplib.SMTP('smtp.gmail.com'587)
    server.ehlo()
    server.starttls()
    server.login('youremail@gmail.com''your-password')
    server.sendmail('youremail@gmail.com'tocontent)
    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(querysentences=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 Bahubali 2' in query:
            music_dir = 'D:\\Baahubali2.mp4'
            songs = os.listdir(music_dir)
            print(songs)    
            os.startfile(os.path.join(music_dirsongs[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\\NAV\\AppData\\Local\\Programs\\Microsoft VS Code\\Code.exe"
            os.startfile(codePath)

        elif 'email to Laxmikant' in query:
            try:
                speak("What should I say?")
                content = takeCommand()
                to = "LaxmikantyourEmail@gmail.com"    
                sendEmail(tocontent)
                speak("Email has been sent!")
            except Exception as e:
                print(e)
                speak("Sorry my friend Laxmikant bhai. I am not able to send this email")    


बढ़िया, इस प्रोग्राम को चलाने के लिए आपको पहले कुछ मॉडल्स को इनस्टॉल करना पड़ेगा जैसे -
pip install pyttsx3
pip install speechRecognition
pip install wikipedia
जैसे ही आप ये मॉडल्स इनस्टॉल कर देते है वैसे ही आपके कंप्यूटर में ये प्रोग्राम चलने लगेगा-
और तब आप इन कमांड को दे के अपने Jarvis को चेक कर सकते है -
  1. Search any thing from wikipedia. 
  2. Open Youube
  3. Open Google
  4. Open Stackoverflow
  5. Play Bahubali 2
  6. The Tme
  7. Open Code
  8. Email to Laxmikant (Please change email id from sendEmail function and also change to statement in line no 104 )