我正在尝试制作一个虚拟助手,剩下的唯一问题就是这个。我尝试了 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()
答案 0 :(得分:0)
因为你在 command
中定义了 run_lora
它是一个私有变量
您只需要添加 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
答案 1 :(得分:0)
在 command
函数中将单词 cmnd
更改为 take_command()
。您的命令变量在实际声明之前已被引用
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
答案 2 :(得分:0)
我认为我的问题是我需要 pyadio,但 pyaudio 版本对于 python 3.8 来说太旧了