Звуковий сигнал, коли код закінчується


143

Я перебуваю в ситуації, коли мій код займає надзвичайно багато часу, і я не хочу постійно дивитися на нього, але хочу знати, коли це робиться.

Як я можу зробити звук коду (Python) звуком «тривожною», коли це зроблено? Я думав змусити його відтворити .wav файл, коли він досягне кінця коду ...

Це навіть реальна ідея? Якщо так, то як я можу це зробити?


яку операційну систему ви використовуєте?
Томас Фензл

Ubuntu 12.04, і код знаходиться в python.
mtigger

4
Мені було б цікаво знати, як це зробити і в Windows.
Джаред Нільсен


Відповіді:


235

У Windows

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

Де частота - частота в Гц, а тривалість - в мілісекундах.

На Linux та Mac

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

Для використання цього прикладу необхідно встановити sox.

На Debian / Ubuntu / Linux Mint запустіть це у своєму терміналі:

sudo apt install sox

На Mac запустіть це у своєму терміналі (використовуючи макпорти):

sudo port install sox

Виступ на Mac

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

Виступ на Linux

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

Вам потрібно встановити speech-dispatcherпакет в Ubuntu (або відповідний пакет в інших дистрибутивах):

sudo apt install speech-dispatcher

1
право. Ви повинні завантажити його, я дам вам посилання, дозвольте його знайти ... Я щойно опублікував ще один для маків, які насправді розмовлятимуть з вами, щоб він міг сказати вам, коли це буде зроблено
Райан Сакс

Дякую! чи знаєте ви, чи є у Linux такий, який буде говорити і вам?
mtigger

2
моє говорить, що сказати не знайдено, навіть якщо я встановив сокс і грає твори. але я знайшов альтернативу. import os os.system ('espeak' ваша програма закінчена '')
mtigger

winound не знайдено. Це не доступно для OS X?
Чарлі Паркер

1
@CharlieParker, якщо ви подивитесь на повну відповідь, перший варіант призначений лише для користувачів Windows. Інші заявляють, як це робити в інших середовищах, що включає OSX
Ryan Saxe


26

Цей, здається, працює і в Windows, і в Linux * ( з цього питання ):

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

beep()

У Windows можна поставити в кінці:

import winsound
winsound.Beep(500, 1000)

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

Для роботи в Linux вам може знадобитися зробити наступне (з коментаря QO):

  • в терміналі введіть 'cd /etc/modprobe.d', а потім 'gksudo gedit blacklist.conf'
  • прокоментуйте рядок із написом "чорний список pcspkr", а потім перезавантажте
  • також переконайтеся, що в налаштуваннях терміналу встановлено прапорець "Дзвінок терміналу".

1
Дякую! просто додати, можливо, знадобиться увімкнути звуковий сигнал дзвінка термінала в gnome ubuntu, щоб він працював.
mtigger

@mtigger Чи можете ви поясніть, як це зробити, щоб ми могли оновити відповідь ... (або ви можете оновити)
Saullo GP Castro

1
в терміналі введіть 'cd /etc/modprobe.d', а потім 'gksudo gedit blacklist.conf'. прокоментуйте рядок із написом "чорний список pcspkr" та перезавантажте. також переконайтеся, що в налаштуваннях терміналу встановлено прапорець "Дзвінок терміналу".
mtigger

як перевірити "чи в налаштуваннях термінала" Terminal Bell 'перевірено "в ubuntu 13?
user2384994

"\ a" працював для мене в підсистемі Ubuntu для Windows, дякую !!
Райан

17

Мовленнєвий диспетчер ubuntu можна використовувати:

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

але, починаючи грати, коли процес закінчений.
cengizkrbck

ось що задумана поведінка, ви хочете, щоб звук, коли процес закінчується
Ішан Харе

Ви можете додати -wаргумент, щоб зачекати, поки spd-say закінчить фразу
ruX

8

Я припускаю, що ви хочете стандартного системного дзвоника, і не хочете турбуватися про частоту і тривалість і т.д., ви просто хочете, щоб стандартний дзвінок Windows.

import winsound
winsound.MessageBeep()

8

Відповідь Кучі не працювала для мене в ОС X X Yosemite (10.10.1). Я знайшов afplayкоманду ( тут ), яку ви можете просто зателефонувати з Python. Це працює незалежно від того, включений звуковий дзвінок терміналу та без сторонньої бібліотеки.

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

6

Дивіться: Python Sound ("Дзвін")
Це допомогло мені, коли я хотів зробити те саме.
Усі кредити йдуть на gbc

Цитата:

Ти намагався :

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

Це працює для мене тут на Mac OS 10.5

Насправді, я думаю, що ваша оригінальна спроба працює також з невеликою модифікацією:

print('\a')

(Вам просто потрібні одиничні лапки навколо послідовності символів).


6

Навіщо взагалі використовувати python? Ви можете забути вийняти його та перевірити у сховище. Просто запустіть команду python за допомогою && та іншої команди, щоб виконати для оповіщення.

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

або киньте функцію у свій .bashrc. Я використовую тут apython, але ви можете змінити "python"

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

чудово, це працює. також зos.system("paplay sound-alarm.oga")
fsevenm

4

Це можна зробити за кодом наступним чином:

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
Ви повинні додати деякі коментарі або інше пояснення до цього коду, щоб пояснити, як він працює і чому він відповідає на питання.
skrrgwasme
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.