воспроизводить звук, если объект обнаружен - PullRequest
0 голосов
/ 25 октября 2018

Я работаю над моделью обнаружения объектов с использованием Raspberry Pi.Я использовал API обнаружения объектов Google для обнаружения моделей. Мой вопрос заключается в том, как воспроизводить звук при обнаружении объекта определенного класса (скажем, человека (то есть «id»: 22)).

У меня естьпопробовал немного, и код, к которому я пришел, такой:

if 22 in classes:
    threading.Thread(play_sound()).start()
def play_sound():
    pygame.init()
    pygame.mixer.music.load("")
    pygame.mixer.music.play(1,0.0)
    pygame.time.wait(5000)
    pygame.mixer.stop()

В этом коде проблема, которую я получаю,

  1. Звук начинает воспроизводиться даже до того, как объект обнаруженЯ попробовал отладку, но не знаю почему.
  2. Я снова запускаю тот же поток
  3. Если я использую разные потоки, у pi заканчиваются ресурсы, и все выполнение останавливается

Есть ли способ заставить это работать?

Заранее спасибо

1 Ответ

0 голосов
/ 25 октября 2018

Не используйте темы (они вам не нужны), не используйте pygame.time.wait и не используйте pygame.mixer.music, если вы не хотите использовать их для фоновой музыки.

Используйте Sound объект (и, возможно, предоставите maxtime, если хотите, это play функция).

Так ваш код должен выглядетьбольше похоже на это:

pygame.init()
detected_sound = pygame.mixer.Sound('filename')

...
    if 22 in classes:
        # use loops=-1 if the sound's length is less than 5 seconds
        # so it's repeated until we hit the maxtime of 5000ms
        detected_sound.play(loops=-1, maxtime=5000)
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...