コード終了時にアラームを鳴らす


143

コードの実行に非常に長い時間がかかる状況にあり、常にそれを見つめたくはありませんが、いつ実行されたかを知りたいのです。

(Python)コードの音を「アラーム」にするにはどうすればよいですか?コードの最後に達したときに.wavファイルを再生するように考えていました...

これは実現可能なアイデアですか?もしそうなら、どうすればそれができますか?


どのオペレーティングシステムを使用していますか?
Thomas Fenzl 2013年

Ubuntu 12.04、コードはpythonです。
mtigger 2013年

4
Windowsでこれを行う方法についても知りたいです。
Jared Nielsen 2013年


回答:


235

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"')

speech-dispatcherUbuntu(または他のディストリビューションでは対応するパッケージ)にパッケージをインストールする必要があります。

sudo apt install speech-dispatcher

1
右あなたはそれをダウンロードする必要があります、私はあなたにリンクを与えます、それを見つけましょう...私は実際にあなたに話しかけるmacsのためにもう1つ投稿したので、それはそれが完了するとあなたに知らせることができます
Ryan Saxe

ありがとう!linuxにもあなたに話しかけるものがあるかどうか、たまたま知っていますか?
mtigger 2013年

2
私は、ソックスをインストールして作品をプレイしているにもかかわらず、言うことが見つからないと言っています。しかし、私は代替案を見つけました。import os os.system( 'espeak "your program has finished"')
mtigger

winsoundが見つかりません。OS Xでは利用できませんか?
チャーリーパーカー

1
@CharlieParker、完全な答えを見ると、最初のオプションはWindowsユーザー専用です。他の人はOSXを含む他の環境での方法を述べています
Ryan Saxe


26

これはWindowsとLinux *の両方で動作するようです(この質問から):

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」という行をコメントにして、再起動します
  • 端末設定で「端末ベル」がチェックされていることも確認してください。

1
ありがとう!追加するだけで、ubuntu gnomeでターミナルベルの音をオンにして機能させる必要がある場合があります。
mtigger 2013年

@mtigger答えを更新できるように、その方法を説明していただけますか(または更新できます)
Saullo GP Castro

1
ターミナルで「cd /etc/modprobe.d」、「gksudo gedit blacklist.conf」の順に入力します。「ブラックリストpcspkr」を示す行のコメントを外してから、再起動します。端末設定で「端末ベル」がオンになっていることも確認してください。
mtigger 2013年

ubuntu 13で「ターミナル設定で「ターミナルベル」がチェックされていること」を確認する方法
user2384994 2013

「\ a」はWindowsのUbuntuサブシステムで機能しました。
ライアン

17

ubuntu音声ディスパッチャを使用できます。

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

しかし、プロセスが終了したときに再生を開始します。
cengizkrbck 2015年

それが意図された動作です。プロセスが終了したときにサウンドが必要です
Ishan Khare

-wspd-sayがフレーズを終了するまで待機する引数を追加できます
ruX

8

標準のシステムベルが必要で、周波数や継続時間などを気にしたくない場合は、標準のWindowsベルが必要です。

import winsound
winsound.MessageBeep()

8

OS X Yosemite(10.10.1)では、Kuchiの答えはうまくいきませんでした。afplayコマンド(ここ)は見つかりました。このコマンドはPythonから呼び出すことができます。これは、端末のベル音が有効かどうかに関係なく、サードパーティのライブラリがなくても機能します。

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

6

参照:Pythonサウンド( "ベル")
これは、同じことをしたいときに役に立ちました。
すべてのクレジットはGBCに送らます

見積もり:

やってみました :

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

Mac OS 10.5の場合はこれでうまくいきます

実際、私はあなたの最初の試みは少しの修正でもうまくいくと思います:

print('\a')

(文字シーケンスを囲む単一引用符が必要です)。


6

なぜ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")
fsevenm


2
import subprocess

subprocess.call(['D:\greensoft\TTPlayer\TTPlayer.exe', "E:\stridevampaclip.mp3"])

2
このコードについて、コメントやその他の説明を追加して、どのように機能し、なぜ質問に答えるのかを説明する必要があります。
skrrgwasme 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.