作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将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
def chromagram(x,fs,framesize,hopsize):
X = stft(x,fs,framesize,hopsize)
chroma = np.fmod(np.round(np.log2(X / 440) * 12), 12)
return chroma
最佳答案
我认为,这样做是可行的。在X
中,您具有复数值的STFT。您可以使用np.abs(X)
获得其幅度值。您是否要申请this formula?这是将频率转换为音符,但是在X
中没有频率。您可以使用np.fft.fftfreq(framesize, 1.0/fs)
获得相应的频率。
如果您不想将Bregman Audio-Visual Information Toolbox用于Chroma功能,并想自己实现它们,则可以移植Matlab Chroma Toolbox。我认为他们使用滤波器组而不是FFT。在此页面的下方,您可以找到有关色度功能的详细说明。
无论如何,如果您具有色度特征,则可以使用 imshow
将它们像任何二维数组一样绘制。
from matplotlib import pyplot as plt
import numpy as np
X = np.random.random((30, 30))
plt.imshow(X)
plt.show()
关于python - 将stft转换为色度并绘制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20802016/
如何在 Javascript 中拥有 CIE(色度/开尔文温度)色域? 我在 Canvas 上绘制了 XYZ 到 RGB 颜色三 Angular 形,就像绘图一样 . 但我还需要像这样的整个 CIE
我是一名优秀的程序员,十分优秀!