Python 计算一组波形文件的平均FIR,绘制它并保存到txt作为表格
就在第二天,我遇到了Python和麻烦…Python 计算一组波形文件的平均FIR,绘制它并保存到txt作为表格,python,matplotlib,plot,wav,Python,Matplotlib,Plot,Wav,就在第二天,我遇到了Python和麻烦… 我有很多CD标准(16位,44100Hz)立体声波形文件,需要找到它们的平均值(算术平均值)FIR。算法很容易说…-每个频率的振幅之和除以文件量。然后绘制所获得的FIR,并将其作为表格写入文本文件。 我翻阅了一些类似的文章,像这样令人兴奋,但仍然有太多的东西,甚至是字母表,我失去了联系,每次我试图重复这些例子时,编译器错误就会随之而来。 我将感谢任何能使mè走出死胡同的帮助。所以,这些是我害羞的步伐 由于文件的数量可能会有所不同,因此在手肘处有一个文件列
我有很多CD标准(16位,44100Hz)立体声波形文件,需要找到它们的平均值(算术平均值)FIR。算法很容易说…-每个频率的振幅之和除以文件量。然后绘制所获得的FIR,并将其作为表格写入文本文件。
我翻阅了一些类似的文章,像这样令人兴奋,但仍然有太多的东西,甚至是字母表,我失去了联系,每次我试图重复这些例子时,编译器错误就会随之而来。
我将感谢任何能使mè走出死胡同的帮助。所以,这些是我害羞的步伐 由于文件的数量可能会有所不同,因此在手肘处有一个文件列表可能很有用:
import os
a = os.path.expanduser(u"~") # absolute user path var.
b = "integrator\\files" # base folder to use with files in it
c = os.path.join(a, b)
flist = os.listdir(c)
images = filter(lambda x: x.endswith('.wav'), flist) # filter non-wavs
for i in range(len(flist)):
print(flist[i])
print()
这对我来说很好!但我仍然无法理解如何组织多个文件的读取,并计算它们的平均值
正如我所说,我需要类似“全球套餐”的东西:
当main file.py看起来像这样时:
import matplotlib.pyplot as plt
from scipy.io import wavfile # get the api
from scipy.fftpack import fft
from pylab import *
def f(filename):
fs, data = wavfile.read(filename) # load the data
a = data.T[0] # this is a two channel soundtrack, I get the first track
b=[(ele/2**16.)*2-1 for ele in a] # this is 16-bit track, now normalized on [-1,1)
c = fft(b) # create a list of complex number
d = len(c)/2 # you only need half of the fft list
在这里,我只是不知道;I don’我不知道我最好用d做什么——循环求和还是。。。然后这个代码示例只运行一个通道进行绘图-我需要输出FIR作为每个通道的成对序列。但仍不清楚如何将FFT窗口调整为至少65536 FFT大小的汉宁(哦,是的,我知道thа)计算速度非常慢)
最后,我们可以绘制并保存图形:
plt.plot(abs(c[:(d-1)]),'r')
savefig(filename+'.png',bbox_inches='tight')
。。。以某种方式将平均FIR写入txt表文件
如果这个脚本可以作为控制台应用程序使用,我会很高兴的(虽然起初我梦想着一种极简的GUI,能够选择任何包含文件的文件夹,带有certian overview按钮和进度条,以确保应用程序仍在运行……尽管使用FFT慢速“scythe”硬覆盖十个或二十五个WAV
在Windows 7 x86 PC上获得了C:\Anaconda2(正确安装了numpy、scipy和matplotlib)
提前谢谢你!
关于,,
我
plt.plot(abs(c[:(d-1)]),'r')
savefig(filename+'.png',bbox_inches='tight')