librosa.load: 加载文件时找不到文件错误

librosa.load: file not found error on loading a file

我正在尝试使用 librosa 分析 .wav 文件。我首先创建了一个列表,其中存储了它检测到的所有 .wav 文件的名称。

data_dir = '/Users/raghav/Desktop/FSU/summer research'
audio_file = glob(data_dir + '/*.wav')

我可以看到列表中所有文件的名称'audio_file'。但是当我加载任何音频文件时,它会给我找不到文件的错误。

audio, sfreq = lr.load(audio_file[0])

错误输出:

Traceback (most recent call last):
  File "read_audio.py", line 10, in <module>
    audio, sfreq = lr.load(audio_file[1])
  File "/usr/local/lib/python3.7/site-packages/librosa/core/audio.py", line 119, in load
    with audioread.audio_open(os.path.realpath(path)) as input_file:    
  File "/usr/local/lib/python3.7/site-packages/audioread/__init__.py", line 107, in audio_open
    backends = available_backends()
  File "/usr/local/lib/python3.7/site-packages/audioread/__init__.py", line 86, in available_backends
    if ffdec.available():
  File "/usr/local/lib/python3.7/site-packages/audioread/ffdec.py", line 108, in available
    creationflags=PROC_FLAGS,
  File "/usr/local/lib/python3.7/site-packages/audioread/ffdec.py", line 94, in popen_multiple
    return subprocess.Popen(cmd, *args, **kwargs)
  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 775, in __init__
    restore_signals, start_new_session)
  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/subprocess.py", line 1522, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)

FileNotFoundError: [Errno 2] No such file or directory: 'avconv': 'avconv'

该错误表明 librosa 无法找到 FFMPEG 可执行文件,avconv 就是一个例子。

当不转换不同的采样率时,通常不需要 FFMPEG。您可以尝试在 load() 期间将样本大小指定为音频文件的原始大小

两件事:

  1. 您似乎在使用 Homebrew
  2. avconv 不在您的路径中

假设你从来没有安装过它,你应该可以通过简单地安装它来解决这个问题。 IE。 运行:

$ brew install libav

(参见 here

如果 avconv 已经安装,您可能需要查看您的 PATH 环境并检查它是否在路径中。

也就是说,使用 Homebrew 安装的 system-wide Python 是个坏主意,因为它不会让您快速更改 Python 版本和依赖集。这一切都在几周内变得一团糟。

一个(多个)解决方案是使用 miniconda。它可以让您快速激活 Python 具有定义的依赖集的解释器。

所以要真正解决这个问题,我建议安装 miniconda 并创建一个普通的 Python 3.6 环境:

$ conda create -n librosa_env python=3.6

激活环境:

$ source activate librosa_env

然后添加 conda-forge 频道(一个包含许多库的存储库,如 librosa):

$ conda config --add channels conda-forge

然后安装librosa:

$ conda install librosa

通过这种方式安装 librosa,conda 应该处理所有依赖项,包括。 libav.

audioread 升级到 2.1.8 为我解决了这个问题。可以在此处检查错误修复:https://github.com/beetbox/audioread/commit/8c4e236fda38ce1d1f6dafc4715074a790e62849

我不得不安装 FFMPEG 来解决这个问题。你可以按照 link https://www.wikihow.com/Install-FFmpeg-on-Windows 来解决同样的问题。