0

我想问是否有办法为我在 python 3.7.6(windows 7)中制作的 JARVIS AI 制作热词。我希望每当我说“Hey Jarvis”时激活 JARVIS(就像 Hey siri 一样)。我的 jarvis 的代码如下。我尝试了名为 lshotword 的库,但它给出了一个名为 no module named tensorflow 的错误

import pyttsx3

import speech_recognition as sr
import datetime
import wikipedia
import time
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import pyautogui
# Use female voice
import pyperclip
hiddenimports = [
   'pyttsx3.drivers',
   'pyttsx3.drivers.dummy',
   'pyttsx3.drivers.espeak',
   'pyttsx3.drivers.nsss',
   'pyttsx3.drivers.sapi5', ]

engine = pyttsx3.init('sapi5')

voices = engine.getProperty('voice')
engine.setProperty('voice', voices)
engine.setProperty('rate', 150)
engine.setProperty('volume', 10)

def speak(audio):
 engine.say(audio)
 engine.runAndWait()

def wishMe():
   hour = int(datetime.datetime.now().hour)
   if hour>=0 and hour<12:
       speak("Good Morning!")
   elif hour>=12 and hour<18:
       speak("Good Afternoon!")
   else:
       speak("Good Evening!")
   speak("I am friday, is there anything to help you sir?")

def takecommand():
   r = sr.Recognizer()
   with sr.Microphone() as source:
       print("Listening....")
       r.pause_threshold = 1
       audio = r.listen(source)
   try:
    print("Recognizing....")
    query = r.recognize_google(audio, language='en-in')
    print(f"user said: {query}\n")
   except Exception as e:
     print(e)
     return "None"
   return query


def typenh():
   r = sr.Recognizer()
   with sr.Microphone() as source:
       print("Listening....")
       r.pause_threshold = 1
       audio = r.listen(source)
   try:
    print("Recognizing....")
    typethingh = r.recognize_google(audio, language='hi')
    print(f"user said: {typethingh}\n")
   except Exception as e:
     print(e)
     speak("sorry I could not understand, say that again please...")
     return "None"
   return typethingh



if __name__ == "__main__": 
   wishMe()
   while True:
    query = takecommand().lower()
    query.replace("could you", "")
    query.replace("please", "")
    if 'wikipedia' in query:
           speak('searching Wikipedia...')
           query = query.replace("wikipedia", "")
           results = wikipedia.summary(query, sentences=2)
           speak("according to wikipedia")
           speak(results)
    if 'manav sampada' in query:
           speak('loging in to manav sampada')
           browser = webdriver.Chrome('D:\\chromedriver.exe')
           browser.get('http://ehrms.upsdc.gov.in/')
           elem = browser.find_element_by_partial_link_text('eHRMS Login')
           elem.get_attribute('href')
           time.sleep(1)
           elem.click()
           time.sleep(1)
           loginr = browser.find_element_by_xpath('//*[@id="txtusername"]')
           loginr.send_keys('your id ')
           time.sleep(1)
           select = Select(browser.find_element_by_id('ddldept'))
           select.select_by_visible_text('Basic Education')
           time.sleep(1)
           password = browser.find_element_by_xpath('//*[@id="txtpwd"]')
           password.send_keys('your password')
           speak('sir I have filled all userID password etc. but ')
           speak('sir you have to fill the human verification captha by yourself as I am just a bot ')
           speak('I hope I was able to assist you')
    if 'software' in query:
           speak('opening sir')
           query = query.replace("software", "")
           pyautogui.click(27, 880)
           pyautogui.typewrite(query)
           time.sleep(1)
           pyautogui.click(79,441)
    if 'send' and 'gmail' in query:
           speak('opening gmail')
           browser = webdriver.Chrome('D:\\chromedriver.exe')
           browser.get('https://accounts.google.com/b/0/AddMailService')
           time.sleep(1)
           login = browser.find_element_by_xpath('//*[@id="identifierId"]')
           login.send_keys('your gmail id @gmail.com')
           login.send_keys(Keys.ENTER)
           time.sleep(1)
           loginpwd = browser.find_element_by_xpath('//*[@id="password"]/div[1]/div/div[1]/input')
           loginpwd.send_keys('your awesom password here')
           loginpwd.send_keys(Keys.ENTER)
           time.sleep(10)
           try:
               speak('just a sec')
               compose = browser.find_element_by_class_name('z0')
               time.sleep(2)
               compose.click()
               time.sleep(1)
               speak('whom do you want to send the gmail')
               sendto = takecommand().lower()
               sendto = ''.join(sendto.split())
               tom = browser.find_element_by_name('to')
               tom.send_keys(sendto)
               speak('what is the subject?')
               subject = browser.find_element_by_name('subjectbox')
               time.sleep(0.5)
               
               whatissu = takecommand()
               subject.send_keys(whatissu)
               body = browser.find_element_by_name('Message Body')
               speak('what is the main body?')
               mainbody = takecommand()
               body.send_keys(mainbody)

           except Exception as identifier:
               compose = browser.find_element_by_xpath('//*[@id=":jm"]/div/div')
               time.sleep(1)
               compose.click()
               time.sleep(1)
               speak('whom do you want to send the gmail')
               sendto = takecommand().lower()
               sendto = ''.join(sendto.split())
               tom = browser.find_element_by_name('to')
               tom.send_keys(sendto)                                                   
               subject = browser.find_element_by_name('subjectbox')
               time.sleep(0.5)
               speak('what is the subject?')
               whatissu = takecommand()
               subject.send_keys(whatissu)
               body = browser.find_element_by_name('Message Body')
               speak('what is the main body?')
               mainbody = takecommand()
               body.send_keys(mainbody)            
       
    if 'hindi' in query:
       speak('what to type?')
       typethingh = typenh()
       content = typethingh
       pyperclip.copy(content)
       time.sleep(0.5)
       pyautogui.hotkey('ctrl', 'v')

    if 'do you have a boyfriend' in query:
        speak('I am happy to be single')

    if 'siri' in query:
        speak('siri is smart but I dont like him')

    if 'how are you' in query:
        speak('I am good ')

    if 'i hate you' in query:
        speak('than go to siri or google. why are you even talking to me')

    if 'who is your creator' in query:
        speak("my creater is aditya maurya")

    if 'who made you' in query:
        speak('aditya maurya made me. he is also known as estriadi')

    if 'who created you' in query:
        speak('aditya maurya created me    ')

    if 'whatsapp' in query:
        browser = webdriver.Chrome('D:\\chromedriver.exe')
        speak('opening whatsapp web')
        browser.get('https://web.whatsapp.com/')
        speak('please scan the qr code. I am waiting for 10 seconds')
        time.sleep(10)
        try:
            find = browser.find_element_by_xpath('//*[@id="side"]/div[1]/div/label/div/div[2]')
            find.click()
            speak('tell the first word of the contact to whom you want to send the messege')
            sendmsg = takecommand()
            find.send_keys(sendmsg)
            time.sleep(1.5)
            find.send_keys(Keys.ENTER)
            try:
                typenum = browser.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div[2]/div/div[2]')
                typenum.click()
                speak('what do you want to send sir?')
                whattosend = takecommand()
                typenum.send_keys(whattosend)
                typenum.send_keys(Keys.ENTER)
            except Exception as identifier:
                speak('there is no contact as'+sendmsg)
        except Exception as identifier:
            speak('you did not make it in 10 seconds')


    if 'quit' in query:
       exit()
4

1 回答 1

0

基本上,你想从一开始就听 Hey Jarvis,如果你听到了,就执行其余的代码。

这是我的做法:

import pyttsx3

import speech_recognition as sr
import datetime
import wikipedia
import time
from selenium.webdriver.support.ui import Select
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
import pyautogui
# Use female voice
import pyperclip
hiddenimports = [
   'pyttsx3.drivers',
   'pyttsx3.drivers.dummy',
   'pyttsx3.drivers.espeak',
   'pyttsx3.drivers.nsss',
   'pyttsx3.drivers.sapi5', ]

engine = pyttsx3.init('sapi5')

voices = engine.getProperty('voice')
engine.setProperty('voice', voices)
engine.setProperty('rate', 150)
engine.setProperty('volume', 10)

def speak(audio):
 engine.say(audio)
 engine.runAndWait()

def wishMe():
   hour = int(datetime.datetime.now().hour)
   if hour>=0 and hour<12:
       speak("Good Morning!")
   elif hour>=12 and hour<18:
       speak("Good Afternoon!")
   else:
       speak("Good Evening!")
   speak("I am friday, is there anything to help you sir?")

def takecommand():
    r = sr.Recognizer()
    with sr.Microphone() as source:
        print("Listening....")
        r.pause_threshold = 1
        audio = r.listen(source)
    try:
        print("Recognizing....")
        query = r.recognize_google(audio, language='en-in')
        print(f"user said: {query}\n")
    except Exception as e:
        print(e)
        return "None"
    return query


def typenh():
   r = sr.Recognizer()
   with sr.Microphone() as source:
       print("Listening....")
       r.pause_threshold = 1
       audio = r.listen(source)
   try:
    print("Recognizing....")
    typethingh = r.recognize_google(audio, language='hi')
    print(f"user said: {typethingh}\n")
   except Exception as e:
     print(e)
     speak("sorry I could not understand, say that again please...")
     return "None"
   return typethingh

i = 0

#Edited From Here
n = 0
k = 0

print("Say Hey Jarvis To Begin Initiation Sequence") #Sounds SICK Right!
while (i<1):
    r = sr.Recognizer()
    with sr.Microphone() as source:
        audio = r.adjust_for_ambient_noise(source)
        n=(n+1)
        audio = r.listen(source)
        # interprete audio (Google Speech Recognition)
    try:
        s = (r.recognize_google(audio))
        message = (s.lower())

        if message == "hey jarvis":
            wishMe()
            k = 0
            while k == 0:
                query = takecommand().lower()
                query.replace("could you", "")
                query.replace("please", "")

                if 'sleep' in query:
                    speak("Entering Sleep Mode. Say Hey Jarvis To Wake Me Up!")
                    k = 1
                    print("Say Hey Jarvis To Begin Initiation Sequence")
                    #Editing Ends Here
                if 'wikipedia' in query:
                       speak('searching Wikipedia...')
                       query = query.replace("wikipedia", "")
                       results = wikipedia.summary(query, sentences=2)
                       speak("according to wikipedia")
                       speak(results)
                if 'manav sampada' in query:
                       speak('loging in to manav sampada')
                       browser = webdriver.Chrome('D:\\chromedriver.exe')
                       browser.get('http://ehrms.upsdc.gov.in/')
                       elem = browser.find_element_by_partial_link_text('eHRMS Login')
                       elem.get_attribute('href')
                       time.sleep(1)
                       elem.click()
                       time.sleep(1)
                       loginr = browser.find_element_by_xpath('//*[@id="txtusername"]')
                       loginr.send_keys('your id ')
                       time.sleep(1)
                       select = Select(browser.find_element_by_id('ddldept'))
                       select.select_by_visible_text('Basic Education')
                       time.sleep(1)
                       password = browser.find_element_by_xpath('//*[@id="txtpwd"]')
                       password.send_keys('your password')
                       speak('sir I have filled all userID password etc. but ')
                       speak('sir you have to fill the human verification captha by yourself as I am just a bot ')
                       speak('I hope I was able to assist you')
                if 'software' in query:
                       speak('opening sir')
                       query = query.replace("software", "")
                       pyautogui.click(27, 880)
                       pyautogui.typewrite(query)
                       time.sleep(1)
                       pyautogui.click(79,441)
                if 'send' and 'gmail' in query:
                       speak('opening gmail')
                       browser = webdriver.Chrome('D:\\chromedriver.exe')
                       browser.get('https://accounts.google.com/b/0/AddMailService')
                       time.sleep(1)
                       login = browser.find_element_by_xpath('//*[@id="identifierId"]')
                       login.send_keys('your gmail id @gmail.com')
                       login.send_keys(Keys.ENTER)
                       time.sleep(1)
                       loginpwd = browser.find_element_by_xpath('//*[@id="password"]/div[1]/div/div[1]/input')
                       loginpwd.send_keys('your awesom password here')
                       loginpwd.send_keys(Keys.ENTER)
                       time.sleep(10)
                       try:
                           speak('just a sec')
                           compose = browser.find_element_by_class_name('z0')
                           time.sleep(2)
                           compose.click()
                           time.sleep(1)
                           speak('whom do you want to send the gmail')
                           sendto = takecommand().lower()
                           sendto = ''.join(sendto.split())
                           tom = browser.find_element_by_name('to')
                           tom.send_keys(sendto)
                           speak('what is the subject?')
                           subject = browser.find_element_by_name('subjectbox')
                           time.sleep(0.5)
                           
                           whatissu = takecommand()
                           subject.send_keys(whatissu)
                           body = browser.find_element_by_name('Message Body')
                           speak('what is the main body?')
                           mainbody = takecommand()
                           body.send_keys(mainbody)

                       except Exception as identifier:
                           compose = browser.find_element_by_xpath('//*[@id=":jm"]/div/div')
                           time.sleep(1)
                           compose.click()
                           time.sleep(1)
                           speak('whom do you want to send the gmail')
                           sendto = takecommand().lower()
                           sendto = ''.join(sendto.split())
                           tom = browser.find_element_by_name('to')
                           tom.send_keys(sendto)                                                   
                           subject = browser.find_element_by_name('subjectbox')
                           time.sleep(0.5)
                           speak('what is the subject?')
                           whatissu = takecommand()
                           subject.send_keys(whatissu)
                           body = browser.find_element_by_name('Message Body')
                           speak('what is the main body?')
                           mainbody = takecommand()
                           body.send_keys(mainbody)            
                   
                if 'hindi' in query:
                   speak('what to type?')
                   typethingh = typenh()
                   content = typethingh
                   pyperclip.copy(content)
                   time.sleep(0.5)
                   pyautogui.hotkey('ctrl', 'v')

                if 'do you have a boyfriend' in query:
                    speak('I am happy to be single')

                if 'siri' in query:
                    speak('siri is smart but I dont like him')

                if 'how are you' in query:
                    speak('I am good ')

                if 'i hate you' in query:
                    speak('than go to siri or google. why are you even talking to me')

                if 'who is your creator' in query:
                    speak("my creater is John Cena(The OG Himself)")

                if 'who made you' in query:
                    speak('John Cena Made e. He Is An OG!')

                if 'who created you' in query:
                    speak('Booooob The BUILDER!!!')

                if 'whatsapp' in query:
                    browser = webdriver.Chrome('D:\\chromedriver.exe')
                    speak('opening whatsapp web')
                    browser.get('https://web.whatsapp.com/')
                    speak('please scan the qr code. I am waiting for 10 seconds')
                    time.sleep(10)
                    try:
                        find = browser.find_element_by_xpath('//*[@id="side"]/div[1]/div/label/div/div[2]')
                        find.click()
                        speak('tell the first word of the contact to whom you want to send the messege')
                        sendmsg = takecommand()
                        find.send_keys(sendmsg)
                        time.sleep(1.5)
                        find.send_keys(Keys.ENTER)
                        try:
                            typenum = browser.find_element_by_xpath('//*[@id="main"]/footer/div[1]/div[2]/div/div[2]')
                            typenum.click()
                            speak('what do you want to send sir?')
                            whattosend = takecommand()
                            typenum.send_keys(whattosend)
                            typenum.send_keys(Keys.ENTER)
                        except Exception as identifier:
                            speak('there is no contact as'+sendmsg)
                    except Exception as identifier:
                        speak('you did not make it in 10 seconds')


                if 'quit' in query:
                   exit()

    except Exception as e:
        pass

让我解释:

在第 76 行,我定义了另外两个我们稍后需要的变量:n 和 k。在第 79 行,我打印一条消息,告诉用户说“Hey Jarvis”以启动 AI。在第 80 行,我开始了一个 while 循环。这个循环只监听 Hey Jarvis 和 Hey Jarvis!

while 循环与你的函数 takecommand() 非常相似,所以我不会解释。

在第 91 行,它检查查询/消息是否等于“Hey Jarvis”。如果是,那么它将开始执行您的代码。

我所做的最后一个编辑是将 AI 返回到睡眠模式,在该模式下它会进入睡眠状态,并再次等待用户说“Hey Jarvis”。

如果对 AI 说“睡眠”,那么它会告诉用户它将进入睡眠模式。然后,它将 k 更改为等于 1。这会中断 while 循环,因为 while 循环的工作时间与 k == 0 一样长。

于 2020-12-25T14:12:22.693 回答