如果函数在第一次运行时没有vakud输出,我很高兴理解为什么下面的函数似乎输出None
而不是1
。
import win32com.client
BING_KEY = "XXXXXXXX"
import speech_recognition as sr
import win32com.client as wincl
s = sr.Recognizer()
def hey_pc():
print(" Hey PC = Command")
with sr.Microphone() as source:
audio = s.listen(source)
try:
x= (s.recognize_bing(audio, key=BING_KEY))
if x in ['hey PC']:
return 1
else: hey_pc()
except:
print('Try again')
hey_pc()
t = hey_pc()
print t
如果函数在第一次运行时输出,我得到以下输出:
Hey PC == Command
1
但是如果它调用它的递归属性,我的最终输出为None
Hey PC == Command
Hey PC == Command
Hey PC == Command
Hey PC == Command
None
或者
Hey PC == Command
Try again
Hey PC == Command
Hey PC == Command
None
我不明白为什么我“没有”。“
编辑:
我已将代码的第二部分更改为此并且更多地播放但仍然存在同样的问题:
t =hey_pc()
if t == 1:
speak = wincl.Dispatch("SAPI.SpVoice")
speak.Speak("This is the pc voice speaking")
import automation
automation.Apply_Command()
else:
hey_pc()
如果我的声音在第一次尝试时被识别,if t==1
下的代码就会运行并且没有任何问题,但是如果我的声音在第一次尝试时未被识别并且重新启动部分代码被激活,那么一旦我的语音最终被识别,程序刚刚结束(意味着Python命令提示符>>>
再次弹出)。所以我假设它是传递的空值。
仍然难倒。 :(
答案 0 :(得分:0)
可能不是你正在寻找的答案,特别是,但通常是因为“如果在['嘿PC']中的x”永远不是真的。返回数字(从而设置值)的唯一条件是if语句。所以,很有可能,if语句永远不会进入。