You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.23 10:49:53