Bunyikan alarm saat kode selesai

156

Saya berada dalam situasi di mana kode saya membutuhkan waktu sangat lama untuk dijalankan dan saya tidak ingin melihatnya sepanjang waktu tetapi ingin tahu kapan itu selesai.

Bagaimana saya dapat membuat semacam kode (Python) berbunyi "alarm" setelah selesai? Saya sedang mempertimbangkan untuk membuatnya memainkan file .wav ketika mencapai akhir kode ...

Apakah ini ide yang layak? Jika ya, bagaimana saya bisa melakukannya?

mtigger
sumber
sistem operasi apa yang Anda gunakan?
Thomas Fenzl
Ubuntu 12.04, dan kodenya ada di python.
mtigger
4
Saya juga tertarik untuk mengetahui cara melakukan ini di Windows.
Jared Nielsen
1
Kemungkinan duplikat audio Putar dengan Python Ubuntu bash: askubuntu.com/questions/277215/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Jawaban:

250

Di Windows

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

Dimana freq adalah frekuensi dalam Hz dan durasinya dalam milidetik.

Di Linux dan Mac

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

Untuk menggunakan contoh ini, Anda harus menginstal sox.

Di Debian / Ubuntu / Linux Mint, jalankan ini di terminal Anda:

sudo apt install sox

Di Mac, jalankan ini di terminal Anda (menggunakan macports):

sudo port install sox

Ucapkan di Mac

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

Pidato di Linux

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

Anda perlu menginstal speech-dispatcherpaket di Ubuntu (atau paket yang sesuai di distribusi lain):

sudo apt install speech-dispatcher
Ryan Saxe
sumber
1
benar Anda harus mengunduhnya, saya akan memberi Anda tautannya, biarkan saya menemukannya ... Saya baru saja memposting satu lagi untuk Mac yang benar-benar akan berbicara dengan Anda, sehingga dapat memberi tahu Anda ketika selesai
Ryan Saxe
Terima kasih! apakah Anda kebetulan tahu jika linux memiliki satu yang akan berbicara dengan Anda juga?
mtigger
2
Milik saya mengatakan bahwa kata tidak ditemukan, meskipun saya telah menginstal sox dan bermain berfungsi. tetapi saya telah menemukan alternatif. import os os.system ('espeak "program Anda telah selesai"')
mtigger
winsound tidak ditemukan. Apakah tidak tersedia untuk OS X?
Charlie Parker
1
@CharlieParker, jika Anda melihat jawaban lengkapnya, opsi pertama hanya untuk pengguna windows. Yang lain menyatakan bagaimana pada lingkungan lain, yang mencakup OSX
Ryan Saxe
31
 print('\007')

memainkan suara bel

Josh Allemon
sumber
6
Ini tampaknya tidak berfungsi melalui ipython / Jupyter
Kyle Barron
28

Yang ini sepertinya berfungsi pada Windows dan Linux * ( dari pertanyaan ini ):

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

beep()

Di Windows, bisa diletakkan di bagian akhir:

import winsound
winsound.Beep(500, 1000)

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

Untuk bekerja di Linux, Anda mungkin perlu melakukan hal berikut (dari komentar QO):

  • di terminal, ketik 'cd /etc/modprobe.d' lalu 'gksudo gedit blacklist.conf'
  • komentari baris 'blacklist pcspkr', lalu reboot
  • periksa juga bahwa preferensi terminal telah mencentang 'Bel Terminal'.
Saullo GP Castro
sumber
1
Terima kasih! hanya untuk menambahkan, mungkin perlu mengaktifkan suara bel terminal di ubuntu gnome agar dapat berfungsi.
mtigger
@mtigger Bisakah Anda menjelaskan cara melakukannya, sehingga kami dapat memperbarui jawabannya ... (atau Anda dapat memperbarui)
Saullo GP Castro
1
di terminal, ketik 'cd /etc/modprobe.d' lalu 'gksudo gedit blacklist.conf'. hapus komentar pada baris yang mengatakan 'blacklist pcspkr', lalu reboot. periksa juga bahwa preferensi terminal telah mencentang 'Bel Terminal'.
mtigger
bagaimana cara memeriksa "bahwa preferensi terminal memiliki 'Bel Terminal' dicentang" di ubuntu 13?
pengguna2384994
"\ a" berfungsi untuk saya di subsistem Ubuntu untuk Windows, terima kasih !!
Ryan
17

dispatcher ucapan ubuntu dapat digunakan:

import subprocess
subprocess.call(['speech-dispatcher'])        #start speech dispatcher
subprocess.call(['spd-say', '"your process has finished"'])
Ishan Khare
sumber
tapi, mulai bermain saat proses selesai.
cengizkrbck
itulah perilaku yang dimaksudkan, Anda menginginkan suara ketika proses selesai
Ishan Khare
Anda dapat menambahkan -wargumen untuk menunggu sementara spd-say menyelesaikan frasa
ruX
10

Jawaban Kuchi tidak berhasil untuk saya di OS X Yosemite (10.10.1). Saya menemukan afplayperintah (di sini ), yang bisa Anda panggil dari Python. Ini berfungsi terlepas dari apakah bel bersuara Terminal diaktifkan dan tanpa pustaka pihak ketiga.

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

Saya berasumsi Anda menginginkan bel sistem standar, dan tidak ingin menyibukkan diri dengan frekuensi dan durasi, dll., Anda hanya menginginkan bel jendela standar.

import winsound
winsound.MessageBeep()
poulter7
sumber
6

Lihat: Python Sound ("Bell")
Ini membantu saya ketika saya ingin melakukan hal yang sama.
Semua kredit diberikan ke gbc

Kutipan:

Sudahkah Anda mencoba:

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

Itu berfungsi untuk saya di sini di Mac OS 10.5

Sebenarnya, saya pikir upaya asli Anda juga berfungsi dengan sedikit modifikasi:

print('\a')

(Anda hanya perlu tanda kutip tunggal di sekitar urutan karakter).

Kuchi
sumber
6

Mengapa menggunakan python? Anda mungkin lupa untuk menghapusnya dan memeriksanya ke dalam repositori. Jalankan saja perintah python Anda dengan && dan perintah lain untuk dijalankan untuk melakukan peringatan.

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

atau jatuhkan fungsi ke .bashrc Anda. Saya menggunakan apython di sini tetapi Anda bisa mengganti 'python'

function apython() {
    /usr/bin/python $*
    notify-send 'Alert' "python $* is complete"
    paplay /usr/share/sounds/freedesktop/stereo/suspend-error.oga
}
rtaft
sumber
bagus, itu berhasil. juga denganos.system("paplay sound-alarm.oga")
fsevenm
4

Itu dapat dilakukan dengan kode sebagai berikut:

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

subprocess.call(['D:\greensoft\TTPlayer\TTPlayer.exe', "E:\stridevampaclip.mp3"])
Du Peng
sumber
2
Anda harus menambahkan beberapa komentar atau penjelasan lain untuk kode ini untuk menjelaskan cara kerjanya dan mengapa itu menjawab pertanyaan.
skrrgwasme
0

Sedikit lagi pertanyaan Anda.

Saya menggunakan paket gTTS untuk menghasilkan audio dari teks dan kemudian memutar audio itu menggunakan Playsound ketika saya belajar webscrapping dan membuat pengunduh coursera (hanya kursus gratis).

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