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?


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


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

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


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'.

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

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

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()

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).


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
}

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

2
import subprocess

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

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")
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.