我正在尝试制作一个虚拟助手,剩下的唯一问题就是这个。我试过google和reddit,但是我没有得到任何答案。我不知道如何修复它,但下面是代码:
我输入这个是因为堆栈溢出不让我发布,除非我有更多的文本,所以这是我的生活故事。上周在学校,我们做了一个实验,我们必须喝5公升的水,然后用大麦和衣服忍受10分钟的严寒天气。我们必须看看,站在寒冷的环境中是否会让我们比待在室内更想小便。当时的理论是,血液叶片会收缩,没有任何空间容纳水,所以我们会把水尿出来。在下一节课之前没有人要上厕所,然后每个人每10分钟上一次厕所。
import speech_recognition as sr
import pyttsx3
import pywhatkit
import datetime
import wikipedia
import pyjokes
listener = sr.Recognizer()
engine = pyttsx3.init()
voices = engine.getProperty('voices')
engine.setProperty('voice', voices[1].id)# 0 is male, 1 is female
engine.say('Booting Lora system')
engine.runAndWait()
def talk(text):
engine.say(text)
engine.runAndWait()
def take_command():
try:
with sr.Microphone() as source:
voice = listener.listen(source)
command = listener.recognize_google(voice)
command = command.lower()
except:
pass
return command
def run_lora():
command = take_command()
if 'play' in command:
song = command.replace('play', '')
talk('playing ' + song)
pywhatkit.playonyt(song)
elif 'time' in command:
time = datetime.datetime.now().strftime('%H:%M')
talk('Current time is ' + time)
elif 'who' in command:
question = command
info = wikipedia.summary(question, 3)
talk(info)
elif 'tell' in command and 'joke' in command:
talk(pyjokes.get_joke())
else:
talk('Sorry I did not understand')
while True:
run_lora()发布于 2021-02-12 23:19:19
因为您在run_lora中定义了command,所以它是一个私有变量,您只需添加global command即可。
def take_command():
global command # <---- Over Here #############
try:
with sr.Microphone() as source:
voice = listener.listen(source)
command = listener.recognize_google(voice)
command = command.lower()
except:
pass
return command发布于 2021-02-12 23:37:53
在take_command()函数中将单词command更改为cmnd。您的命令变量在实际声明之前已被引用
def take_command():
try:
with sr.Microphone() as source:
voice = listener.listen(source)
cmnd = listener.recognize_google(voice)
cmnd = cmnd.lower()
except:
pass
return cmnd发布于 2021-02-12 23:52:09
我想我的问题是我需要pyadio,但是pyaudio版本对于python3.8来说太老了。
https://stackoverflow.com/questions/66174222
复制相似问题