[python] 코드 완료시 소리 경보

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

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

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



답변

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


답변

 print('\007')

벨 소리를 재생합니다


답변

이것은 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’이라고 적힌 줄에 주석을 달고 재부팅하십시오.
  • 터미널 환경 설정에 ‘터미널 벨’이 있는지 확인하십시오.

답변

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

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


답변

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

import winsound
winsound.MessageBeep()


답변

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

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


답변

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

인용문:

당신이 시도 했습니까 :

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

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

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

print('\a')

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