2012-06-29 2 views
2

나는 원시 사운드 데이터 샘플의 배열을 가지고 있으며, 재생되는 오디오의 진행과 함께 파형을 표시하는 그래픽 플레이어를 만들기 위해 노력하고 있습니다.진행률 표시 줄로 사운드 데이터를 재생하기위한 파이썬 모듈?

matplotlib을 사용하면 충분히 음모를 꾸밀 수 있으며 audiolab으로 재생할 수도 있지만 audiolab은 재생 헤드의 "현재 위치"를 얻을 수있는 방법이 없습니다.

이렇게 할 수있는 모듈이 있습니까?

+0

http://wiki.python.org/moin/Audio를 사용 될 수 있습니다. – Amber

답변

1

오디오 프레임 수와 샘플 수를 알고있는 경우 현재 위치를 말하기 위해 audiolab을 사용할 필요가 없지만 계산할 수 있습니다.

Sndfile.frames/Sndfile.samplerate은 파일의 지속 시간을 초 단위로 알려주므로 사운드 파일이 상대적인 현재 위치를 계산하기 시작한 이래로 경과 시간과 함께 사용할 수 있습니다. 원리를 설명하기 위해 :

import time 

start_time = time.time() 
duration_s = sndfile.frames/sndfile.samplerate 

while 1: 
    elapsed_time = time.time() - start_time 
    current_location = elapsed_time/float(duration_s) 
    if current_location >= 1: 
     break 
    time.sleep(.01) 

실제로이를 구현하기를 부모 스레드에서, 당신은 비동기 적으로 사운드 파일을 재생, Python threading을 사용할 수 있습니다, 다음 (위와 같이) 현재 위치를 계산한다. 재생이 실패한 경우를 처리하려면 예외 처리기에서 scikits.audiolab.play()으로 전화를 랩 한 다음 threading.Event을 사용하여 play() 호출이 실패 할 경우 부모 스레드에 이벤트를 전달합니다. 부모 스레드에서

당신은 그에 따라 event.isSet()을 확인해야합니다 :

if current_location >= 1 or fail_event.isSet(): 
    break 
1

"seek"기능이 아닌 진행률 표시 줄을 원하는 경우 tkintr을 사용하여 쉽게 작성하고 현재 가지고있는 것과 통합 할 수 있습니다.

그렇지 않으면

,

은 기본적으로 당신에게 진행률 표시 줄을 줄 두 개의 모듈이 있습니다. http://code.google.com/p/py-audio-gui/wiki/PageName

PyAudio

는 MP3를 재생합니다. 주요 단점. 그러나 사용하기가 더 쉽습니다.

많은 다른 형식을 지원하고 진행률 표시 줄 기능이있는 Snack이라는 또 다른 모듈이 있습니다.

사용하기가 약간 어려웠지만 최근에 좋은 자습서/샘플을 사용할 수 있다고 들었습니다.

원하는 경우 Snack으로 전환하도록 제안합니다.

건배.

관련 문제