Python:与 winsound.Beep 最接近的 Linux 和 OSX 等价物是什么?

标签 python linux macos audio

如果希望在 Windows 上发出提示音,Python 2 显然提供了一个有用的功能:winsound.Beep() .这个函数的巧妙之处在于它接受参数来指定哔声的确切频率和持续时间。这正是我想要做的,除了我不使用 Windows。所以...

winsound.Beep() 的最接近等价物是什么?对于 LinuxOSX , 引入尽可能少的依赖项?

请注意,我希望能够直接对扬声器发出哔哔声,而不是播放声音文件。另外,我需要能够控制哔声的频率和持续时间,所以 curses.beep()print '\a'不会的。最后,我知道 PyGame提供了广泛的声音功能,但鉴于我不需要 PyGame 的任何其他功能,这看起来就像使用大锤来破解坚果(无论如何,我试图尽可能地消除依赖关系)。

最佳答案

winsound 仅适用于 Windows,除了打印“/a”之外,我找不到任何跨平台方式来执行此操作。但是,您不能使用此设置频率和持续时间。

但是,您可以尝试使用 os.system 命令对系统命令 beep 执行相同操作.这是一个片段,它以独立于平台的方式定义了函数 playsound

try:
    import winsound
except ImportError:
    import os
    def playsound(frequency,duration):
        #apt-get install beep
        os.system('beep -f %s -l %s' % (frequency,duration))
else:
    def playsound(frequency,duration):
        winsound.Beep(frequency,duration)

欲了解更多信息,请查看 this blog

编辑:您需要在 linux 上安装 beep 包才能运行 beep 命令。你可以通过给出命令来安装

sudo apt-get install beep

关于Python:与 winsound.Beep 最接近的 Linux 和 OSX 等价物是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12354586/

相关文章:

Python 套接字 : how to only receive one message at a time

python - Tensorflow:batch_size 取决于什么?

java - 如何忽略 Subversion 中的目录/文件?

java - 使用单一命令行 Java (Linux) 编译和构建

ios - 在 iOS 和 Mac OS X 之间进行双向通信的最简单方法是什么?

c++ - 在 Mac 上编译 C++ 代码时处理 “dyld: lazy symbol binding failed: Symbol not found” 错误

xcode - 如何从 macOS 应用程序包中排除标准但未使用的 libswift*.dylib 并减小包大小

python - 在 Python 中调整大图像的大小(大于可用 RAM)

node.js - 杀死所有子进程,但不杀死父进程

python - 破解这个嵌套列表列表?