用Python播放音频
如何从Python脚本播放音频(它可能就像1秒声音)?
如果它与平台无关,那将是最好的,但首先它需要在Mac上运行。
我知道我可以在Python中执行afplay file.mp3命令,但是可以在原始Python中执行吗? 如果它不依赖外部库我也会更好。
Josh Hunt asked 2019-08-05T23:42:00Z
22个解决方案
38 votes
你最好的选择可能是使用pygame / SDL。 它是一个外部库,但它跨平台提供了很好的支持。
pygame.mixer.init()
pygame.mixer.music.load("file.mp3")
pygame.mixer.music.play()
您可以在pygame.mixer.music文档中找到有关音频混音器支持的更多特定文档
TML answered 2019-08-05T23:42:49Z
19 votes
你可以在这里找到有关Python音频的信息:[http://wiki.python.org/moin/Audio/]
看起来它不能播放没有外部库的.mp3文件。 您可以将.mp3文件转换为.wav或其他格式,或使用PyMedia等库。
Jeremy Ruten answered 2019-08-05T23:42:18Z
15 votes
看看Simpleaudio,这是一个相对较新且轻量级的库,用于此目的:
> pip install simpleaudio
然后:
import simpleaudio as sa
wave_obj = sa.WaveObject.from_wave_file("path/to/file.wav")
play_obj = wave_obj.play()
play_obj.wait_done()
确保使用未压缩的16位PCM文件。
Erwin Mayer answered 2019-08-05T23:43:22Z
13 votes
在pydub中,我们最近选择使用ffmpeg工具套件中的ffplay(通过子进程),这些工具在内部使用SDL。
它适用于我们的目的 - 主要是让它更容易在交互模式下测试pydub代码的结果 - 但它有它的缺点,比如导致新程序出现在mac上的dock中。
我已经将上面的实现链接起来,但是简化版本如下:
import subprocess
def play(audio_file_path):
subprocess.call(["ffplay", "-nodisp", "-autoexit", audio_file_path])
-nodisp标志阻止ffplay显示新窗口,-autoexit标志导致ffplay退出并在音频文件播放完毕后返回状态代码。
编辑:pydub现在使用pyaudio进行播放,然后回到ffplay以避免我提到的缺点。 上面的链接也显示了实现。
Jiaaro answered 2019-08-05T23:44:16Z
11 votes
尝试playound,这是一个纯Python,跨平台,单一