我想你应该试试
pad_mode
在中支持
cqt
. 如果您签出np.pad
documentation
,您可以看到可用的选项(或查看本文末尾)。和
wrap
选项,你会得到这样的结果,虽然我怀疑这个阶段是一团糟,所以你应该确保这符合你的需要。如果您总是生成自己的信号,可以尝试使用
<function>
而不是一个可用的选项。
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, pad_mode='wrap')
plt.imshow(abs(cq_lib),aspect='auto', origin='lower')
plt.xlabel('Time Steps')
plt.ylabel('Freq bins')
如果你看第一帧和最后两帧,你可以看到它现在看起来好多了。我用librosa 0.6.3和0.7.0进行了测试,结果是一样的。
尝试一些选项,希望您能找到其中一个填充选项来实现此功能:
np.pad
options
âconstantâ, âedgeâ, âlinear_rampâ, âmaximumâ, âmeanâ,âmedianâ,âminimumâ, âreflectâ, âsymmetricâ, âwrapâ, âemptyâ, <function>