Mar-31-2022, 10:55 PM
Hello,
I added a wakeword to my voice assistant but now when I say a command like: "Who is Albert Einstein", It searches with the wake word in the command, like so: "Baxter who is Albert Einstein", instead of just searching "who is Albert Einstein".
How can I ignore the wakeword so once I say it, it takes in my commands without concatenating the wakword to it?
Thanks in advance.
The full code:
I added a wakeword to my voice assistant but now when I say a command like: "Who is Albert Einstein", It searches with the wake word in the command, like so: "Baxter who is Albert Einstein", instead of just searching "who is Albert Einstein".
How can I ignore the wakeword so once I say it, it takes in my commands without concatenating the wakword to it?
Thanks in advance.
The full code:
#!/usr/bin/env python3
from concurrent.futures import process
import json
import random
import datetime
import operator
import os
import time
import sys
import requests
from bs4 import BeautifulSoup
import wikipedia
import wolframalpha
import pyttsx3
import speech_recognition as sr
#-------------------------------------------------------------------------------------
#Commander Name (You) and A.I Name
#-------------------------------------------------------------------------------------
Commander = "Commander"
AI_Name = 'Baxter'
#-------------------------------------------------------------------------------------
def speak(audio):
speaker = pyttsx3.init ()
voices = speaker.getProperty('voices')
speaker.setProperty('voice',voices[1].id)
speaker.setProperty ('rate', 180)
speaker.say (audio)
speaker.runAndWait ()
## Test to see all avaliable voices
# engine = pyttsx3.init()
# voices = engine.getProperty('voices')
# for voice in voices:
# print(voice, voice.id)
# engine.setProperty('voice', voice.id)
# engine.say("Hello World!")
# engine.runAndWait()
# engine.stop()
def wishMe():
hour = int(datetime.datetime.now().hour)
if hour>=0 and hour<12:
speak("Good Morning" + Commander)
elif hour>=12 and hour<18:
speak("Good Afternoon" + Commander)
else:
speak("Good Evening" + Commander)
def listen():
hear = sr.Recognizer()
with sr.Microphone() as source:
print("Listening...")
audio = hear.listen(source)
#---------------------------
# Uses google API to listen
try:
print("Recognizing...")
command = hear.recognize_google(audio, language='en-in')
print(f'{Commander} : {command}\n')
# Wait for WakeWord
if (command.split(' ')[0] == AI_Name):
speak("Executing Command")
process(command)
#--------------------------------
except:
pass
return command
wishMe()
speak("How may I be of service?")
while True:
listen()
command = listen()
command=str(command).lower()
#-------------------------------------------------------------------------------------
#Search Wikipedia (General Info)
#-------------------------------------------------------------------------------------
if ('weather' not in command):
if ('who is' in command) or ('what is the' in command) or ('what is a' in command) or ("what is" in command):
if ('time' not in command):
if ('news' not in command):
speak('Searching Wikipedia...')
command = command.replace("who is","")
command = command.replace("what is the","")
command = command.replace("what is a","")
command = command.replace("what is","")
results = wikipedia.summary(command, sentences = 2)
#----------------------
#Auto typing animation:
print("Baxter: ", end="")
for i in results:
sys.stdout.write(i)
sys.stdout.flush()
time.sleep(0.05)
print("\n")
#----------------------
speak(results)
#-------------------------------------------------------------------------------------
#Search Wolfram Alpha (Math/Conversions, Definitions)
#-------------------------------------------------------------------------------------
if ('weather' not in command):
if ('news' not in command):
if ('calculate' in command) or ("what's" in command) or ('define' in command):
speak('Searching Wolfram Alpha...')
command = command.replace("calculate","")
command = command.replace("what's","")
command = command.replace("define","")
# Wolframalpha App Id
appId = 'JH9XHR-W9J76L7H5A'
# Wolfram Instance
client = wolframalpha.Client(appId)
res = client.query(''.join(command))
results = next(res.results).text
#----------------------
#Auto typing animation:
print("Baxter: ", end="")
for i in results:
sys.stdout.write(i)
sys.stdout.flush()
time.sleep(0.05)
print("\n")
#----------------------
speak(results)
#-------------------------------------------------------------------------------------
#Stop Program/Script Command
#-------------------------------------------------------------------------------------
if ('stop' in command) or ('shutdown' in command) or ('quit' in command):
speak("Shutting Down...")
response = "Terminating program..."
#----------------------
#Auto typing animation:
print("Baxter: ", end="")
for i in response:
sys.stdout.write(i)
sys.stdout.flush()
time.sleep(0.2)
print("\n")
#----------------------
exit()
#-------------------------------------------------------------------------------------
