考虑以下代码
import numpy as np
import matplotlib.pyplot as plt
from librosa import cqt
s = np.linspace(0,1,44100)
x = np.sin(2*np.pi*1000*s)
fmin=500
cq_lib = cqt(x,sr=44100, fmin=fmin, n_bins=40)
plt.imshow(abs(cq_lib),aspect='auto', origin='lower')
plt.xlabel('Time Steps')
plt.ylabel('Freq bins')
当你仔细观察光谱图的开头和结尾时,你会发现其中有一些缺陷。
当只绘制第一个和最后一个时间步长时,可以看到频率不正确。
plt.plot(abs(cq_lib)[:,0])
plt.ylabel('Amplitude')
plt.xlabel('Freq bins')
plt.tick_params(labelsize=16)
最后一帧和第二帧比较
plt.plot(abs(cq_lib)[:,-1])
plt.plot(abs(cq_lib)[:,-2])
plt.legend(['last step', '2nd last step'], fontsize=16)
plt.ylabel('Amplitude')
plt.xlabel('Freq bins')
plt.tick_params(labelsize=16)
据我所知,这应该是由于填充和放置
stft
cqt
不支持这个论点
center=False
cq_lib = cqt(x,sr=44100, fmin=fmin, n_bins=40,center=False)
TypeError:cqt()获得意外的关键字参数“center”
我做错什么了吗?如何制作
在里面
cqt
?