Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python winsound 모듈 완벽 가이드 – Windows에서 사운드 재생하기

winsound 모듈은 Windows 운영체제에 설치된 파이썬에서만 사용할 수 있는 전용 모듈입니다. 외부 라이브러리 설치 없이도 PC 스피커로 비프음을 내거나 WAV 파일을 재생하는 등 다양한 사운드 작업을 손쉽게 처리할 수 있습니다. winsound 모듈은 다음과 같은 핵심 함수들을 제공합니다.

1. Beep() – 단순 비프음 발생

이 함수를 호출하면 PC 스피커에서 비프음이 울립니다. 함수는 두 개의 매개변수를 받습니다.

  • frequency(주파수): 소리의 주파수를 지정하며, 반드시 37Hz ~ 32,767Hz 범위 내의 값이어야 합니다.
  • duration(지속 시간): 소리가 유지되는 시간을 밀리초(ms) 단위로 지정합니다.
>>> import winsound
>>> winsound.Beep(1000, 500)

위 예제는 1000Hz의 비프음을 500밀리초 동안 재생합니다.

2. MessageBeep() – 레지스트리에 등록된 시스템 사운드 재생

이 함수는 Windows 레지스트리에 지정된 사운드를 재생합니다. type 인자를 통해 어떤 소리를 재생할지 지정할 수 있으며, 사용 가능한 값은 다음과 같습니다.

-1, MB_ICONASTERISK, MB_ICONEXCLAMATION, MB_ICONHAND, MB_ICONQUESTION, 그리고 기본값인 MB_OK

값으로 -1을 전달하면 "단순 비프음(simple beep)"이 재생됩니다.

>>> winsound.MessageBeep()

3. PlaySound() – WAV 파일 및 시스템 사운드 재생

이 함수는 플랫폼 API의 PlaySound() 함수를 호출합니다. sound 매개변수에는 파일 이름, 시스템 사운드 별칭, 또는 bytes류 객체 형태의 오디오 데이터를 지정할 수 있으며, 해석 방식은 flags 값에 따라 달라집니다. 주요 플래그는 아래와 같습니다.

SND_FILENAMEsound 매개변수가 WAV 파일의 이름임을 나타냅니다.
SND_LOOP사운드를 반복해서 계속 재생합니다.
SND_MEMORYsound 매개변수가 WAV 파일의 메모리 이미지(bytes류 객체)임을 나타냅니다.
SND_ASYNC즉시 반환되어 사운드가 비동기적으로 재생됩니다.
SND_NODEFAULT지정한 사운드를 찾을 수 없을 때 시스템 기본 사운드를 재생하지 않습니다.
SND_NOSTOP현재 재생 중인 사운드를 중단하지 않습니다.

다음 문장은 지정된 WAV 파일을 재생합니다.

>>> winsound.PlaySound('sample.wav', winsound.SND_FILENAME | winsound.SND_NOWAIT)

SND_ALIAS – Windows 시스템 사운드 별칭 활용

SND_ALIAS 플래그를 사용하면 Windows 레지스트리에 등록된 사운드 이름을 통해 시스템 사운드를 재생할 수 있습니다. 레지스트리에 해당 이름이 존재하지 않으면 SND_NODEFAULT가 지정되지 않은 한 시스템 기본 사운드가 재생됩니다. 모든 Win32 시스템은 다음 별칭을 지원합니다.

PlaySound() 이름제어판의 대응 사운드 이름
'SystemAsterisk'Asterisk (별표)
'SystemExclamation'Exclamation (느낌표)
SystemExitExit Windows (Windows 종료)
'SystemHand'Critical Stop (위험 종료)
SystemQuestionQuestion (질문)

예를 들어 다음 문장은 Windows 종료 사운드를 재생합니다.

>>> winsound.PlaySound("SystemExit", winsound.SND_ALIAS)

MessageBeep()용 사운드 상수

winsound 모듈은 MessageBeep() 함수와 함께 사용할 수 있는 다음 상수들도 정의하고 있습니다.

MB_ICONASTERISKSystemDefault 사운드를 재생합니다.
MB_ICONEXCLAMATIONSystemExclamation 사운드를 재생합니다.
MB_ICONHANDSystemHand 사운드를 재생합니다.
MB_ICONQUESTIONSystemQuestion 사운드를 재생합니다.
MB_OKSystemDefault 사운드를 재생합니다.