我有一个密码识别码,如下所示:
from wit import Wit
import pyttsx3, time
def speak(string):
engine = pyttsx3.init()
engine.setProperty('rate', 220)
engine.say(string)
engine.runAndWait()
def Hear():
recog = sr.Recognizer()
with sr.Microphone() as source:
audio= recog.listen(source)
print (audio)
return
wit_key = 'FO7EYTKK6OHRSZ3A5UFPMZOC7VIXCVSY'
try:
print('VEXD THINKS YOU SAID '+ recog.recognize_wit(audio, key=wit_key))
heard = recog.recognize_wit(audio, key=wit_key)
except sr.UnknownValueError:
print("I DIDN't get that")
except sr.RequestError as e:
print("SERVER DISCONECTED")
speak("CHECKING IDENTITY" )
sound = Hear()
time.sleep(1)
if "master"in sound:
speak("Yes My Lord")
当我说主人的时候,它应该说是的,我的主人 但是当我说master时,它返回这个错误
File "c:/Users/tdmfa/OneDrive/Desktop/VEXD app/VEXD AI/AI_START.py", line 33, in <module>
if "master"in sound:
TypeError: argument of type 'NoneType' is not iterable
这行代码不接收来自
Hear()
函数的任何输出。您的Hear()
函数不返回任何值,它只是退出函数并返回None
。这就是为什么它说'NoneType' is not iterable
,因为您正在尝试迭代sound
这应该起作用:
看起来您应该从
Hear()
函数返回heard
,而不是像当前那样返回None
。该函数中有两个退出点,都返回None
:return
return
返回特定值的情况下结束时隐式执行李>要修复此问题,请在识别器获取音频后立即删除
return
调用,然后在heard = recog.recognize_wit(audio, key=wit_key)
之后添加return heard
。如果引发了预期的异常之一,则函数仍然可以返回None
,因此您可能希望返回空列表,或者根据需要重试我不熟悉您正在使用的库,因此我假设
heard
将是某种类型的iterable(列表、元组、字符串等),对代码的其余部分有意义相关问题 更多 >
编程相关推荐