Skip to content

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

@3yalzayed

Description

@3yalzayed

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions