从音乐中分离频率 [英] separate frequencies from music

查看:25
本文介绍了从音乐中分离频率的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想打印音乐文件中存在的单独频率.如果频率放大器大于阈值.然后它会被烧毁.

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)

打印频率为 0.something.没有得到实际频率

it is printing frequencies 0.something. not getting actual frequiencies

推荐答案

您对 freq1 的循环是错误的.要使用 i 作为 freq1 的索引,试试这个:

Your loop over freq1 is wrong. To use i as the index for freq1, try this:

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

或者,

for i in freq1:
    print i

这篇关于从音乐中分离频率的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆