Python声音(“贝尔”)

问题描述:

我想通过发出嘟嘟声来让Python程序在完成任务时发出警报。目前,我使用import os,然后使用命令行语音程序说“过程完成”。我宁愿它是一个简单的“钟”。Python声音(“贝尔”)

我知道有一个函数可以在可可应用程序NSBeep中使用,但我认为这与此无关。

我也试过print(\a)但是没有奏效。

我使用的是苹果机,如果你不能通过我的可可评论告诉,那可能会有所帮助。

谢谢!

+6

`进口OS ; os.system('say“Beer time。'');打印('\ a \ a \ a')` – 2015-08-27 22:41:47

你试过:

import sys 
sys.stdout.write('\a') 
sys.stdout.flush() 

那我在这里10.5

其实在Mac OS,我觉得你原来的尝试的作品还带有少许的修改:

print('\a') 

(你只需要在字符序列周围使用单引号)。

+4

我在Ubuntu上,它不适合我。任何想法? – kecske 2011-11-26 23:39:33

我不得不在我的活动终端配置文件iTerm中关闭“沉默终端钟”选项print('\a')才能正常工作。它在终端默认情况下工作正常。

您也可以使用Mac模块Carbon.Snd播放系统提示音:

>>> import Carbon.Snd 
>>> Carbon.Snd.SysBeep(1) 
>>> 

的碳模块没有任何文件,所以我只好用help(Carbon.Snd),看看哪些功能可用。它似乎是Carbon上的直接接口,因此Apple Developer Connection上的文档可能会有所帮助。

如果你有PyObjC(Python的 - Objective-C的桥)安装或OS上运行X 10.5的系统蟒蛇(其中附带PyObjC),你可以做

from AppKit import NSBeep 
NSBeep() 

播放系统警报。

我尝试了pygame模块的混音器,它工作正常。首先安装模块:

$ sudo apt-get install python-pygame 

然后在程序中这样写:

from pygame import mixer 
mixer.init() #you must initialize the mixer 
alert=mixer.Sound('bell.wav') 
alert.play() 

有了pygame中你有很多的自定义选项,您可以另外进行实验。

建立在Barry Wark的答案... NSBeep()从AppKit工作正常,但也使任务栏中的终端/应用图标跳转。 一些额外的线条与NSSound()避免了,并给出使用另一种声音的机会:

from AppKit import NSSound 
#prepare sound: 
sound = NSSound.alloc() 
sound.initWithContentsOfFile_byReference_('/System/Library/Sounds/Ping.aiff', True) 
#rewind and play whenever you need it: 
sound.stop() #rewind 
sound.play() 

标准的声音文件可以通过命令行locate /System/Library/Sounds/*.aiff找到 通过NSBeep()使用的文件似乎是'/System/Library/Sounds/Funk.aiff'