在Urban Sound数据集的一个声音文件上使用以下代码时,
s, r = librosa.load(train_filename[7543])
tonnetz = librosa.feature.tonnetz(y = librosa.effects.harmonic(s), sr = r)
我收到以下警告,ParameterError
,
E:\installed_python_anaconda\lib\site-packages\librosa\util\utils.py:1467: RuntimeWarning: invalid value encountered in less if np.any(X < 0) or np.any(X_ref < 0):
E:\installed_python_anaconda\lib\site-packages\librosa\util\utils.py:1479: RuntimeWarning: invalid value encountered in maximum Z = np.maximum(X, X_ref).astype(dtype)
E:\installed_python_anaconda\lib\site-packages\librosa\util\utils.py:1480: RuntimeWarning: invalid value encountered in less bad_idx = (Z < np.finfo(dtype).tiny)
ParameterError: Audio buffer is not finite everywhere
有人知道我可以解决这个问题吗?
答案 0 :(得分:0)
我最近也遇到了这个问题。 librosa软件包中的utils.py
具有如下验证功能:
Returns
-------
valid : bool
True if all tests pass
Raises
------
ParameterError
If `y` fails to meet the following criteria:
- `type(y)` is `np.ndarray`
- `y.dtype` is floating-point
- `mono == True` and `y.ndim` is not 1
- `mono == False` and `y.ndim` is not 1 or 2
- `np.isfinite(y).all()` is not True
和np.isfinite(y).all()
是验证之一。因此,如果numpy数组y
并非在所有地方都是有限的,这意味着y
具有INF
,NaN
或类似的东西,python将引发上面的异常。只需检查上面使用的numpy变量并修改其无限部分即可。
希望对您有帮助。