逻辑问题:如何播放声音一次,但不能一次播放

时间:2019-04-28 22:02:29

标签: python playsound

我有一个逻辑问题,但尚未成功解决。我正在使用一个对象检测应用程序,我想向其中添加语音提示。如果我只使用playsound函数,当它在特定类别中时,它会不断重复语音提示。 我希望程序在特定类别(即persontvairplaneapple等)中仅播放一次声音。但是,当它重新进入该类别时,声音必须再次播放一次。

我尝试向其添加布尔值(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")

1 个答案:

答案 0 :(得分:2)

通常的方法是保留最后一个类别的变量,并且仅在类别与变量不同时才播放声音:

category = name[0][0]
if category != last_category:
    last_category = category
    playsound("sounds/" + category + ".wav")