代码完成时发出声音警报

mti*_*ger 122 python audio alarm

我的情况是我的代码需要很长时间才能运行,我不想一直盯着它,但想知道什么时候完成.

如何完成(Python)代码声音的"警报"?我正在考虑让它在到达代码末尾时播放.wav文件...

这甚至是一个可行的想法吗?如果是的话,我怎么能这样做?

Rya*_*axe 189

在Windows上

import winsound
duration = 1000  # milliseconds
freq = 440  # Hz
winsound.Beep(freq, duration)
Run Code Online (Sandbox Code Playgroud)

其中freq是以Hz为单位的频率,持续时间以毫秒为单位.

在Linux和Mac上

import os
duration = 1  # seconds
freq = 440  # Hz
os.system('play -nq -t alsa synth {} sine {}'.format(duration, freq))
Run Code Online (Sandbox Code Playgroud)

要使用此示例,您必须安装sox.

在Debian/Ubuntu/Linux Mint上,在终端中运行:

sudo apt install sox
Run Code Online (Sandbox Code Playgroud)

在Mac上,在终端中运行(使用macports):

sudo port install sox
Run Code Online (Sandbox Code Playgroud)

在Mac上的演讲

import os
os.system('say "your program has finished"')
Run Code Online (Sandbox Code Playgroud)

在Linux上发表演讲

import os
os.system('spd-say "your program has finished"')
Run Code Online (Sandbox Code Playgroud)

您需要speech-dispatcher在Ubuntu(或其他发行版上的相应包)中安装该包:

sudo apt install speech-dispatcher
Run Code Online (Sandbox Code Playgroud)

  • 直到我可以使用 os 包让我的计算机说话!好棒!! (3认同)
  • 我的说没有找到 say ,即使我已经安装了 sox 和 play 作品。但我找到了替代方案。import os os.system('espeak "你的程序已经完成了"') (2认同)

小智 27

 print('\007')
Run Code Online (Sandbox Code Playgroud)

播放铃声

  • 这似乎不适用于 ipython/Jupyter (10认同)
  • 不适用于 VS code 或 win10 上的 Jupyter 笔记本 (2认同)

Sau*_*tro 24

这个似乎适用于Windows和Linux*(来自这个问题):

def beep():
    print "\a"
beep()
Run Code Online (Sandbox Code Playgroud)

在Windows中,可以放在最后:

import winsound
winsound.Beep(500,1000)

where 500 is the frequency in Herz
      1000 is the duration in miliseconds
Run Code Online (Sandbox Code Playgroud)

*:要在Linux上工作,您可能需要执行以下操作(来自QO的评论):

  • 在终端中输入'cd /etc/modprobe.d'然后'gksudo gedit blacklist.conf'
  • 评论说'blacklist pcspkr'的行,然后重新启动
  • 还要检查终端首选项是否已选中"终端铃声".


Ish*_*are 17

可以使用ubuntu语音调度程序:

import subprocess
subprocess.call(['speech-dispatcher'])        #start speech dispatcher
subprocess.call(['spd-say', '"your process has finished"'])
Run Code Online (Sandbox Code Playgroud)


rta*_*aft 9

为什么要使用python?您可能忘记删除它并将其签入存储库。只需使用 && 和另一个命令运行你的 python 命令来运行警报。

python myscript.py && 
    notify-send 'Alert' 'Your task is complete' && 
    paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
Run Code Online (Sandbox Code Playgroud)

或将函数放入您的 .bashrc。我在这里使用 apython 但你可以覆盖 'python'

function apython() {
    /usr/bin/python $*
    notify-send 'Alert' "python $* is complete"
    paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
Run Code Online (Sandbox Code Playgroud)


zek*_*kel 8

在OS X Yosemite(10.10.1)上,Kuchi的回答对我没有用.我确实找到了afplay命令(这里),你可以从Python调用它.无论终端音响铃是否启用且没有第三方库,这都有效.

import os
os.system('afplay /System/Library/Sounds/Sosumi.aiff')
Run Code Online (Sandbox Code Playgroud)


pou*_*er7 7

我假设您想要标准的系统铃声,并且不想关心频率和持续时间等,您只想要标准的Windows铃声。

import winsound
winsound.MessageBeep()
Run Code Online (Sandbox Code Playgroud)


Kuc*_*chi 6

请参阅:Python Sound("Bell")
当我想要做同样的事情时,这帮助了我.
所有学分都转到gbc

引用:

你有没有尝试过 :

import sys
sys.stdout.write('\a')
sys.stdout.flush()
Run Code Online (Sandbox Code Playgroud)

这适用于我在Mac OS 10.5上

实际上,我认为您的原始尝试也可以进行一些修改:

print('\a')
Run Code Online (Sandbox Code Playgroud)

(你只需要围绕字符序列的单引号).


Sat*_*dav 5

可以通过以下代码来完成:

import time
time.sleep(10)   #Set the time
for x in range(60):  
    time.sleep(1)
    print('\a')
Run Code Online (Sandbox Code Playgroud)