尝试将 playsound 用作菜鸟

Trying to use playsound as a noob

只是需要一些帮助来解决我在播放声音模块时遇到的问题。我通过这个命令安装它: pip install playsound 有人告诉我它根本没有依赖关系,但我无法在我的代码中使用它:

import numpy as np
import cv2
import random
from playsound import playsound
playsound('/home/pi/Documents/Rover/Sounds/StillThere.wav')

最终,我的目标只是能够将声音导入代码,让它在打印语句后播放一次,然后停止。我相信您可以看到,我试图通过安装 vext 来解决问题,但这只会增加更多问题。请帮我弄清楚我做错了什么,我该如何解决它,如果有另一个我可以安装的模块,它对 n00b 来说更容易,并且更能做我想做的事情,我在这里读到播放 - sound 播放声音不停止播放声音:

"

我还读到其他人遇到了这个问题,但一直在使用 anaconda/miniconda3,不确定那是什么,但似乎对解决方案很重要,因为我没有使用它,我想我会 post.我认为这与在 opencv 工作区 (workon cv) 中安装 playsound/gi 有关,请 post 您以 ELI5 类型的方式回答,以便我可以理解。谢谢!

错误:

This is the error I get:

```Traceback (most recent call last):
  File "Soundtest.py", line 13, in <module>
    playsound('/home/pi/Documents/Rover/Sounds/StillThere.wav')
  File "/home/pi/.virtualenvs/cv/lib/python3.7/site-packages/playsound.py", line 91, in _playsoundNix
    import gi
  File "/home/pi/.virtualenvs/cv/lib/python3.7/site-packages/vext/gatekeeper/__init__.py", line 204, in load_module
    raise ImportError("No module named %s" % modulename)
ImportError: No module named gi```

您可以使用其他模块(声音设备和声音文件)。您应该在您的 cmd 中 'pip install sounddevice' 和 'pip install soundfile'。将 StillThere.wav 文件放入 Python 文件夹。如果你想感谢我,请将此 post 标记为答案。

import sounddevice as sd
import soundfile as sf
data, fs = sf.read('StillThere.wav', dtype='float32')
# time (in seconds) of start an audio file
start = 0 
# time (in seconds) of end an audio file
end = 10000 
sd.play(data[fs * start : fs * end, :], fs)
status = sd.wait()

您可以使用 Pyaudio 模块。您应该在 cmd 中 'pip install pyaudio' 和 'pip install wave'。另外,您应该将“.py”文件和音频文件放在同一个文件夹中。

import pyaudio
import wave
filename = 'StillThere.wav'
chunk = 1024
wf = wave.open(filename, 'rb')
p = pyaudio.PyAudio()
stream = p.open(format = p.get_format_from_width(wf.getsampwidth()),
    channels = wf.getnchannels(),
    rate = wf.getframerate(),
    output = True)
data = wf.readframes(chunk)
while data != '':
    stream.write(data)
    data = wf.readframes(chunk)
stream.close()
p.terminate()