我有一个逻辑问题,但尚未成功解决。我正在使用一个对象检测应用程序,我想向其中添加语音提示。如果我只使用playsound
函数,当它在特定类别中时,它会不断重复语音提示。
我希望程序在特定类别(即person
,tv
,airplane
,apple
等)中仅播放一次声音。但是,当它重新进入该类别时,声音必须再次播放一次。
我尝试向其添加布尔值(play_person_sound
)。它只播放一次,但问题在于,重新输入该类别后它再也不会播放。因此,例如:如果程序首先检测到某个人,则播放'person.wav'
,如果随后检测到电视,则播放'tv.wav',如果该程序在电视之后再次检测到人,则不播放'person.wav'
不再存在,因为play_person_sound
设置为False
。我尝试添加另一个开关,该开关适用于一个类别:person
,但是由于有80个类别,因此感觉无法撤消。
有人知道做这项工作的聪明方法吗?
下面是一个代码段:
play_person_sound = True
switch = 1
...
if name[0][0] == 'person':
if play_person_sound:
play_person_sound = False
playsound("sounds/person.wav")
if switch == 0:
switch = 1
playsound("sounds/person.wav")
elif name[0][0] == 'tv':
switch = 0
playsound("sounds/tv.wav")
elif name[0][0] == 'airplane':
playsound("sounds/airplane.wav")
elif name[0][0] == 'apple':
playsound("sounds/apple.wav")
elif name[0][0] == 'backpack':
playsound("sounds/backpack.wav")
答案 0 :(得分:2)
通常的方法是保留最后一个类别的变量,并且仅在类别与变量不同时才播放声音:
category = name[0][0]
if category != last_category:
last_category = category
playsound("sounds/" + category + ".wav")