直接产生声音的Python库

时间:2019-06-16 14:27:31

标签: python python-3.x audio

我想用Python编写一个播放随机音乐的程序。在给定的时间内是否有可以直接播放给定音高或频率的声音的库?例如,play(440, 4)应该在4秒钟内弹奏音符A。

我找到了一些可以执行我说的内容的库,但是它们不能直接播放音乐:您必须创建一个.wav文件,然后播放该文件。如果找不到能满足我需要的库,我将创建一个文件,播放该文件,然后为每个音符将其删除,但我认为直接进行操作会更容易。

1 个答案:

答案 0 :(得分:1)


我终于找到了我问题的答案。

有一个名为winsoundhttps://docs.python.org/3/library/winsound.html)的模块,可以播放给定频率和持续时间的声音:winsound.Beep(frequency, duration)。但是问题在于它不是跨平台的,仅适用于Windows操作系统。

因此,我找到了另一个名为pyaudierehttps://pypi.org/project/pyaudiere/)的跨平台模块。它的工作原理与winsound有点不同。首先,您创建一个设备:d = audiere.open_device()。然后,您可以制作t = d.create_tone(440)的音调。要播放音调,请t.play()并停止t.stop()。如果您想在几秒钟内播放它,可以使用time模块。我仍在调查,但我认为它仅适用于Python2。这是我在stackoverflow上找到答案的地方:Python library for playing fixed-frequency sound