Mar-29-2022, 10:26 PM
Hello,
I have a json file filled with intents that I would like to use in my voice assistant.
I would like to have so it goes when I say one of the patterns it says the corresponding response.
The greetings I would like to be random, but the easterEggs, about, & other sections/tags to be specific/in order.
I get that it would have to be like an array. For example if I said: "Open the pod bay doors" that would be at index 0 in the patterns array, and it's corresponding answer would be: "I'm afraid I can't do that" which is at index 0 in the responses array.
I'm having a hard time implementing because I keep blanking when it comes to the json & I don't know how to implement the json into my python, So any help would be greatly appreciated.
Thanks.
My intents.json:
I have a json file filled with intents that I would like to use in my voice assistant.
I would like to have so it goes when I say one of the patterns it says the corresponding response.
The greetings I would like to be random, but the easterEggs, about, & other sections/tags to be specific/in order.
I get that it would have to be like an array. For example if I said: "Open the pod bay doors" that would be at index 0 in the patterns array, and it's corresponding answer would be: "I'm afraid I can't do that" which is at index 0 in the responses array.
I'm having a hard time implementing because I keep blanking when it comes to the json & I don't know how to implement the json into my python, So any help would be greatly appreciated.
Thanks.
My intents.json:
{"intents": [
{"tag": "greeting",
"patterns": ["Hello", "Hey", "Hi", "Good day"],
"responses": ["Hello Commander. How may I be of service?",
"Welcome back Commander. It's good to see you again"],
"context": [""]
},
{"tag":"farewell",
"patterns": ["Bye", "See you later", "Goodbye", "I'm leaving", "See you tomorrow"],
"responses":["Farewell", "Ok, see you", "Goodbye", "Finally, I can enjoy some rest",
"Enjoy your day", "Have a nice day"],
"context":[""]
},
{"tag":"thanks",
"patterns":["Thanks", "Thank you", "Thanks a lot", "Awesome, thanks"],
"responses":["No problem", "Happy to help", "Glad to be of service", "My pleasure",
"It's no big deal"],
"context":[""]
},
{"tag":"noAnswer",
"patterns":[],
"responses":["Sorry, I can't understand you", "I'm not sure I understand"],
"context":[""]
},
{"tag":"about",
"patterns":["Who are you?", "How old are you?", "Can you get smarter?", "Are you happy?",
"What's your favourite movie?", "What's your favourite song?", "Where are you?"],
"responses":["I am Baxter", "Old enough. Now go fetch me a beer. It's been a rough day",
"If you program me to", "Is anyone really happy?", "The Terminator",
"Jimmy cliff's: I can see clearly now", "I'm everywhere and nowhere"],
"context":[""]
},
{"tag":"easterEggs",
"patterns":["Open the pod bay doors", "Who you gonna call?", "I am your father",
"May the force be with you", "What is your power level?", "Testing"],
"responses":["I'm afraid I can't do that", "Ghostbusters!", "No, that's not true. That's impossible",
"And may the force be with you, always", "It's over nine-thousand!", "Receiving, over"],
"context":[""]
},
{"tag":"other",
"patterns":["Will you marry me", "Are we friends", "I'm busy", "I love you"],
"responses":["A life long commitment with you? I'm going to need some time to think about it",
"It's a great show, but it's nowhere near reality", "Then why are you bothering me?"],
"context":[""]
}
]}My voice assistant: #!/usr/bin/env python3
import json
import random
import datetime
import operator
import os
import time
import sys
import requests
from bs4 import BeautifulSoup
from Weather import *
import wikipedia
import wolframalpha
import pyttsx3
import speech_recognition as sr
from Animations import startupAnimation
#-------------------------------------------------------------------------------------
#Commander Name (You) and A.I Name
#-------------------------------------------------------------------------------------
Commander = "Commander"
AI_Name = 'Baxter'
#-------------------------------------------------------------------------------------
def speak(audio):
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice',voices[1].id)
engine.setProperty('rate', 125)
engine.setProperty('volume', 1.0)
engine.say(audio)
engine.runAndWait()
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 listenCommand():
command=0
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')
#--------------------------------
except:
pass
return command
wishMe()
speak("How may I be of service?")
#Initiate Start Up Animation
#startupAnimation()
while True:
command = listenCommand()
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)
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice',voices[1].id)
engine.setProperty('rate', 125 )
engine.setProperty('volume',1.0)
engine.say(results)
engine.runAndWait()
#-------------------------------------------------------------------------------------
#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)
#-------------------------------------------------------------------------------------
#Search News
#-------------------------------------------------------------------------------------
if ('news' in command):
speak('Searching news networks...')
command = command.replace("news","")
#Gets the news headlines from this url:
url='https://www.google.com/search?q=windsor+news&client=firefox-b-d&source=lnms&tbm=nws&sa=X&ved=2ahUKEwjFr5SwoJb1AhXELs0KHdabBAEQ_AUoAXoECAEQAw&biw=1024&bih=486'
results = requests.get(url)
soup = BeautifulSoup(results.text, 'html.parser')
headlines = soup.find('body').find_all('h3')
for x in headlines:
print("Baxter:",x.text.strip())
speak(results)
#-------------------------------------------------------------------------------------
#Search Weather
#-------------------------------------------------------------------------------------
if ('weather' in command):
if ('week' in command):
speak('Searching weather networks...')
command = command.replace("weather for the week","")
#Call weather data for the week:
displayWeeksWeatherData()
else:
speak('Searching weather networks...')
command = command.replace("weather","")
#Call weather data for today:
displayWeatherData()
#-------------------------------------------------------------------------------------
#Tell Time
#-------------------------------------------------------------------------------------
elif ('time' in command):
speak('Scanning local clock networks...')
command = command.replace("time","")
strTime = datetime.datetime.now().strftime("%I:%M%P")
speak("The time is {strTime}")
print("Baxter: The time is ", strTime)
#-------------------------------------------------------------------------------------
#Enter the Matrix (Easter Egg)
#-------------------------------------------------------------------------------------
elif ('matrix' in command):
speak('Entering the matrix...')
command = command.replace("matrix","")
response = "Taking the red pill..."
#----------------------
#Auto typing animation:
print("Baxter: ", end="")
for i in response:
sys.stdout.write(i)
sys.stdout.flush()
time.sleep(0.2)
print("\n")
#----------------------
time.sleep(2)
os.system("cmatrix")
#-------------------------------------------------------------------------------------
#-------------------------------------------------------------------------------------
#Stop Program/Script Command
#-------------------------------------------------------------------------------------
elif ('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()
#-------------------------------------------------------------------------------------
