2015-06-09 53 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

改变的代码,但不显示在赫兹适当的频率。 –