2015-06-09 85 views
0

我想打印音樂文件中存在的單獨頻率。如果頻率放大器 比閾值更大。那麼它會沾染。來自音樂的單獨頻率

import pyaudio 
import wave 
import numpy as np 

chunk = 2048 
wf = wave.open('/home/pi/music.wav', 'rb') 
swidth = wf.getsampwidth() 
RATE = wf.getframerate() 
window = np.blackman(chunk) 
p = pyaudio.PyAudio() 
stream = p.open(format = 
     p.get_format_from_width(wf.getsampwidth()), 
     channels = wf.getnchannels(), 
     rate = RATE, 
     output = True) 
data = wf.readframes(chunk) 
while len(data) != '': 
    stream.write(data) 
    indata = np.array(wave.struct.unpack("%dh"%(len(data)/swidth),\ 
           data)) 
    fftdata=abs(np.fft.rfft(indata))**2 
    freq1=np.fft.fftfreq(len(indata)) 
    for i in range(len(freq1)): 
     freq = freq1[i] 
     print freq 
    data = wf.readframes(chunk) 

它是打印頻率0.something。沒有獲得實際的頻率

回答

1

您的循環結束freq1是錯誤的。要使用i作爲指數freq1,試試這個:

for i in range(len(freq1): 
    freq = freq1[i] 
    print freq 

或者,

for i in freq1: 
    print i 
+0

改變的代碼,但不顯示在赫茲適當的頻率。 –