Alarm dźwiękowy po zakończeniu kodu

143

Jestem w sytuacji, w której mój kod trwa bardzo długo i nie chcę się w niego gapić, ale chcę wiedzieć, kiedy jest gotowy.

Jak mogę sprawić, aby kod (Python) brzmiał jak „alarm” po zakończeniu? Zastanawiałem się, czy nie odtworzyć pliku .wav, gdy osiągnie koniec kodu ...

Czy to w ogóle możliwy pomysł? Jeśli tak, jak mogłem to zrobić?

mtigger
źródło
Jakiego systemu operacyjnego używasz?
Thomas Fenzl
Ubuntu 12.04, a kod jest w języku Python.
mtigger
4
Chciałbym wiedzieć, jak to zrobić również w systemie Windows.
Jared Nielsen
1
Możliwy duplikat dźwięku Play w Pythonie Ubuntu bash: askubuntu.com/questions/277215/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Odpowiedzi:

235

W systemie Windows

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

Gdzie freq to częstotliwość w Hz, a czas trwania w milisekundach.

W systemie Linux i Mac

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

Aby skorzystać z tego przykładu, musisz zainstalować sox.

W systemie Debian / Ubuntu / Linux Mint uruchom to w swoim terminalu:

sudo apt install sox

Na Macu uruchom to w swoim terminalu (używając macports):

sudo port install sox

Mowa na Macu

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

Mowa o Linuksie

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

Musisz zainstalować speech-dispatcherpakiet w Ubuntu (lub odpowiedni pakiet w innych dystrybucjach):

sudo apt install speech-dispatcher
Ryan Saxe
źródło
1
racja Musisz go pobrać, dam ci link, pozwól mi go znaleźć ... Właśnie opublikowałem kolejny dla Maców, który faktycznie z tobą porozmawia, więc może ci powiedzieć, kiedy to się skończy
Ryan Saxe
dzięki! czy wiesz, czy linux ma taki, który również z tobą porozmawia?
mtigger
2
mój mówi, że powiedz nie został znaleziony, mimo że zainstalowałem sox i gra działa. ale znalazłem alternatywę. import os os.system ('espeak "twój program się zakończył"')
mtigger
winsound nie został znaleziony. Czy nie jest dostępny dla OS X?
Charlie Parker,
1
@CharlieParker, jeśli spojrzysz na pełną odpowiedź, pierwsza opcja jest tylko dla użytkowników systemu Windows. Inni podają, jak to zrobić w innych środowiskach, w tym OSX
Ryan Saxe,
30
 print('\007')

odtwarza dźwięk dzwonka

Josh Allemon
źródło
3
Wydaje się, że to nie działa przez ipython / Jupyter
Kyle Barron
26

Ten wydaje się działać zarówno w systemie Windows, jak i Linux * ( z tego pytania ):

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

beep()

W systemie Windows można na koniec umieścić:

import winsound
winsound.Beep(500, 1000)

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

Aby pracować w systemie Linux, może być konieczne wykonanie następujących czynności (z komentarza QO):

  • w terminalu wpisz „cd /etc/modprobe.d”, a następnie „gksudo gedit blacklist.conf”
  • skomentuj wiersz z napisem „czarna lista pcspkr”, a następnie uruchom ponownie
  • sprawdź również, czy w preferencjach terminala jest zaznaczona opcja „Dzwonek terminala”.
Saullo GP Castro
źródło
1
dzięki! aby dodać, może być konieczne włączenie dźwięku dzwonka terminala w gnome ubuntu, aby działał.
mtigger
@mtigger Czy mógłbyś wyjaśnić, jak to zrobić, abyśmy mogli zaktualizować odpowiedź ... (lub możesz zaktualizować)
Saullo GP Castro
1
w terminalu wpisz „cd /etc/modprobe.d”, a następnie „gksudo gedit blacklist.conf”. odkomentuj wiersz z napisem „czarna lista pcspkr”, a następnie uruchom ponownie. sprawdź również, czy w preferencjach terminala jest zaznaczona opcja „Dzwonek terminala”.
mtigger
jak sprawdzić, „czy w preferencjach terminala jest zaznaczona opcja„ Dzwonek terminala ”w systemie Ubuntu 13?
user2384994
"\ a" działał dla mnie w podsystemie Ubuntu dla Windows, dzięki !!
Ryan
17

Dyspozytor mowy Ubuntu może być używany:

import subprocess
subprocess.call(['speech-dispatcher'])        #start speech dispatcher
subprocess.call(['spd-say', '"your process has finished"'])
Ishan Khare
źródło
ale zaczyna grać po zakończeniu procesu.
cengizkrbck
takie jest zamierzone zachowanie, chcesz dźwięk po zakończeniu procesu
Ishan Khare,
możesz dodać -wargument czekać, podczas gdy spd-say kończy frazę
ruX
8

Zakładam, że chcesz standardowego dzwonka systemowego i nie chcesz zajmować się częstotliwościami, czasem trwania itp., Po prostu chcesz standardowego dzwonka systemu Windows.

import winsound
winsound.MessageBeep()
poulter7
źródło
8

Odpowiedź Kuchi nie działa dla mnie na OS X Yosemite (10.10.1). Znalazłem afplaypolecenie ( tutaj ), które możesz po prostu wywołać z Pythona. Działa to niezależnie od tego, czy dzwonek dźwiękowy terminala jest włączony i bez biblioteki innej firmy.

import os
os.system('afplay /System/Library/Sounds/Sosumi.aiff')
zekel
źródło
6

Zobacz: Dźwięk w Pythonie („dzwonek”)
Pomogło mi to, gdy chciałem zrobić to samo.
Wszystkie kredyty trafiają do GBC

Zacytować:

Czy próbowałeś :

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

To działa dla mnie w systemie Mac OS 10.5

Właściwie myślę, że twoja oryginalna próba działa również z małą modyfikacją:

print('\a')

(Potrzebujesz tylko pojedynczych cudzysłowów wokół sekwencji znaków).

Kuchi
źródło
6

Po co w ogóle używać Pythona? Możesz zapomnieć o jego usunięciu i wpisaniu do repozytorium. Po prostu uruchom polecenie Pythona za pomocą && i innego polecenia, aby uruchomić alert.

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

lub upuść funkcję do swojego .bashrc. Używam tutaj apythona, ale możesz zastąpić „python”

function apython() {
    /usr/bin/python $*
    notify-send 'Alert' "python $* is complete"
    paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
rtaft
źródło
świetnie, to działa. również zos.system("paplay sound-alarm.oga")
fsevenm
4

Można to zrobić za pomocą kodu w następujący sposób:

import time
time.sleep(10)   #Set the time
for x in range(60):  
    time.sleep(1)
    print('\a')
Satyendra Yadav
źródło
2
import subprocess

subprocess.call(['D:\greensoft\TTPlayer\TTPlayer.exe', "E:\stridevampaclip.mp3"])
Du Peng
źródło
2
Powinieneś dodać kilka komentarzy lub innych wyjaśnień do tego kodu, aby wyjaśnić, jak to działa i dlaczego odpowiada na pytanie.
skrrgwasme