Báo động âm thanh khi mã kết thúc


143

Tôi đang ở trong một tình huống mà mã của tôi mất rất nhiều thời gian để chạy và tôi không muốn nhìn chằm chằm vào nó mọi lúc nhưng muốn biết khi nào nó được thực hiện.

Làm cách nào tôi có thể biến loại mã (Python) thành âm thanh "báo động" khi hoàn thành? Tôi đã suy nghĩ về việc làm cho nó phát một tệp .wav khi nó đến cuối mã ...

Đây có phải là một ý tưởng khả thi? Nếu vậy, làm thế nào tôi có thể làm điều đó?


Bạn đang sử dụng hệ điều hành nào?
Thomas Fenzl

Ubuntu 12.04 và mã nằm trong python.
mtigger

4
Tôi cũng muốn biết làm thế nào để làm điều này trong Windows.
Jared Nielsen


1
Bản sao có thể có của Âm thanh phát với bash Ubuntu Ubuntu: Askubfox.com/questions/277215/ trên
Ciro Santilli 冠状

Câu trả lời:


235

Trên Windows

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

Trong đó freq là tần số tính bằng Hz và thời lượng tính bằng mili giây.

Trên Linux và Mac

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

Để sử dụng ví dụ này, bạn phải cài đặt sox.

Trên Debian / Ubuntu / Linux Mint, hãy chạy cái này trong thiết bị đầu cuối của bạn:

sudo apt install sox

Trên máy Mac, hãy chạy cái này trong thiết bị đầu cuối của bạn (sử dụng macports):

sudo port install sox

Bài phát biểu trên máy Mac

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

Bài phát biểu trên Linux

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

Bạn cần cài đặt speech-dispatchergói trong Ubuntu (hoặc gói tương ứng trên các bản phân phối khác):

sudo apt install speech-dispatcher

1
đúng Bạn phải tải xuống, tôi sẽ cung cấp cho bạn liên kết, hãy để tôi tìm nó ... Tôi vừa đăng một cái khác cho mac thực sự sẽ nói với bạn, để nó có thể cho bạn biết khi nào nó hoàn thành
Ryan Saxe

cảm ơn! Bạn có biết rằng linux có một cái sẽ nói với bạn không?
mtigger

2
Của tôi nói rằng không tìm thấy, mặc dù tôi đã cài đặt sox và chơi các tác phẩm. nhưng tôi đã tìm thấy một sự thay thế. nhập os os.system ('đặc biệt "chương trình của bạn đã kết thúc"')
mtigger

winound không được tìm thấy. Có phải nó không có sẵn cho OS X?
Charlie Parker

1
@CharlieParker, nếu bạn xem câu trả lời đầy đủ, tùy chọn đầu tiên chỉ dành cho người dùng windows. Những người khác nêu cách làm thế nào trên các môi trường khác, bao gồm OSX
Ryan Saxe


26

Cái này dường như hoạt động trên cả Windows và Linux * ( từ câu hỏi này ):

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

beep()

Trong Windows, có thể đặt ở cuối:

import winsound
winsound.Beep(500, 1000)

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

Để làm việc trên Linux, bạn có thể cần phải làm như sau (từ nhận xét của QO):

  • trong một thiết bị đầu cuối, nhập 'cd /etc/modprobe.d' rồi 'gksudo gedit blacklist.conf'
  • nhận xét dòng có nội dung 'danh sách đen pcspkr', sau đó khởi động lại
  • cũng kiểm tra xem các tùy chọn thiết bị đầu cuối đã kiểm tra 'Chuông đầu cuối'.

1
cảm ơn! chỉ cần thêm, có thể cần phải bật âm thanh chuông cuối trong ubfox gnome để nó hoạt động.
mtigger

@mtigger Bạn có thể vui lòng giải thích cách thực hiện điều đó để chúng tôi có thể cập nhật câu trả lời ... (hoặc bạn có thể cập nhật)
Saullo GP Castro

1
trong một thiết bị đầu cuối, nhập 'cd /etc/modprobe.d' rồi 'gksudo gedit blacklist.conf'. bỏ ghi chú dòng chữ 'danh sách đen pcspkr', sau đó khởi động lại. cũng kiểm tra xem các tùy chọn thiết bị đầu cuối đã kiểm tra 'Chuông đầu cuối'.
mtigger

Làm thế nào để kiểm tra "các tùy chọn thiết bị đầu cuối có 'Thiết bị đầu cuối chuông' được kiểm tra" trong Ubuntu 13 không?
user2384994

"\ a" đã làm việc cho tôi trên hệ thống con Ubuntu cho Windows, cảm ơn !!
Ryan

17

Có thể sử dụng bộ điều phối lời nói trên Ubuntu:

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

Nhưng, bắt đầu chơi khi quá trình kết thúc.
cengizkrbck

đó là những gì hành vi dự định là, bạn muốn âm thanh khi quá trình kết thúc
Ishan Khare

bạn có thể thêm -wđối số để chờ trong khi spd-say kết thúc cụm từ
ruX

8

Tôi giả sử bạn muốn có chuông hệ thống tiêu chuẩn và không muốn quan tâm đến tần số và thời lượng, v.v., bạn chỉ muốn chuông cửa sổ tiêu chuẩn.

import winsound
winsound.MessageBeep()

8

Câu trả lời của Kuchi không phù hợp với tôi trên OS X Yosemite (10.10.1). Tôi đã tìm thấy afplaylệnh ( ở đây ), mà bạn chỉ có thể gọi từ Python. Điều này hoạt động bất kể chuông âm thanh Terminal có được bật hay không và không có thư viện của bên thứ ba.

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

6

Xem: Âm thanh Python ("Chuông")
Điều này đã giúp tôi khi tôi muốn làm điều tương tự.
Tất cả các khoản tín dụng vào gbc

Trích dẫn:

Bạn đã thử chưa:

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

Nó hoạt động với tôi ở đây trên Mac OS 10.5

Trên thực tế, tôi nghĩ rằng nỗ lực ban đầu của bạn cũng hoạt động với một chút sửa đổi:

print('\a')

(Bạn chỉ cần các trích dẫn duy nhất xung quanh chuỗi ký tự).


6

Tại sao lại dùng python? Bạn có thể quên xóa nó và kiểm tra nó vào một kho lưu trữ. Chỉ cần chạy lệnh python của bạn với && và một lệnh khác để chạy để thực hiện cảnh báo.

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

hoặc thả một hàm vào .bashrc của bạn. Tôi sử dụng apython ở đây nhưng bạn có thể ghi đè 'python'

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

thật tuyệt, nó hoạt động cũng vớios.system("paplay sound-alarm.oga")
fsevenm

4

Nó có thể được thực hiện bằng mã như sau:

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
Bạn nên thêm một số ý kiến ​​hoặc giải thích khác cho mã này để giải thích cách thức hoạt động và lý do tại sao nó trả lời câu hỏi.
skrrgwasme
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.