Логическая задача: Как воспроизвести звук один раз, а не ТОЛЬКО один раз

У меня есть логическая проблема, которую мне пока не удалось решить. Я работаю с приложением для обнаружения объектов и хочу добавить к нему голосовые подсказки. Если я просто использую функцию 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")

person Bente    schedule 28.04.2019    source источник


Ответы (1)


Обычный подход состоит в том, чтобы сохранить переменную с последней категорией и воспроизводить звук только тогда, когда категория отличается от нее:

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