Creating a virtual desktop assistant is an exciting project. Imagine your computer responding to your commands, much like Jarvis did for Tony Stark. Yes, it’s possible, and you can achieve it using Python. Python provides a robust set of libraries that make building a virtual assistant feasible.
For instance, Windows uses Sapi5, while Linux utilizes Espeak to generate voice responses from your machine. Though it’s a basic form of artificial intelligence, it’s a great start toward automating your tasks.
Modules Required
pyttsx3: pyttsx is a cross-platform text to speech library which is platform independent. The major advantage of using this library for text-to-speech conversion is that it works offline. To install this module type the below command in the terminal.
pip install pyttsx3
SpeechRecognition: It allow us to convert audio into text for further processing. To install this module type the below command in the terminal.
pip install SpeechRecognition
webbrowser: It provides a high-level interface which allows displaying Web-based documents to users. To install this module type the below command in the terminal.
pip install webbrowser
Wikipedia: It is used to fetch a variety of information from the Wikipedia website. To install this module type the below command in the terminal.
pip install wikipedia
Methods Used for Building a Virtual Assistant
- Speak Method:
The Speak Method is crucial for enabling the machine to generate voice output. Below is an explanation of how the Speak Method works in the code.
def speak(audio):
engine = pyttsx3.init()
# getter method(gets the current value
# of engine property)
voices = engine.getProperty('voices')
# setter method .[0]=male voice and
# [1]=female voice in set Property.
engine.setProperty('voice', voices[0].id)
# Method for the speaking of the assistant
engine.say(audio)
# Blocks while processing all the currently
# queued commands
engine.runAndWait()
Take Query Method
This method evaluates specific conditions. If a condition is met, it returns the corresponding output. You can incorporate multiple conditions, and when any of them are satisfied, the method will produce the desired result.
# this method is for taking the commands
# and recognizing the command from the
# speech_Recognition module we will use
# the recongizer method for recognizing
def takeCommand():
r = sr.Recognizer()
# from the speech_Recognition module
# we will use the Microphone module
# for listening the command
with sr.Microphone() as source:
print('Listening')
# seconds of non-speaking audio before
# a phrase is considered complete
r.pause_threshold = 0.7
audio = r.listen(source)
# Now we will be using the try and catch
# method so that if sound is recognized
# it is good else we will have exception
# handling
try:
print("Recognizing")
# for Listening the command in indian
# english we can also use 'hi-In'
# for hindi recognizing
Query = r.recognize_google(audio, language='en-in')
print("the command is printed=", Query)
except Exception as e:
print(e)
print("Say that again sir")
return "None"
return Query
Take Command Method
# this method is for taking the commands
# and recognizing the command from the
# speech_Recognition module we will use
# the recongizer method for recognizing
def takeCommand():
r = sr.Recognizer()
# from the speech_Recognition module
# we will use the Microphone module
# for listening the command
with sr.Microphone() as source:
print('Listening')
# seconds of non-speaking audio before
# a phrase is considered complete
r.pause_threshold = 0.7
audio = r.listen(source)
# Now we will be using the try and catch
# method so that if sound is recognized
# it is good else we will have exception
# handling
try:
print("Recognizing")
# for Listening the command in indian
# english we can also use 'hi-In'
# for hindi recognizing
Query = r.recognize_google(audio, language='en-in')
print("the command is printed=", Query)
except Exception as e:
print(e)
print("Say that again sir")
return "None"
return Query
Tell Time
# code
def tellTime(self):
# This method will give the time
time = str(datetime.datetime.now())
# the time will be displayed like this "2020-06-05 17:50:14.582630"
# nd then after slicing we can get time
print(time)
hour = time[11:13]
min = time[14:16]
self.Speak(self, "The time is sir" + hour + "Hours and" + min + "Minutes")
"""
This method will take time and slice it "2020-06-05 17:50:14.582630" from 11 to 12 for hour
and 14-15 for min and then speak function will be called and then it will speak the current
time
"""
Hello method
This is just used to greet the user with a hello message.
def Hello():
# This function is for when the assistant
# is called it will say hello and then
# take query
speak("hello sir I am your desktop assistant. /
Tell me how may I help you")
Full Code:
import pyttsx3
import speech_recognition as sr
import webbrowser
import datetime
import wikipedia
# this method is for taking the commands
# and recognizing the command from the
# speech_Recognition module we will use
# the recongizer method for recognizing
def takeCommand():
r = sr.Recognizer()
# from the speech_Recognition module
# we will use the Microphone module
# for listening the command
with sr.Microphone() as source:
print('Listening')
# seconds of non-speaking audio before
# a phrase is considered complete
r.pause_threshold = 0.7
audio = r.listen(source)
# Now we will be using the try and catch
# method so that if sound is recognized
# it is good else we will have exception
# handling
try:
print("Recognizing")
# for Listening the command in indian
# english we can also use 'hi-In'
# for hindi recognizing
Query = r.recognize_google(audio, language='en-in')
print("the command is printed=", Query)
except Exception as e:
print(e)
print("Say that again sir")
return "None"
return Query
def speak(audio):
engine = pyttsx3.init()
# getter method(gets the current value
# of engine property)
voices = engine.getProperty('voices')
# setter method .[0]=male voice and
# [1]=female voice in set Property.
engine.setProperty('voice', voices[0].id)
# Method for the speaking of the assistant
engine.say(audio)
# Blocks while processing all the currently
# queued commands
engine.runAndWait()
def tellDay():
# This function is for telling the
# day of the week
day = datetime.datetime.today().weekday() + 1
#this line tells us about the number
# that will help us in telling the day
Day_dict = {1: 'Monday', 2: 'Tuesday',
3: 'Wednesday', 4: 'Thursday',
5: 'Friday', 6: 'Saturday',
7: 'Sunday'}
if day in Day_dict.keys():
day_of_the_week = Day_dict[day]
print(day_of_the_week)
speak("The day is " + day_of_the_week)
def tellTime():
# This method will give the time
time = str(datetime.datetime.now())
# the time will be displayed like
# this "2020-06-05 17:50:14.582630"
#nd then after slicing we can get time
print(time)
hour = time[11:13]
min = time[14:16]
speak(self, "The time is sir" + hour + "Hours and" + min + "Minutes")
def Hello():
# This function is for when the assistant
# is called it will say hello and then
# take query
speak("hello sir I am your desktop assistant.Tell me how may I help you")
def Take_query():
# calling the Hello function for
# making it more interactive
Hello()
# This loop is infinite as it will take
# our queries continuously until and unless
# we do not say bye to exit or terminate
# the program
while(True):
# taking the query and making it into
# lower case so that most of the times
# query matches and we get the perfect
# output
query = takeCommand().lower()
if "open geeksforgeeks" in query:
speak("Opening Codemagnet ")
# in the open method we just to give the link
# of the website and it automatically open
# it in your default browser
webbrowser.open("www.codemagnet.in")
continue
elif "open google" in query:
speak("Opening Google ")
webbrowser.open("www.google.com")
continue
elif "which day it is" in query:
tellDay()
continue
elif "tell me the time" in query:
tellTime()
continue
# this will exit and terminate the program
elif "bye" in query:
speak("Bye. Check Out GFG for more exciting things")
exit()
elif "from wikipedia" in query:
# if any one wants to have a information
# from wikipedia
speak("Checking the wikipedia ")
query = query.replace("wikipedia", "")
# it will give the summary of 4 lines from
# wikipedia we can increase and decrease
# it also.
result = wikipedia.summary(query, sentences=4)
speak("According to wikipedia")
speak(result)
elif "tell me your name" in query:
speak("I am Jarvis. Your desktop Assistant")
if __name__ == '__main__':
# main method for executing
# the functions
Take_query()

Creating a virtual assistant from scratch using Python is an exciting journey that combines several core concepts of programming, such as speech recognition, text-to-speech conversion, and natural language processing. Throughout this process, you not only gain hands-on experience with Python libraries like speech_recognition, pyttsx3, and wikipedia, but you also develop a deeper understanding of how AI and machine learning models can be applied in real-world scenarios.
A Python-based virtual assistant, while relatively simple compared to commercial-grade systems like Siri or Alexa, offers a solid foundation for understanding the mechanics of voice-activated tools. It demonstrates how Python’s versatility and extensive library support can be leveraged to build practical applications. By working through the steps of capturing voice input, processing the information, and responding with appropriate actions or information, you gain insights into both the challenges and the potential of AI-driven interfaces.
Moreover, this project underscores the importance of continuous learning and iteration. As technology advances, so too will the tools and techniques available for creating more sophisticated virtual assistants. Whether you are a beginner looking to build your first project or an experienced developer exploring AI, creating a virtual assistant in Python is a valuable and rewarding endeavor. It not only enhances your technical skills but also opens up possibilities for more advanced projects in the future.
In conclusion, a Python virtual assistant is a great way to explore the intersection of AI and software development. By mastering the basics and understanding the underlying principles, you can continue to innovate and push the boundaries of what’s possible with AI-powered applications.





Leave a Reply