Sashido and ml project

shreyashmohadikar

Shreyash

Posted on March 21, 2021

Sashido and ml project

'''#code starts
import speech_recognition as sr # recognise speech
import playsound # to play an audio file
from gtts import gTTS # google text to speech
import random
from time import ctime # get time details
import webbrowser # open browser
import ssl
import certifi
import time
import os # to remove created audio files
from PIL import Image
import subprocess
import pyautogui # screenshot
import pyttsx3
import bs4 as bs
import urllib.request
import requests

class person:
name = ''

def setName(self, name):
    self.name = name
Enter fullscreen mode Exit fullscreen mode

class asis:
name = ''

def setName(self, name):
    self.name = name
Enter fullscreen mode Exit fullscreen mode

def there_exists(terms):
for term in terms:
if term in voice_data:
return True

def engine_speak(text):
text = str(text)
engine.say(text)
engine.runAndWait()

r = sr.Recognizer() # initialise a recogniser

listen for audio and convert it to text:

def record_audio(ask=""):
with sr.Microphone() as source: # microphone as source
if ask:
engine_speak(ask)
audio = r.listen(source, 5, 5) # listen for the audio via source
print("Done Listening")
voice_data = ''
try:
voice_data = r.recognize_google(audio) # convert audio to text
except sr.UnknownValueError: # error: recognizer does not understand
engine_speak('I did not get that')
except sr.RequestError:
engine_speak('Sorry, the service is down') # error: recognizer is not connected
print(">>", voice_data.lower()) # print what user said
return voice_data.lower()

get string and make a audio file to be played

def engine_speak(audio_string):
audio_string = str(audio_string)
tts = gTTS(text=audio_string, lang='en') # text to speech(voice)
r = random.randint(1, 20000000)
audio_file = 'audio' + str(r) + '.mp3'
tts.save(audio_file) # save as mp3
playsound.playsound(audio_file) # play the audio file
print(asis_obj.name + ":", audio_string) # print what app said
os.remove(audio_file) # remove audio file

def respond(voice_data):
# 1: greeting
if there_exists(['hey', 'hi', 'hello']):
greetings = ["hey, how can I help you" + person_obj.name, "hey, what's up?" + person_obj.name,
"I'm listening" + person_obj.name, "how can I help you?" + person_obj.name,
"hello" + person_obj.name]
greet = greetings[random.randint(0, len(greetings) - 1)]
engine_speak(greet)
# 2: name
if there_exists(["what is your name", "what's your name", "tell me your name"]):

    if person_obj.name:
        engine_speak(f"My name is {asis_obj.name}, {person_obj.name}")  # gets users name from voice input
    else:
        engine_speak(f"My name is {asis_obj.name}. what's your name?")  # incase you haven't provided your name.

if there_exists(["my name is"]):
    person_name = voice_data.split("is")[-1].strip()
    engine_speak("okay, i will remember that " + person_name)
    person_obj.setName(person_name)  # remember name in person object

if there_exists(["what is my name"]):
    engine_speak("Your name must be " + person_obj.name)

if there_exists(["your name should be"]):
    asis_name = voice_data.split("be")[-1].strip()
    engine_speak("okay, i will remember that my name is " + asis_name)
    asis_obj.setName(asis_name)  # remember name in asis object

# 3: greeting
if there_exists(["how are you", "how are you doing"]):
    engine_speak("I'm very well, thanks for asking " + person_obj.name)

# 4: time
if there_exists(["what's the time", "tell me the time", "what time is it", "what is the time"]):
    time = ctime().split(" ")[3].split(":")[0:2]
    if time[0] == "00":
        hours = '12'
    else:
        hours = time[0]
    minutes = time[1]
    time = hours + " hours and " + minutes + "minutes"
    engine_speak(time)

# 5: search google
if there_exists(["search for"]) and 'youtube' not in voice_data:
    search_term = voice_data.split("for")[-1]
    url = "https://google.com/search?q=" + search_term
    webbrowser.get().open(url)
    engine_speak("Here is what I found for" + search_term + "on google")

if there_exists(["search"]) and 'youtube' not in voice_data:
    search_term = voice_data.replace("search", "")
    url = "https://google.com/search?q=" + search_term
    webbrowser.get().open(url)
    engine_speak("Here is what I found for" + search_term + "on google")

# 6: search youtube
if there_exists(["youtube"]):
    search_term = voice_data.split("for")[-1]
    search_term = search_term.replace("on youtube", "").replace("search", "")
    url = "https://www.youtube.com/results?search_query=" + search_term
    webbrowser.get().open(url)
    engine_speak("Here is what I found for " + search_term + "on youtube")

# 7: get stock price
if there_exists(["price of"]):
    search_term = voice_data.split("for")[-1]
    url = "https://google.com/search?q=" + search_term
    webbrowser.get().open(url)
    engine_speak("Here is what I found for " + search_term + " on google")

# 8 time table
if there_exists(["show my time table"]):
    im = Image.open(r"D:\WhatsApp Image 2019-12-26 at 10.51.10 AM.jpeg")
    im.show()

# 9 weather
if there_exists(["weather"]):
    search_term = voice_data.split("for")[-1]
    url = "https://www.google.com/search?sxsrf=ACYBGNSQwMLDByBwdVFIUCbQqya-ET7AAA%3A1578847393212&ei=oUwbXtbXDN-C4-EP-5u82AE&q=weather&oq=weather&gs_l=psy-ab.3..35i39i285i70i256j0i67l4j0i131i67j0i131j0i67l2j0.1630.4591..5475...1.2..2.322.1659.9j5j0j1......0....1..gws-wiz.....10..0i71j35i39j35i362i39._5eSPD47bv8&ved=0ahUKEwiWrJvwwP7mAhVfwTgGHfsNDxsQ4dUDCAs&uact=5"
    webbrowser.get().open(url)
    engine_speak("Here is what I found for on google")

# 10 stone paper scisorrs
if there_exists(["game"]):
    voice_data = record_audio("choose among rock paper or scissor")
    moves = ["rock", "paper", "scissor"]

    cmove = random.choice(moves)
    pmove = voice_data

    engine_speak("The computer chose " + cmove)
    engine_speak("You chose " + pmove)
    # engine_speak("hi")
    if pmove == cmove:
        engine_speak("the match is draw")
    elif pmove == "rock" and cmove == "scissor":
        engine_speak("Player wins")
    elif pmove == "rock" and cmove == "paper":
        engine_speak("Computer wins")
    elif pmove == "paper" and cmove == "rock":
        engine_speak("Player wins")
    elif pmove == "paper" and cmove == "scissor":
        engine_speak("Computer wins")
    elif pmove == "scissor" and cmove == "paper":
        engine_speak("Player wins")
    elif pmove == "scissor" and cmove == "rock":
        engine_speak("Computer wins")

# 11 toss a coin
if there_exists(["toss", "flip", "coin"]):
    moves = ["head", "tails"]
    cmove = random.choice(moves)
    engine_speak("The computer chose " + cmove)

# 12 calc
if there_exists(["plus", "minus", "multiply", "divide", "power", "+", "-", "*", "/"]):
    opr = voice_data.split()[1]

    if opr == '+':
        engine_speak(int(voice_data.split()[0]) + int(voice_data.split()[2]))
    elif opr == '-':
        engine_speak(int(voice_data.split()[0]) - int(voice_data.split()[2]))
    elif opr == 'multiply' or 'x':
        engine_speak(int(voice_data.split()[0]) * int(voice_data.split()[2]))
    elif opr == 'divide':
        engine_speak(int(voice_data.split()[0]) / int(voice_data.split()[2]))
    elif opr == 'power':
        engine_speak(int(voice_data.split()[0]) ** int(voice_data.split()[2]))
    else:
        engine_speak("Wrong Operator")

# 13 screenshot
if there_exists(["capture", "my screen", "screenshot"]):
    myScreenshot = pyautogui.screenshot()
    myScreenshot.save('D:\\screenshot\\screenshot.png')

# 14 to search wikipedia for definition
if there_exists(["definition of"]):
    definition = record_audio("what do you need the definition of")
    url = urllib.request.urlopen('https://en.wikipedia.org/wiki/' + definition)
    soup = bs.BeautifulSoup(url, 'lxml')
    definitions = []
    for paragraph in soup.find_all('p'):
        definitions.append(str(paragraph.text))
    if definitions:
        if definitions[0]:
            engine_speak('im sorry i could not find that definition, please try a web search')
        elif definitions[1]:
            engine_speak('here is what i found ' + definitions[1])
        else:
            engine_speak('Here is what i found ' + definitions[2])
    else:
        engine_speak("im sorry i could not find the definition for " + definition)

if there_exists(["exit", "quit", "goodbye"]):
    engine_speak("bye")
    exit()

# Current city or region
if there_exists(["where am i"]):
    Ip_info = requests.get('https://api.ipdata.co?api-key=test').json()
    loc = Ip_info['region']
    engine_speak(f"You must be somewhere in {loc}")

    # Current location as per Google maps
if there_exists(["what is my exact location"]):
    url = "https://www.google.com/maps/search/Where+am+I+?/"
    webbrowser.get().open(url)
    engine_speak("You must be somewhere near here, as per Google maps")
Enter fullscreen mode Exit fullscreen mode

time.sleep(1)

person_obj = person()
asis_obj = asis()
asis_obj.name = 'Lucy'
person_obj.name = ""
engine = pyttsx3.init()

while (1):
voice_data = record_audio("Recording") # get the voice input
print("Done")
print("Q:", voice_data)
respond(voice_data) # respond'''

💖 💪 🙅 🚩
shreyashmohadikar
Shreyash

Posted on March 21, 2021

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related

Sashido and ml project
geekweeklocal Sashido and ml project

March 21, 2021