微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

librosa.feature.delta() 内部 None 的第 4 个参数中的非法值

如何解决librosa.feature.delta() 内部 None 的第 4 个参数中的非法值

我正在使用 python 3.5 处理 .wav 信号并尝试提取 mfcc、mfcc delta、mfcc delta-deltas 和其他信号特征。但是只有 mfcc delta 会引发错误

Traceback (most recent call last):
    mfcc_delta = librosa.feature.delta(mfcc)
  File "C:\Users\hp\AppData\Local\Programs\Python\python35\lib\site-packages\librosa\feature\utils.py",line 116,in delta
    **kwargs)
  File "C:\Users\hp\AppData\Local\Programs\Python\python35\lib\site-packages\scipy\signal\_savitzky_golay.py",line 337,in savgol_filter
    coeffs = savgol_coeffs(window_length,polyorder,deriv=deriv,delta=delta)
  File "C:\Users\hp\AppData\Local\Programs\Python\python35\lib\site-packages\scipy\signal\_savitzky_golay.py",line 139,in savgol_coeffs
    coeffs,_,_ = lstsq(A,y)
  File "C:\Users\hp\AppData\Local\Programs\Python\python35\lib\site-packages\scipy\linalg\basic.py",line 1226,in lstsq
    % (-info,lapack_driver))
ValueError: illegal value in 4-th argument of internal None

我正在处理以下代码

import librosa
import numpy as np
import librosa
from scipy import signal
import scipy.stats

def preprocess_cough(x,fs,cutoff = 6000,normalize = True,filter_ = True,downsample = True): 
    #Preprocess Data
    if len(x.shape)>1:
        x = np.mean(x,axis=1)                          # Convert to mono
    if normalize:
        x = x/(np.max(np.abs(x))+1e-17)                # norm to range between -1 to 1
    if filter_:
        b,a = butter(4,fs_downsample/fs,btype='lowpass') # 4th order butter lowpass filter
        x = filtfilt(b,a,x)
    if downsample:
        x = signal.decimate(x,int(fs/fs_downsample)) # Downsample for anti-aliasing
    
    fs_new = fs_downsample

    return np.float32(x),fs_new

audio_data = 'F:/test/'
files = librosa.util.find_files(audio_data,ext=['wav'])
x,fs = librosa.load(myFile,sr=48000)
arr,f = preprocess_cough(x,fs)
mfcc = librosa.feature.mfcc(y=arr,sr=f,n_mfcc=13)
mfcc_delta = librosa.feature.delta(mfcc)
mfcc_delta2 = librosa.feature.delta(mfcc,order=2)

当我删除 mffcs 计算并计算其他 wav 信号特征时,错误不会再次出现。此外,我尝试删除 n_mfcc=13 参数,但错误仍然存​​在。

输出样本和 mfcc 变量的形状

[-3.86701782e+02 -4.14421021e+02 -4.67373749e+02 -4.76989105e+02
  -4.23713501e+02 -3.71329285e+02 -3.47003693e+02 -3.19309082e+02
  -3.29547089e+02 -3.32584625e+02 -2.78399109e+02 -2.43284348e+02
  -2.47878128e+02 -2.59308533e+02 -2.71102844e+02 -2.87314514e+02
  -2.58869965e+02 -6.01125565e+01  1.66160011e+01 -8.58060551e+00
  -8.49179382e+01 -9.29880371e+01 -9.96001358e+01 -1.04499428e+02
  -3.65511665e+01 -3.82106819e+01 -8.69802475e+01 -1.22267052e+02
  -1.70187592e+02 -2.35996841e+02 -2.96493286e+02 -3.39086365e+02
  -3.59514771e+02]

形状是(13,33) 任何人都可以帮助我吗? 提前致谢

解决方法

this question 中提出的问题有些相似,该问题与 librosa 遵从 scipy 的底层数值运算的复杂性有关。 SciPy 取决于正在安装的 LAPACK 库。所以一开始我会检查 if you have it installed

此外,您可能希望逐步调试脚本以进入 SciPy 并检查从 librosa.feature.delta 渗透到 scipy.signal.savgol_filter 的实际值,这可能会在您交叉时告诉您原因-用 documentation 检查它们。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。