简体   繁体   English

将频率与音乐分开

[英]separate frequencies from music

i want to print separate frequency present in a music file. 我想打印音乐文件中存在的单独频率。 if freq amp is grater than threshold. 如果频率放大器比阈值更小。 then it will brinted. 然后它会发亮。

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)

it is printing frequencies 0.something. 它是打印频率0.something。 not getting actual frequiencies 没有得到实际的频率

Your loop over freq1 is wrong. 您在freq1上的循环是错误的。 To use i as the index for freq1 , try this: 要将i用作freq1的索引,请尝试以下操作:

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

Or alternatively, 或者,

for i in freq1:
    print i

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM