Kod bittiğinde sesli alarm


143

Kodumun çalıştırılması son derece uzun sürdüğü ve her zaman ona bakmak istemiyorum ama ne zaman yapıldığını bilmek istiyorum.

Tamamlandığında (Python) kod sesini nasıl "alarm" haline getirebilirim? Kodun sonuna ulaştığında bir .wav dosyası oynatmayı düşünüyordum ...

Bu bile uygulanabilir bir fikir mi? Eğer öyleyse, bunu nasıl yapabilirim?


Hangi işletim sistemini kullanıyorsunuz?
Thomas Fenzl

Ubuntu 12.04 ve kod python'da.
mtigger

4
Bunu Windows'ta da nasıl yapacağımı bilmek isterim.
Jared Nielsen


Yanıtlar:


235

Windows'ta

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

Frek'in Hz cinsinden frekans ve süre milisaniye cinsindendir.

Linux ve Mac'te

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

Bu örneği kullanabilmek için yüklemeniz gerekir sox.

Debian / Ubuntu / Linux Mint üzerinde bunu terminalinizde çalıştırın:

sudo apt install sox

Mac'te bunu terminalinizde çalıştırın (macports kullanarak):

sudo port install sox

Mac'te konuşma

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

Linux'ta Konuşma

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

speech-dispatcherPaketi Ubuntu'ya (veya diğer dağıtımlara karşılık gelen paketi) kurmanız gerekir :

sudo apt install speech-dispatcher

1
indirmeniz gerekiyor, size bağlantıyı vereceğim, bulmama izin verin ... Aslında sizinle konuşacak olan mac'lar için bir tane daha yayınladım, böylece bittiğinde size söyleyebilir
Ryan Saxe

Teşekkürler! linux'un sizinle konuşacak bir tane olup olmadığını biliyor musun?
mtigger

2
benim sox yükledim ve oyun çalışır rağmen söylemek demek olmadığını söylüyor. ama bir alternatif buldum. import os os.system ('espeak "programınız bitti"')
mtigger

winsound bulunamadı. OS X için mevcut değil mi?
Charlie Parker

1
@CharlieParker, tam cevaba bakarsanız, ilk seçenek sadece Windows kullanıcıları içindir. Diğerleri
Ryan Saxe


26

Bu hem Windows hem de Linux * üzerinde çalışıyor gibi görünüyor ( bu sorudan ):

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

beep()

Windows'da, sonuna koyabilirsiniz:

import winsound
winsound.Beep(500, 1000)

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

Linux üzerinde çalışmak için aşağıdakileri yapmanız gerekebilir (QO'nun yorumundan):

  • bir terminale 'cd /etc/modprobe.d' yazıp 'gksudo gedit blacklist.conf' yazın
  • 'kara liste pcspkr' yazan satırı yorumlayın, sonra yeniden başlatın
  • ayrıca terminal tercihlerinde 'Terminal Bell'in işaretli olup olmadığını kontrol edin.

1
Teşekkürler! Sadece eklemek için, çalışması için ubuntu gnome terminal zili sesini açmanız gerekebilir.
mtigger

@mtigger Bunu nasıl yapacağınızı açıklayabilir misiniz, böylece cevabı güncelleyebiliriz ... (ya da güncelleyebilirsiniz)
Saullo GP Castro

1
bir terminale 'cd /etc/modprobe.d' yazıp 'gksudo gedit blacklist.conf' yazın. 'kara liste pcspkr' yazan satırı uncomment, sonra yeniden başlatın. ayrıca terminal tercihlerinde 'Terminal Bell'in işaretli olup olmadığını kontrol edin.
mtigger

ubuntu 13'te "terminal tercihlerinin" Terminal Bell "i kontrol ettiğini" nasıl kontrol edebilirim?
user2384994

"\ a" benim için Windows için Ubuntu alt sisteminde çalıştı, teşekkürler !!
Ryan

17

Ubuntu konuşma dağıtıcısı kullanılabilir:

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

ancak işlem bittiğinde oynamaya başlar.
cengizkrbck

amaçlanan davranış budur, süreç bittiğinde sesi istersiniz
Ishan Khare

-wspd-say ifadeyi bitirirken beklemek için argüman ekleyebilirsiniz
ruX

8

Standart sistem çanını istediğinizi ve frekanslar ve süreler vb.

import winsound
winsound.MessageBeep()

8

Kuchi'nin cevabı OS X Yosemite'de (10.10.1) benim için işe yaramadı. Python'dan arayabileceğiniz afplaykomutu ( burada ) buldum . Bu, Terminal sesli zilinin etkin olup olmadığına bakılmaksızın ve üçüncü taraf kitaplığı olmadan çalışır.

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

6

Bakınız: Python Sound ("Bell")
Aynı şeyi yapmak istediğimde bana yardımcı oldu.
Tüm krediler gbc'ye gider

Alıntı:

Denedin mi :

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

Mac OS 10.5'te bu benim için çalışıyor

Aslında, orijinal girişiminizin küçük bir değişiklikle de çalıştığını düşünüyorum:

print('\a')

(Sadece karakter dizisi etrafında tek tırnak gerekir).


6

Neden python kullanıyorsunuz? Kaldırmayı ve bir depoda kontrol etmeyi unutabilirsiniz. Python komutunuzu && ve başka bir komutla uyarı yapmak için çalıştırın.

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

veya bir işlevi .bashrc'nize bırakın. Burada apython kullanıyorum ama 'python'u geçersiz kılabilirsiniz

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

harika, işe yarıyor. ayrıca ileos.system("paplay sound-alarm.oga")
fsevenm

4

Aşağıdaki gibi kod ile yapılabilir:

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

2
import subprocess

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

2
Nasıl çalıştığını ve soruyu neden yanıtladığını açıklamak için bu kod için bazı yorumlar veya başka açıklamalar eklemelisiniz.
skrrgwasme
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.