python winsound를 이용한 윈도우 환경에서 소리 재생 예제

 본 포스트에는 윈도우 환경에서 python의 winsound라이브러리를 이용한 사운드 재생의 예제를 싣고 있다.

import winsound


특정 주파수 톤 재생

Beep를 사용하여 특정 주파수의 소리를 정해진 시간동안 재생할 수 있다.

winsound.Beep(frequency, duration)

파라미터

  • frequency : Hz 단위며, 범위는 37Hz~32,767Hz
  • duration : milliseconds 단위이다.


example code

import winsoind
winsound.Beep(370,2000)



wave 재생

지정된 파일, 윈도우 레지스트리에 등록된 사운드 혹은 오디오 데이터(bytes-like object)를 재생한다. 만약 sound 리소스가 없는 경우 시스템 디폴트 사운드를 재생한다. 

winsound.PlaySound(sound, flags)

파라미터

  • sound : 파일 이름, 시스템 사운드 별명, 오디오 데이터
  • flags :
    • winsound.SND_FILENAME : sound 파라미터는 wave file 이름 이며, SND_ALIAS와 함께 사용하면 안된다.
    •  winsound.SND_ALIAS : sound 파라미터는 시스템 사운드 별명이며, SND_FILENAME와 함께 사용하면 안된다.
      • ex) 'SystemAsterisk', 'SystemExclamation', 'SystemExit', 'SystemHand', 'SystemQuestion'
    • winsound.SND_LOOP : 반복 재생한다. 테스트해보니 SND_ASYNC와 함께 사용하는 경우만 반복 재생된다. 재생을 멈추려면 SND_PURGE을 flag로 실행하면된다.
    • winsound.SND_MEMORY : sound 파라미터는 오디오 데이터. SND_ASYNC와 함께 사용시 RunTimeError 발생한다.
    • winsound.SND_PURGE : 지정된 사운드의 모든 인스턴스 재생을 중지한다.
    • winsound.SND_ASYNC : 사운드 async 재생한다. 실행 시 바로 리턴되고 사운드는 재생된다.
    • winsound.SND_NODEFAULT : 지정된 사운드 재생 못할 경우 시스템 디폴트 사운드를 재생하지 않도록 한다. 만약 파일이 없을 경우 RuntimeError가 발생한다.
    • winsound.SND_NOSTOP : 재행중인 사운드를 중단하지 않도록 한다.
    • winsound.SND_NOWAIT : 사운드 드라이버가 사용 중이면 바로 리턴 한다.


파일 반복 재생 example code

import winsound
winsound.PlaySound('addf8-Alaw-GW.wav',winsound.SND_FILENAME | winsound.SND_LOOP | winsound.SND_ASYNC)


파일 재생 정지 example code

import winsound
winsound.PlaySound('addf8-Alaw-GW.wav',winsound.SND_FILENAME | winsound.SND_PURGE)


윈도우 사운드 재생 example code

import winsound
winsound.PlaySound('SystemHand',winsound.SND_ALIAS)


오디오 데이터 재생 example code

import winsound
with open('drmapan.wav','rb') as f:
    winsound.PlaySound(f.read(),winsound.SND_MEMORY)

예제의 wav파일은 아래 사이트에서 다운 받았다.

http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/Samples.html


윈도우 사운드 재생

윈도우 레지스트리에 지정된 사운드 재생한다.

winsound.MessageBeep(type=MB_OK) 

파라미터

  • type
    • -1 : 간단한 경고음 재생
    • winsound.MB_ICONASTERISK : SystemDefault 사운드 재생
    • winsound.MB_ICONEXCLAMATION : SystemExclamation 사운드 재생
    • winsound.MB_ICONHAND : SystemHand 사운드 재생
    • winsound.MB_ICONQUESTION : SystemQuestion 사운드 재생
    • winsound.MB_OK : SystemDefault 사운드 재생


example code

import winsound
winsound.MessageBeep(snd.MB_OK)

댓글

이 블로그의 인기 게시물

간단한 cfar 알고리즘에 대해

windows에서 간단하게 크롬캐스트(Chromecast)를 통해 윈도우 화면 미러링 방법

windows 10에서 스마트폰 미러링으로 화면 녹화

쉽게 설명한 파티클 필터(particle filter) 동작 원리와 예제

mkfs.fat Device or resource busy 에러 해결법