【问题标题】:Sound alarm when code finishes代码完成时发出声音警报
【发布时间】:2013-05-10 11:56:08
【问题描述】:

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

我怎样才能让(Python)代码在完成后听起来有点“警报”?我正在考虑让它在到达代码末尾时播放 .wav 文件......

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

【问题讨论】:

标签: python alarm audio


【解决方案1】:

在 Windows 上

import winsound
duration = 1000  # milliseconds
freq = 440  # Hz
winsound.Beep(freq, duration)

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

在 Linux 和 Mac 上

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

为了使用这个例子,你必须安装sox

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

sudo apt install sox

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

sudo port install sox

Mac 上的演讲

import os
os.system('say "your program has finished"')

Linux 上的演讲

import os
os.system('spd-say "your program has finished"')

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

sudo apt install speech-dispatcher

【讨论】:

  • 对 你必须下载它,我会给你链接,让我找到它...我刚刚发布了另一个 Mac 版,它会真正跟你说话,所以它可以告诉你什么时候完成了
  • 谢谢!您是否碰巧知道 linux 是否也有一个会与您对话的软件?
  • 我的说没有找到,即使我已经安装了 sox 和 play 作品。但我找到了另一种选择。 import os os.system('espeak "你的程序已经完成"')
  • @CharlieParker,如果您查看完整答案,第一个选项仅适用于 Windows 用户。其他人说明如何在其他环境中使用,包括 OSX
  • 直到我可以使用 os 包让我的电脑说话!太棒了!!
【解决方案2】:
print('\007')

在 Linux 上播放铃声。播放error sound on Windows 10

【讨论】:

  • 这似乎不适用于 ipython/Jupyter
  • 不适用于 VS 代码,也不适用于 win10 上的 Jupyter 笔记本
  • 不能在我的电脑上运行(Linux Mint 20)!
【解决方案3】:

这个似乎适用于 Windows 和 Linux* (from this question):

def beep():
    print("\a")

beep()

在Windows中,可以放在最后:

import winsound
winsound.Beep(500, 1000)

where 500 is the frequency in Herz
      1000 is the duration in miliseconds

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

  • 在终端中,输入“cd /etc/modprobe.d”,然后输入“gksudo gedit blacklist.conf”
  • 评论说“黑名单 pcspkr”的行,然后重新启动
  • 还要检查终端首选项是否选中了“终端铃”。

【讨论】:

  • 谢谢!只是补充一下,可能需要在 ubuntu gnome 中打开终端铃声才能正常工作。
  • @mtigger 你能否解释一下如何做到这一点,以便我们可以更新答案......(或者你可以更新)
  • 在终端中输入“cd /etc/modprobe.d”,然后输入“gksudo gedit blacklist.conf”。取消注释“blacklist pcspkr”的行,然后重新启动。还要检查终端首选项是否选中了“终端铃”。
  • 如何在 ubuntu 13 中检查“终端首选项是否勾选了‘终端铃’”?
  • "\a" 在 Windows 的 Ubuntu 子系统上为我工作,谢谢!!
【解决方案4】:

可以使用ubuntu语音调度器:

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

【讨论】:

  • 但是,进程完成后开始播放。
  • 这就是预期的行为,您希望进程完成时的声音
  • 你可以添加 -w 参数等待 spd-say 完成短语
【解决方案5】:

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

import winsound
winsound.MessageBeep()

【讨论】:

    【解决方案6】:

    Kuchi's answer 在 OS X Yosemite (10.10.1) 上对我不起作用。我确实找到了 afplay 命令 (here),您可以从 Python 调用它。无论是否启用了终端铃声并且没有第三方库,这都有效。

    import os
    os.system('afplay /System/Library/Sounds/Sosumi.aiff')
    

    【讨论】:

      【解决方案7】:

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

      python myscript.py && 
          notify-send 'Alert' 'Your task is complete' && 
          paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
      

      或者将一个函数放到你的 .bashrc 中。我在这里使用 apython 但你可以覆盖 'python'

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

      【讨论】:

      • 很好,它有效。还有os.system("paplay sound-alarm.oga")
      【解决方案8】:

      见:Python Sound ("Bell")
      当我想做同样的事情时,这对我有帮助。
      所有学分转到gbc

      引用:

      你试过了吗:

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

      这适用于我在 Mac OS 10.5 上

      实际上,我认为您最初的尝试稍作修改也可以:

      print('\a')
      

      (您只需要在字符序列周围加上单引号)。

      【讨论】:

        【解决方案9】:

        可以通过如下代码实现:

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

        【讨论】:

          【解决方案10】:

          你的问题多一点。

          我使用gTTS 包从文本中生成音频,然后使用Playsound 播放该音频,当时我正在学习网页抓取并创建了一个 coursera 下载器(仅限免费课程)。

          text2speech = gTTS("Your course " + course_name +
                                          " is downloaded to " + downloads + ". Check it fast.")
          text2speech.save("temp.mp3")
          winsound.Beep(2500, 1000)
          playsound("temp.mp3")
          

          【讨论】:

            【解决方案11】:
            import subprocess
            
            subprocess.call(['D:\greensoft\TTPlayer\TTPlayer.exe', "E:\stridevampaclip.mp3"])
            

            【讨论】:

            • 您应该为此代码添加一些 cmets 或其他解释,以解释其工作原理以及回答问题的原因。
            【解决方案12】:

            我创建了一个 python 模块,在代码执行后提醒开发人员使用 Telegram 应用程序。这可能比发出警报声更有帮助。

            Pypi 链接: https://pypi.org/project/devreminder/

            Github 链接: https://github.com/cagataygulten/devreminder

            例子:

            In [1]>>
                from devreminder import DevReminder
                import time
            
            In [2]>>
                remind = DevReminder(1932126911,False,0)
            
            In [3]>>
                remind.me("Example")
                time.sleep(6)
            

            输出:

            请按照 README 文件了解更多信息。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2016-09-27
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-08-10
              相关资源
              最近更新 更多