如果希望在Windows上发出哔哔声,Python 2显然提供了一个有用的功能:winsound.Beep()
。此功能的好处是,它采用指定蜂鸣声确切频率和持续时间的参数。这正是我想要做的,除了我不使用Windows。所以...winsound.Beep()
和Linux
最接近的OSX
等效项是什么,从而引入尽可能少的依赖项?
请注意,我希望能够直接对扬声器发出蜂鸣声,而不是播放声音文件。另外,我需要能够控制提示音的频率和持续时间,因此curses.beep()
和print '\a'
不会起作用。最后,我知道PyGame
提供了广泛的声音功能,但是鉴于我不需要PyGame的任何其他功能,因此好像使用大锤来破解螺母(无论如何,我正在尝试消除依赖性)越远越好)。
最佳答案
我在这里找到了潜在的解决方案:
http://bytes.com/topic/python/answers/25217-beeping-under-linux
它涉及直接写入/dev/audio。不知道它的便携性,甚至根本不工作-我不在Linux机器上的atm。
def beep(frequency, amplitude, duration):
sample = 8000
half_period = int(sample/frequency/2)
beep = chr(amplitude)*half_period+chr(0)*half_period
beep *= int(duration*frequency)
audio = file('/dev/audio', 'wb')
audio.write(beep)
audio.close()