코드 완료시 소리 경보


143

내 코드를 실행하는 데 시간이 오래 걸리고 항상 쳐다보고 싶지 않지만 언제 완료되는지 알고 싶습니다.

(파이썬) 코드를 소리가 "알람"으로 만들려면 어떻게해야합니까? 코드 끝에 도달했을 때 .wav 파일을 재생하려고 생각하고있었습니다 ...

이것이 가능한 아이디어 일까? 그렇다면 어떻게 할 수 있습니까?


어떤 운영 체제를 사용하고 있습니까?
Thomas Fenzl

우분투 12.04이며 코드는 파이썬입니다.
mtigger

4
Windows 에서도이 작업을 수행하는 방법을 알고 싶습니다.
Jared Nielsen


답변:


235

Windows에서

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

여기서 freq는 주파수 (Hz)이고 지속 시간은 밀리 초입니다.

Linux 및 Mac에서

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

이 예제를 사용하려면 설치해야합니다 sox .

데비안 / 우분투 / 리눅스 민트의 터미널에서 이것을 실행하십시오 :

sudo apt install sox

Mac의 경우 터미널에서이를 실행하십시오 (macports 사용).

sudo port install sox

Mac에서의 연설

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

리눅스 연설

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

speech-dispatcher우분투 (또는 다른 배포판의 해당 패키지)에 패키지 를 설치해야합니다 :

sudo apt install speech-dispatcher

1
바로 당신은 내가 당신을 말할 수 있도록 당신이 일을 끝낼 때 ... 난 그냥 게시 나를 찾을 수 있도록, 당신이 실제로 당신에게 말할 것 맥에 대한 또 하나의 링크를 줄 것이다, 그것을 다운로드해야
라이언 작센

감사! 리눅스도 당신과 대화 할 수있는 것이 있는지 알고 있습니까?
mtigger

2
내 말은 내가 삭스를 설치하고 작품을 연주 했는데도 그 말을 찾을 수 없다고 말합니다. 하지만 대안을 찾았습니다. import os os.system ( ''프로그램이 완료되었습니다 '라고 말하십시오')
mtigger

winsound를 찾을 수 없습니다. 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'를 입력하십시오.
  • 'blacklist pcspkr'이라고 적힌 줄에 주석을 달고 재부팅하십시오.
  • 터미널 환경 설정에 '터미널 벨'이 있는지 확인하십시오.

1
감사! 추가하기 위해 우분투 그놈에서 터미널 벨 소리를 켜야 할 수도 있습니다.
mtigger

@mtigger 답변을 업데이트 할 수 있도록 방법을 설명해 주시겠습니까? (또는 업데이트 가능)
Saullo GP Castro

1
터미널에서 'cd /etc/modprobe.d'를 입력 한 다음 'gksudo gedit blacklist.conf'를 입력하십시오. 'blacklist pcspkr'이라는 줄을 주석 해제 한 다음 재부팅하십시오. 터미널 환경 설정에 '터미널 벨'이 있는지 확인하십시오.
mtigger

우분투 13에서 "터미널 환경 설정에 '터미널 벨'이 체크되어 있는지"를 확인하는 방법은 무엇입니까?
user2384994

"\ a"는 Windows 용 Ubuntu 하위 시스템에서 작동했습니다. 감사합니다 !!
Ryan

17

우분투 음성 디스패처를 사용할 수 있습니다 :

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

그러나 프로세스가 끝나면 재생을 시작합니다.
cengizkrbck 2016 년

그것이 의도 된 행동입니다. 프로세스가 끝났을 때 소리를 원합니다
Ishan Khare

-wspd-say가 문구를 끝내는 동안 기다릴 인수를 추가 할 수 있습니다
ruX

8

나는 당신이 표준 시스템 벨을 원한다고 가정하고 주파수와 지속 시간 등에 신경 쓰지 않고 표준 윈도우 벨을 원합니다.

import winsound
winsound.MessageBeep()

8

쿠치의 답변 은 OS X Yosemite (10.10.1)에서 작동하지 않았습니다. 파이썬에서 호출 할 수 있는 afplay명령 ( here )을 찾았습니다 . 이것은 터미널 가청 벨의 활성화 여부에 관계없이 작동하며 타사 라이브러리가 없습니다.

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

6

참고 : Python Sound ( "Bell")
이것은 내가 똑같이하고 싶을 때 도움이되었습니다.
모든 크레딧은 gbc 로 이동

인용문:

당신이 시도 했습니까 :

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

그것은 Mac OS 10.5에서 나를 위해 작동합니다.

실제로, 당신의 원래 시도는 약간의 수정으로도 효과가 있다고 생각합니다.

print('\a')

(문자 순서 주위에 작은 따옴표가 필요합니다).


6

왜 파이썬을 사용합니까? 제거하고 리포지토리에 체크인하는 것을 잊어 버릴 수 있습니다. && 및 다른 명령으로 파이썬 명령을 실행하여 경고를 수행하십시오.

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

또는 .bashrc에 함수를 드롭하십시오. 여기서는 파이썬을 사용하지만 '파이썬'을 무시할 수 있습니다

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 17 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.