我正在尝试将wav文件的stft转换成彩色图像。在
这是我的密码:
def stft(x,fs,framesize,hopsize):
frame = int(framesize*fs)
hop = int(hopsize*fs)
w = scipy.hamming(frame)
X = scipy.array([scipy.fft(w*x[i:i+frame])])
for i in range(0,len(x)-frame,hop)
return X
这是色度图的代码:
^{pr2}$当我计算fft时,我得到了一个具有复值的数组,所以在计算色度之前,我必须将结果转换成float。我做错什么了吗?在
另外,如何绘制结果?在
我不认为,这样做是可行的。在
X
中,有复值STFT。您可以使用np.abs(X)
获得其幅值。是否要应用this formula?这是为了把频率转换成音符,但在X
中没有频率。你可以用np.fft.fftfreq(framesize, 1.0/fs)
得到相应的频率。在如果您不想将Bregman Audio-Visual Information Toolbox用于色度特性,并且想为自己实现它们,那么可以将Matlab Chroma Toolbox移植。我想他们用滤波器组而不是FFT。在这一页,你可以找到详细解释色度特性的参考资料。在
不管怎样,如果你有色度特征,你可以像任何二维数组一样用^{} 来绘制它们。在
相关问题 更多 >
编程相关推荐