功能:
1.读取文件
2.自谱分析:fft 分析点数、重叠系数、fft、生成三维谱阵
# @File : fft_data_process.py
# @Author: Wang Zhimin
# @Date : 2019/10/14
import numpy as np
from scipy import signal
from scipy.fftpack import fft
import scipy.misc
import soundfile as sf
from scipy.misc import imsave
path="D:/work/音频剪切/11.wav"
sig, fs_rate =sf.read(path)#sig为矩阵 fs_data=采样率
print(sig.shape,fs_rate)
print(sig)
pic_point=1024 #fft 分析点数
repeat_point=1/2#重叠系数
delta=fs_rate/2/pic_point
#分段
i=0
start=pic_point-pic_point*repeat_point
cut_data=[]
length=len(sig)
right = int(start * 0 + pic_point)
while(right<len(sig)):#只截取fft 分析点数的倍数,最后剩余的部分舍去不要
left = int(start * i)
windows_ = signal.windows.hann(pic_point, False)
cut_data.append(sig[left:right]*windows_)
i=i+1
right = int(start * i + pic_point)
print(i)
# if(right>len(sig)):#如果想要的这个不注释就行
# left = int(start * i)
# # length-left+1
# windows_ = signal.windows.hann(length-left, False)
# cut_data.append(sig[left:]*windows_)
print("np.array(cut_data).shape",np.array(cut_data).shape)
hang,lie=np.array(cut_data).shape
fft_data=[]
x=[]
print("done")
print(np.arange(len(cut_data)))
for x in np.arange(len(cut_data)):
data = abs(scipy.fftpack.fft(cut_data[x]))
fft_data.append(data)
fft_data_array=np.array(fft_data)
fft_data_array=fft_data_array[:,:int(lie/2)]#按照自己的需求设置行列
imsave('./test.jpg',fft_data_array)