2016-06-19 3 views
0

.wav 파일에서 데이터를 가져 와서 FFT를 수행 한 다음 그 데이터를 사용하여 연주 한 음의 주파수를 찾으려고합니다. 파일을 여는 방법을 알았지 만 온라인 문서에서 데이터를 배열이나 목록으로 가져와 작업을 수행하는 방법을 알 수 없습니다. 아래는 지금까지 작성한 코드입니다..wav 파일의 데이터를 배열이나리스트로 가져 와서 어떻게 플롯 할 수 있습니까?

import wave 
harp=wave.open('/Users/williamweiss2/Desktop/Test 2/harp.wav','r') 
print("Frame rate of Harp sample is",harp.getframerate()) 
print(harp) #I thought that opening the file would automatically make an array. 

의견을 보내 주셔서 감사합니다.

+0

http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.io. wavfile.read.html –

+0

FFT를 단독으로 사용하는 것보다는 연주 된 음표의 음조 주파수를 결정하는 데 신뢰할 수있는 기능이 아닙니다. 피치는 심리 음향이므로 스펙트럼 주파수와 매우 다를 수 있습니다. 아마도 가중치 자기 상관, ASDF 또는 AMDF를 사용하여 피치 추정 알고리즘을 시도해보십시오. – hotpaw2

+0

@ hotpaw2 고마워요. 필자는 클래스에 대해 이렇게하고 있으며 마지막 과제에서 FFT를 사용하여 .txt 파일의 내용을 변형 한 다음 샘플링 속도, 샘플 수 및 피치를 추정 한 하모니 간의 주파수 변화를 알았습니다. 나는 여기서도 똑같이하려고 노력하고있다. 나는 녹음 및 샘플링 속도에서 샘플 수를 얻을 수 있지만, 나는 그것을 할 수있는 형태로 데이터를 격리하는 데 어려움을 겪고있다 FFT 그것을 계수하고 계수를 음모. 내가 올바른 길을 가고 있다고 생각하니? –

답변

0

harp.readframes(harp.getnframes())을 사용하여 바이트 문자열로 가져올 수 있습니다.

또는 당신은 같은 list의 요소로 각 프레임을 저장할 수 :

n=harp.getnframes() 
l=[] 
for i in range(n): 
    l.append(harp.readframes(1)) 
+0

1은 무엇입니까? 읽기 프레임 기능에서. –

+0

'readframes (n)'여기서'n'은 읽고 자하는 프레임의 수입니다. – shiva

+0

또한, 당신이 한 일을 복사 한 다음 그것을 그려 내려고했습니다. 나는 정말로 무슨 일이 일어나고 있는지 이해하고 있다고 생각하지 않는다. 이 오류가 있습니다. "문자열을 부동으로 변환 할 수 없습니다. U "그런 일이 일어나는 이유는 무엇입니까? 다시 한번 감사드립니다. –