Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How can I make a wake word in my code :( #7

Open
3yalzayed opened this issue Oct 13, 2020 · 0 comments
Open

How can I make a wake word in my code :( #7

3yalzayed opened this issue Oct 13, 2020 · 0 comments

Comments

@3yalzayed
Copy link

How can I put the wake word I tried many time

The code:

import libers

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 yfinance as yf # to fetch financial data
import ssl
import certifi
import time
import os # to remove created audio files

class person:
name = ''
def setName(self, name):
self.name = name

def to listening 1

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

def to listening 2

r = sr.Recognizer() # initialise a recogniser

listen for audio and convert it to text:

def record_audio(ask=False):
with sr.Microphone() as source: # microphone as source
if ask:
speak(ask)
audio = r.listen(source) # listen for the audio via source
voice_data = ''
try:
voice_data = r.recognize_google(audio) # convert audio to text
except sr.UnknownValueError: # error: recognizer does not understand
speak('Can you repeat')
except sr.RequestError:
speak('Sorry, the service is down') # error: recognizer is not connected
print(f">> {voice_data.lower()}") # print what user said
return voice_data.lower()

get string and make a audio file to be played and choose the lang

def speak(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(f"kiri: {audio_string}") # print what app said
os.remove(audio_file) # remove audio file

wake = ["welcome", "hey sara"]

respond for listening 1

def respond(voice_data):

# 1: greeting
if there_exists(['hey','hi','hello']):
    greetings = [f"hey, how can I help you {person_obj.name}", f"hey, what's up? {person_obj.name}", f"I'm listening {person_obj.name}", f"how can I help you? {person_obj.name}", f"hello {person_obj.name}"]
    greet = greetings[random.randint(0,len(greetings)-1)]
    speak(greet)

# 2: name
if there_exists(["what is your name","what's your name","tell me your name"]):
    if person_obj.name:
        speak("my name is sara")
    else:
        speak("my name is sara. what's your name?")

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

# 3: greeting
if there_exists(["how are you","how are you doing"]):
    speak(f"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"]):
    time = ctime().split(" ")[3].split(":")[0:2]
    if time[0] == "00":
        hours = '12'
    else:
        hours = time[0]
    minutes = time[1]
    time = f'{hours} {minutes}'
    speak(time)

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

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

# 7: get stock price
if there_exists(["price of"]):
    search_term = voice_data.lower().split(" of ")[-1].strip() #strip removes whitespace after/before a term in string
    stocks = {
        "apple":"AAPL",
        "microsoft":"MSFT",
        "facebook":"FB",
        "tesla":"TSLA",
        "bitcoin":"BTC-USD"
    }
    try:
        stock = stocks[search_term]
        stock = yf.Ticker(stock)
        price = stock.info["regularMarketPrice"]

        speak(f'price of {search_term} is {price} {stock.info["currency"]} {person_obj.name}')
    except:
        speak('oops, something went wrong')

# 8: to stop
if there_exists(["exit", "quit", "goodbye"]):
    speak("going offline")
    exit()

# 9: thank you responed
if there_exists(["thank you","thanks","you are the best"]):
        speak(" welcome sir ")

time.sleep(0.5)

person_obj = person()
while(1):
voice_data = record_audio() # get the voice input
respond(voice_data) # respond

sorry I am new in githup

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant