나는 원시 사운드 데이터 샘플의 배열을 가지고 있으며, 재생되는 오디오의 진행과 함께 파형을 표시하는 그래픽 플레이어를 만들기 위해 노력하고 있습니다.진행률 표시 줄로 사운드 데이터를 재생하기위한 파이썬 모듈?
matplotlib을 사용하면 충분히 음모를 꾸밀 수 있으며 audiolab으로 재생할 수도 있지만 audiolab은 재생 헤드의 "현재 위치"를 얻을 수있는 방법이 없습니다.
이렇게 할 수있는 모듈이 있습니까?
나는 원시 사운드 데이터 샘플의 배열을 가지고 있으며, 재생되는 오디오의 진행과 함께 파형을 표시하는 그래픽 플레이어를 만들기 위해 노력하고 있습니다.진행률 표시 줄로 사운드 데이터를 재생하기위한 파이썬 모듈?
matplotlib을 사용하면 충분히 음모를 꾸밀 수 있으며 audiolab으로 재생할 수도 있지만 audiolab은 재생 헤드의 "현재 위치"를 얻을 수있는 방법이 없습니다.
이렇게 할 수있는 모듈이 있습니까?
오디오 프레임 수와 샘플 수를 알고있는 경우 현재 위치를 말하기 위해 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
"seek"기능이 아닌 진행률 표시 줄을 원하는 경우 tkintr을 사용하여 쉽게 작성하고 현재 가지고있는 것과 통합 할 수 있습니다.
그렇지 않으면
,은 기본적으로 당신에게 진행률 표시 줄을 줄 두 개의 모듈이 있습니다. http://code.google.com/p/py-audio-gui/wiki/PageName
PyAudio
는 MP3를 재생합니다. 주요 단점. 그러나 사용하기가 더 쉽습니다.많은 다른 형식을 지원하고 진행률 표시 줄 기능이있는 Snack이라는 또 다른 모듈이 있습니다.
사용하기가 약간 어려웠지만 최근에 좋은 자습서/샘플을 사용할 수 있다고 들었습니다.
원하는 경우 Snack으로 전환하도록 제안합니다.
건배.
http://wiki.python.org/moin/Audio를 사용 될 수 있습니다. – Amber