
In this tutorial we will be building our own virtual assistant with Machine Learning and Python, with complete voice activation plus response to a our inquiries. From there, you can customize it to perform whatever tasks you need most.
Lets import the libraries we need for this task:
import speech_recognition as sr import os from gtts import gTTS import datetime import warnings import calendar import random import wikipedia
To ignore any warnings
warnings.filterwarnings('ignore')To Record audio and return it into a string
def recordAudio():
r = sr.Recognizer()
with sr.Microphone() as source:
print("please say something")
audio = r.listen(source)
#use google speach recognition
data = ''
try:
data = r.recognize_google(audio)
print('you said '+ data)
except sr.UnknownValueError:
print("Sorry I failed to understand")
except sr.RequestError as e:
print("Request results from google" + e)
return dataA function to get the virtual assistant respond
def assistant(text):
print(text)
# convert the text to speech
myObject = gTTS(text=text, lang='en', slow=False)
# save the converted audio to a file
myObject.save('assistant.mp3')
# play the converted file
os.system('start assistant.mp3')
# A functions for wake words
def wakewords(text):
wake = ['hey computer', 'okay computer', 'hey aman']
text = text.lower() # converting the text to all lower case
# check if the user command contains wake words
for phrase in wake:
if phrase in text:
return True
return FalseA function to get the current date, time and month
def getDate():
now = datetime.datetime.now()
date = datetime.datetime.today()
weekday = calendar.day_name[date.weekday()]
month = now.month
daynum = now.day
# A list of months
months = ["January", "February", "March",
"April", "May", "June", "July",
"August", "September", "October",
"November", "December"]
ordinal = ['1st', '2nd', '3rd',
'4th', '5th', '6th',
'7th', '8th','9th',
'10th', '11th', '12th',
'13th', '14th', '15th',
'16th', '17th', '18th',
'19th', '20th', '21st',
'22nd', '23rd','24th',
'25th', '26th', '27th',
'28th', '29th', '30th','31st']
return 'Today is '+weekday+' '+ months[month - 1]+ ' the '+ ordinal[daynum - 1] +'.'A function to create Greetings
def greetings(text):
greetings_input = ['hi', 'hey', 'hola', 'greetings', 'wassup', 'hello']
greetings_response = ['howdy', 'whats up', 'hello', 'hey there']
for word in text.split():
if word.lower() in greetings_input:
return random.choice(greetings_response) + "."
return ''A function to get a persons first and last name from the text
def getPerson(text):
wordlist = text.split()
for i in range(0, len(wordlist)):
if i + 3 <= len(wordlist) - 1 and wordlist[i].lower() == 'who' and wordlist[i+1].lower() == "is":
return wordlist[i+2] + " " + wordlist[i+3]Now let’s use these functions to build our Virtual Assistant :
while True:
text = recordAudio()
response = ' '
if (wakewords(text) == True):
response = response + greetings(text)
if ('date' in text):
get_Date = getDate()
response = response + ' '+get_Date
if ('who is' in text):
person = getPerson(text)
wiki = wikipedia.summary(person, sentences=2)
response = response + ' '+ wiki
assistant(response)Your output will be running like this:
Please speak something





