2013-05-21 5 views
1

wav 파일의 웨이브 폼 표현을 만들고 있는데 파이썬에서 표준 라이브러리를 사용하여 효율적으로이 작업을 수행하는 가장 좋은 방법이 무엇인지 궁금합니다. 일부 오디오 파일은 몇 분이 걸릴 수 있습니다.표준 라이브러리 파이썬으로 웨이브 폼 표현 만들기

감사합니다.

+1

FWIW, numpy는 stdlib의 일부가 아닙니다. – mgilson

+0

내 잘못입니다. 그걸 몰랐어. 나는 numpy를 제외하고 표준 라이브러리를 추측한다. – chribis

+0

"파형 표현 생성"이란 정확히 무엇을 의미합니까? 파형의 그래픽 표현 (즉, 샘플 값 대 시간 그래프)을 의미합니까? 그렇다면 200,000x200 PNG 파일을 생성하거나 실시간으로 Tk 윈도우에 애니메이션 그래프를 그려보고 싶은가요? 아니면 ...? – abarnert

답변

0

TimeSide 라이브러리는 매우 간단한 그래프로이 문제를 해결합니다.

나는이 동일한 문제를 가지고 있으며 synthesizerpatel에서 제안한 알고리즘을 구현했다가 나중에이 라이브러리를 발견하고 더 나은 결과를 얻었습니다.

+0

아, "표준 라이브러리"라고 말한 부분을 놓쳤습니다. 어쨌든,이 질문은 내가 찾은 첫 번째 자원 중 하나입니다. TimeSide가 누군가의 문제를 해결하기를 바랍니다. – lfagundes

2

http://docs.python.org/2/library/wave.html - wav 파일을 읽기위한 stdlib. 내 머리 위로 떨어져 A simple example of using it.

이 내가 대신 예를 들어, 이미지, SVG를 쓰는 사용할 수있는 다양한 라이브러리가 있습니다

fmts = (None, "=B", "=h", None, "=l") 
fmt = fmts[sampwidth] 
dcs = (None, 128, 0, None, 0) 
dc = dcs[sampwidth] 

image_width = 600 
image_height = 300 
chunk_size = len(wavefile.getnframes())/image_width 

def unpacker(frame): 
    return struct.unpack(fmt, frame)[0] 

for i in range(chunk_size): 
    value = math.avg([unpacker(x) for x in wavefile.read_frames(chunk_size)]) 
    # and then use value * 300 to figure out the vertical position for the pixel. 

그 (의사)을 할 거라고 방법이다.

+0

추가 : C 코드가 포함 된 모듈의 예 (대신 _Easily_ 대신 Python 코드로 변환 될 수 있음) https://github.com/superjoe30/PyWaveform – synthesizerpatel

+0

이것은 굉장하지만 정말 필요합니다. wav 파일의 진폭 배열. 나는 내가 여기에서 일할 수 있다고 꽤 확신한다! – chribis