python 在Librosa谱图中缩放y轴

0md85ypi  于 2023-02-15  发布在  Python
关注(0)|答案(1)|浏览(136)

我使用librosa.display.specshow显示CQT的结果,如下所示:

sr = 22050 
cqt = librosa.cqt(y, sr = sr)
librosa.display.specshow(abs(cqt), sr = sr, x_axis = "time", y_axis = "cqt_note")

输出如下:

但是,我希望y轴的范围仅为C4到C5,并且最好显示该八度音阶内的音符,以便更容易地查看正在演奏的音符。查看**documentation**后,我尝试使用:

librosa.display.specshow(abs(cqt), sr = sr, x_axis = "time", y_axis = "cqt_note", fmin = librosa.note_to_hz("C4"), fmax = librosa.note_to_hz("C5"))

但这会打印以下警告:
用户警告:频率轴超过奈奎斯特频率,你是否记得在specshow中设置所有谱图参数?
并且仅示出了从C4开始并到达C11的y偏移图(具有与之前相同的缩放比例):

是否可以缩放y轴,如果可以,我该如何缩放?

ukqbszuj

ukqbszuj1#

我意识到这可以通过添加bins_per_octave作为参数来解决,即:

librosa.display.specshow(abs(cqt), sr = sr, 
x_axis = "time", y_axis = "cqt_note", 
fmin = librosa.note_to_hz("C4"), 
fmax = librosa.note_to_hz("C5"), 
bins_per_octave = 80)

输出:

相关问题