librosa spectral_centroid报错:需0个位置参数却传入1个位置参数+1个关键字参数
解决Librosa spectral_centroid() TypeError问题
问题原因
Librosa 0.10.0及以上版本重构了特征提取API,librosa.feature.spectral_centroid()不再支持位置参数传递音频数据,必须通过关键字参数指定输入音频。你的代码沿用了旧版本的调用方式,因此触发类型错误。
解决方案
方案1:改用关键字参数传递音频数据
将原代码中的位置参数x改为y=x,适配新版本API要求:
x, sr = librosa.load('fyp/MER/Q3/MT0031951901.mp3') # 用y=指定音频数组,sr保持关键字参数 spectral_centroids = librosa.feature.spectral_centroid(y=x, sr=sr)[0] spectral_centroids.shape
方案2:使用新的FeatureExtractor接口(推荐)
Librosa新版本推荐使用统一的特征提取器接口,写法更规范:
from librosa.feature import SpectralCentroid x, sr = librosa.load('fyp/MER/Q3/MT0031951901.mp3') extractor = SpectralCentroid(sr=sr) spectral_centroids = extractor(y=x)[0] spectral_centroids.shape
方案3:降级到旧版本(不推荐)
如果暂时不想修改代码,可以降级到0.9.2版本(最后一个支持旧API的稳定版):
pip install librosa==0.9.2
验证
修改代码后重新运行,若不再抛出TypeError,且能正常输出spectral_centroids的形状,说明问题解决。
内容的提问来源于stack exchange,提问作者Jésica
相关产品推荐
相关产品推荐

