在城市声音数据集的一个声音文件上使用以下代码时,

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


有人知道我可以解决这个问题吗?

最佳答案

我最近也遇到了这个问题。 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具有INFNaN或类似的东西,python将引发上面的异常。只需检查上面使用的numpy变量并修改其无限部分即可。

希望对您有帮助。

关于python-3.x - ParameterError:音频缓冲区不是到处都是有限的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51906973/

10-12 19:49