Ignore WakeWord after it's said - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Ignore WakeWord after it's said (/thread-36800.html) |
Ignore WakeWord after it's said - Extra - Mar-31-2022 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: #!/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() #------------------------------------------------------------------------------------- RE: Ignore WakeWord after it's said - popejose - Apr-01-2022 On line 82 it looks like you've got the command string. Check to see if that starts with the wake word and slice it out. RE: Ignore WakeWord after it's said - Extra - Apr-01-2022 (Apr-01-2022, 12:26 AM)popejose Wrote: On line 82 it looks like you've got the command string. Check to see if that starts with the wake word and slice it out. No luck. It didn't work. |