python - 如果检测到物体则播放声音

标签 python raspberry-pi pygame

我正在使用树莓派开发对象检测模型。我使用 Google 的对象检测 API 来检测模型,我的问题是当检测到特定类别的对象(例如人类(即“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 就会耗尽资源,整个执行就会停止

有什么办法可以让它发挥作用吗?

提前致谢

最佳答案

不要使用线程(你不需要它们),不要使用pygame.time.wait,也不要使用pygame.mixer.music 如果您不想将其用作背景音乐。

使用 Sound object (如果您想要它的 play 函数,可以提供一个 maxtime )。

所以你的代码应该看起来更像这样:

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)
...

关于python - 如果检测到物体则播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52988902/

相关文章:

python - 在 Tornado 网络服务器中运行 Python 脚本

python - 缩放 Sprite 大小

python - 使用 time.time() 和 Keydown 测量时间

python - 为什么我无法导入我的 pip 列表中的库?

python - PyInstaller 在导入 Flask.ext 时遇到问题

python - 如何等待按键?

python - 模糊的 Pygame 矩形错误

python - 变量不会分配给 Python 中的输入

python - 无法连接到 mqtt 代理

windows - 无法在 Raspberry Pi 上调整窗口大小或移动窗口