Coders Packet

Personal Assistant using Python

By Dipak Ghosh

Personal Assistant using Python Speech Recognition and Voice Input from user with various features like opening several websites and applications etc.

import speech_recognition as sr     
from win32com.client import constants, Dispatch 
import datetime, wikipedia, webbrowser  

Modules used: speech_recognition, datetime, wikipedia, webbrowser, win32com

Know more about these and their installation here.

def asst_speaks(audio)
def greet()
def user_speaks()
def reg_browser()
def main()

Functions used: asst_speaks(audio), greet(), user_speaks(), reg_browser(), main()

Let us see about these functions in detail.

asst_speaks(audio) - This function is used whenever the assistant has to speak. The 'audio' parameter is the text that it will speak which are based on evaluation of user input passed.

def asst_speaks(audio):  
    print(name+": "+audio.upper())  
    speaker = Dispatch("SAPI.SpVoice")
    speaker.speak(audio)    
    del speaker

greet() - This function is used to generate the greeting message by detecting the hour when asked to greet the user like "Good Morning!", "Good Afternoon", "Good Evening" etc. By default it greets on loading the system.

def greet(): 
    h = int(datetime.datetime.now().hour)   
    if h>=0 and h<12:
        asst_speaks("Good morning!")
    elif h==12:
        asst_speaks("Good noon!")       
    elif h>12 and h<18:
        asst_speaks("good afternoon!") 
    else:
        asst_speaks("good evening")   
    asst_speaks("I am "+name+", how can I help you?")
user_speaks() - This is the audio input function from the user end. The audio that the user provides gets converted in the form of text in this function itself for processing.
def user_speaks(): 
    r=sr.Recognizer()
    with sr.Microphone(device_index=1) as source:
        print("Listening...")
        audio = r.listen(source, phrase_time_limit=5) 
    try:
        print("Recognising...")
        com=r.recognize_google(audio,language="en-in") 
        print("You:"+com.upper())
    except :    #if poor audio quality or excessive background noise 
        asst_speaks("I didn't get you. Try saying it again!")
    return com

reg_browser() - This function is used to register the browser (Google Chrome) in this case with the program. It is executed at the beginning of the execution of the program for hassle free execution og thr program.

def reg_browser(): 
    chrome_path="C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe"
    webbrowser.register('google-chrome', None,webbrowser.BackgroundBrowser(chrome_path))

main() - This function is the driver code for the entire program. Here is where all the functions are brought to operation. Firstly, the greet() and reg_browser() functions are executed. Then user is asked for input of command and as per the command the task is executed and this process continues...

def main():     #driver code
    reg_browser()
    greet()
    while(True): #infinite loop for seamless interaction
        com=user_speaks().lower()   #taking user command
        if "wikipedia" in com: #if users says to wiki something
            asst_speaks("Searching wikipedia")
            com=com.replace("wikipedia","")
            res=wikipedia.summary(com,sentences=2)  #extracting summary of the wikipedia search
            asst_speaks("According to wikipedia:"+res)  #audio output of the summary
            asst_speaks("Want to know more! Shall I open wikipedia?")
            dec=user_speaks().lower()
            if "yes" or "yeah" in dec:
                webbrowser.get("google-chrome").open("en.wikipedia.com")    #opens wikipedia home page
            else:
                asst_speaks("As you wish sir!")
        elif "open youtube" in com: #if users says to open youtube
            webbrowser.get("google-chrome").open("youtube.com")
        elif "open google" in com:  #if user says to open google
            webbrowser.get("google-chrome").open("google.com")
        elif "open stackoverflow" in com:   #if user says to open stack overflow
            webbrowser.get("google-chrome").open("stackoverflow.com")
        elif "open geeks for geeks" in com: #if user says to open Geeeks for Geeks
            webbrowser.get("google-chrome").open("geeksforgeeks.com")
        elif "open codechef" in com:    #if user says to open Codechef
            webbrowser.get("google-chrome").open("codechef.com")
        elif "open github" in com:  #if user says to open Github
            webbrowser.get("google-chrome").open("github.com")
        elif "play music" in com or "open spotify" in com:  #if user says to open Spotify
            webbrowser.get("google-chrome").open("spotify.com")
        elif "open hotstar" in com: #if user says to open Hotstar
            webbrowser.get("google-chrome").open("hotstar.com")
        elif "time" in com: #if user asks the time
            timestr=datetime.datetime.now().strftime("%H:%M")
            asst_speaks("Sir the time is "+timestr)
        elif "your name" in com:    #if user asks the assistant his name
            asst_speaks("Hi, my name is"+name)
        elif "about creator" in com:    #if user wants to know about the creator
            asst_speaks("I am one of the many creations of sir Dipak Ghosh. Want to know more?")
            dec=user_speaks().lower()
            if "yes" or "yeah" in dec:
                webbrowser.get("google-chrome").open("https://dgreat49251.github.io/dipak.ghosh/")  #more about the creator
            else:
                asst_speaks("As you wish sir!")
        elif "exit" or "shutdown" in com:   #if user says to exit
            asst_speaks("Are you sure you want to exit?")
            dec=user_speaks().lower()
            if "yes" or "yeah" in dec:  #confirmation
               break
            else:
                continue
        else:
            continue

Features of the Voice Assistant:-

1. Tell about itself

2. Tell about its creator

3. Wikipedia something.

4. Open Websites like Google, GeeksforGeeks, StackOverflow, Spotify, Hotstar etc. 

5. Tell date and time.

and much more...

 

Download project

Reviews Report

Submitted by Dipak Ghosh (DGhosh49251)

Download packets of source code on Coders Packet