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

如何用Librosa对非音频IMF信号提取MFCC?解决空白图与警告问题

解决MFCC处理EMD信号时的空白图像与滤波器警告问题

我尝试用MFCC分析经验模态分解(EMD)得到的信号(形状为(165,)的浮点数组imfs['0']),但运行代码后出现滤波器空值警告,生成的图像也是空白的,调整参数后问题依旧。

原始代码

import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
    
imfs = pd.read_csv('/B0005_soh_EMD.csv')
data = pd.read_csv('/feat_B0005.csv')

y = imfs['0'].to_numpy()
#print(y.shape)

mfccs = librosa.feature.mfcc(y=y,  n_fft = 10)


#print(y.shape)
#print(sr)
#print(mfccs)

plt.figure(figsize=(10, 4))
librosa.display.specshow(mfccs), 
plt.colorbar()
plt.title('MFCC')
plt.ylabel('MFCC Coefficient')
plt.show()

运行警告

/usr/local/lib/python3.10/dist-packages/librosa/feature/spectral.py:2143: UserWarning: Empty filters detected in mel frequency basis. Some channels will produce empty responses. Try increasing your sampling rate (and fmax) or reducing n_mels.


问题根源

  1. 采样率缺失:librosa默认使用22050Hz音频采样率,但你的EMD信号属于非音频时序数据,采样率不匹配会导致频谱计算逻辑混乱。
  2. FFT参数不合理:n_fft=10远小于信号长度(165),梅尔滤波器组无法覆盖有效频率范围,触发空滤波器警告。
  3. 维度与渲染不匹配:MFCC默认输出维度为(n_mfcc, time_steps),未转置直接传入specshow会导致时间轴显示异常,最终出现空白图像。

修正方案

1. 核心参数调整

  • 指定与原始信号匹配的采样率(比如你的EMD信号来自100Hz采样的原始数据,就设置sr=100)。
  • 调整n_fft为大于信号长度1/2的数值(比如n_fft=64),保证频谱计算有效;hop_length设为n_fft//2平衡时间与频率分辨率。
  • 根据采样率减少n_mels数量,避免空滤波器(比如100Hz采样下设置n_mels=10)。

2. 修正后的代码

import librosa
import librosa.display
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
    
imfs = pd.read_csv('/B0005_soh_EMD.csv')
data = pd.read_csv('/feat_B0005.csv')

y = imfs['0'].to_numpy()
# 替换为你的原始信号实际采样率
sr = 100

mfccs = librosa.feature.mfcc(
    y=y, 
    sr=sr,
    n_fft=64,
    hop_length=32,
    n_mels=10,
    n_mfcc=13
)
# 转置MFCC,让时间轴对应x轴
mfccs = mfccs.T

plt.figure(figsize=(10, 4))
librosa.display.specshow(
    mfccs, 
    sr=sr, 
    hop_length=32,
    x_axis='time',
    y_axis='mfcc'
)
plt.colorbar()
plt.title('MFCC of EMD IMF')
plt.ylabel('MFCC Coefficient')
plt.xlabel('Time')
plt.show()

3. MFCC实用性说明

MFCC虽起源于音频领域,但在机械振动、电池健康监测等非音频时序场景中也能有效提取频谱特征,只要参数匹配信号特性,可用于后续分类、回归等任务。

内容的提问来源于stack exchange,提问作者Lloyd Byrne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 16:48:23