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

使用librosa绘图时调整坐标轴字号及解决音频时长显示不全问题

问题1:音频仅显示1.5秒的修复方案

该问题核心原因是提取MFCC特征时没有传入实际使用的16000Hz采样率参数,librosa默认按22050Hz的采样率计算时间轴:2秒16000Hz采样的音频总共有32000个采样点,按22050Hz换算时长仅约1.45秒,刚好匹配你看到的1.5秒显示结果。
同时可以显式指定x轴范围固定为0-2秒,避免共享x轴时出现异常截断。

问题2:坐标轴字号调整方案

你当前设置的全局字号为1过小,可直接调整全局字号参数,也可以单独给每个子图的坐标轴刻度设置独立字号,适配布局需求。

修改后可用的完整代码如下:

import matplotlib.pyplot as plt
import librosa
import librosa.display
import glob

# 修正原代码多余缩进
path = glob.glob('E:/Python_On_All_Dataset/Four emotion_for plot/*.wav') 

# 全局字号按需调整数值即可
plt.rcParams['font.size'] = 10
# 可调整画布大小避免内容拥挤
fig, ax = plt.subplots(nrows=7, ncols=3, sharex=True, figsize=(15, 12))

for i in range(7):
    # 显式指定加载2秒音频,避免部分音频长度不一致
    y, sr = librosa.load(path[i], sr=16000, duration=2)
    # 绘制波形图,旧版本librosa可将waveshow改回waveplot
    librosa.display.waveshow(y, sr=sr, ax=ax[i, 0])
    # 单独调整当前子图坐标轴刻度字号
    ax[i,0].tick_params(axis='both', labelsize=8)
    # 提取MFCC时传入实际采样率参数,修正时间轴计算错误
    mfcc = librosa.feature.mfcc(y=y, sr=sr) 
    librosa.display.specshow(mfcc, x_axis='time', ax=ax[i, 1], cmap='viridis')
    ax[i,1].tick_params(axis='both', labelsize=8)
    # 提取梅尔频谱
    S = librosa.feature.melspectrogram(y=y, sr=sr)
    librosa.display.specshow(librosa.power_to_db(S), x_axis='time', y_axis='log', ax=ax[i, 2], cmap='viridis')
    ax[i,2].tick_params(axis='both', labelsize=8)
    # 统一锁定x轴范围为0-2秒,确保显示完整
    ax[i,0].set_xlim(0, 2)

# 自动调整子图间距避免内容重叠
plt.tight_layout()
plt.show()

内容的提问来源于stack exchange,提问作者KRISHNA CHAUHAN

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 17:39:03