Логическая проблема: как воспроизвести звук один раз, а не только один раз - PullRequest
1 голос
/ 29 апреля 2019

У меня есть логическая проблема, которую мне пока не удалось решить.Я работаю с приложением обнаружения объектов и хочу добавить к нему голосовые подсказки.Если я просто использую функцию playsound, она продолжает повторять голосовую подсказку снова и снова, когда она находится в определенной категории.Я хочу, чтобы моя программа воспроизводила звук только один раз, когда он находится в определенной категории (например: person, tv, airplane, apple и т. Д.).Но когда он снова входит в эту категорию, звук должен проигрываться снова один раз.

Я попытался добавить к нему логическое значение (play_person_sound).Он воспроизводится только один раз, но проблема в том, что он никогда не воспроизводится снова, когда снова входит в эту категорию.Так, например: если программа сначала обнаруживает человека, она воспроизводит 'person.wav', а затем обнаруживает телевизор, воспроизводит «tv.wav», если она обнаруживает человека после ТВ снова, она не воспроизводит * 1010.* больше, потому что 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 Ответ

2 голосов
/ 29 апреля 2019

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

category = name[0][0]
if category != last_category:
    last_category = category
    playsound("sounds/" + category + ".wav")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...