Librosa频谱图Y轴与频谱滚降线无法对齐的问题咨询
Librosa频谱图Y轴与频谱滚降线无法对齐的问题咨询
我最近在使用Librosa和Matplotlib绘制频谱图时碰到了个头疼的问题:频谱图的Y轴和频谱滚降线始终无法对齐,但Librosa官方文档里的示例图里,滚降线是完全贴合频谱图轴的,我照着示例逻辑写自己的代码却复现不了这个效果。
我的测试参数和代码如下:
import librosa import numpy as np import matplotlib.pyplot as plt # 参数设置 sr = 250000 n_fft = 2048 hop_length=256 win_length = 1024 fmin = 220 # 处理音频(filtered_audio为加载后的音频数组) sftf_spec = librosa.stft(filtered_audio, n_fft=n_fft, hop_length=hop_length) S = np.abs(sftf_spec) # 计算频谱滚降频率 rolloff = librosa.feature.spectral_rolloff( S=S, sr=sr, n_fft=n_fft, hop_length=hop_length, win_length = win_length ) rolloff_min = librosa.feature.spectral_rolloff(S=S, sr=sr, roll_percent=0.15) # 转换为分贝幅度谱 amplitude_spec = librosa.amplitude_to_db(S, ref=np.max) # 绘图 fig, ax = plt.subplots() librosa.display.specshow(amplitude_spec, y_axis='log', x_axis='time', ax=ax) ax.plot(librosa.times_like(rolloff), rolloff[0], label='Roll-off frequency (0.85)') ax.plot(librosa.times_like(rolloff), rolloff_min[0], color='w', label='Roll-off frequency (0.15)') ax.legend(loc='lower right') ax.set(title='log Power spectrogram')
我尝试过在librosa.display.specshow里加上sr=sr参数,但结果还是不对——滚降线的Y轴刻度和频谱图的Y轴刻度完全不匹配,我想要的是滚降线的频率轴能和它基于的频谱图刻度完全一致,就像官方示例那样。
如果需要复现这个问题,可以用任意WAV音频文件替换代码中的filtered_audio即可。
备注:内容来源于stack exchange,提问作者user305883
相关产品推荐
相关产品推荐

