【问题标题】:librosa.load: file not found error on loading a filelibrosa.load:加载文件时找不到文件错误
【发布时间】:2019-05-21 21:55:02
【问题描述】:

我正在尝试使用 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'

【问题讨论】:

    标签: python python-3.x avconv librosa


    【解决方案1】:

    两件事:

    1. 看起来你正在使用Homebrew
    2. avconv 不在您的路径中

    假设您从未安装过它,您应该能够通过安装它来解决这个问题。 IE。运行:

    $ brew install libav
    

    (见here

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

    也就是说,使用 Homebrew 安装的系统范围的 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.

    【讨论】:

    • 安装 avcon 成功。您的意思是在系统上安装python并直接使用是一种不好的做法吗?而是为不同的项目使用虚拟环境来安装不同的依赖项?谢谢你的解决方案。
    • 正是——这就是我的建议。
    【解决方案2】:

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

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

    【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我必须安装 FFMPEG 来解决这个问题。你可以按照链接 https://www.wikihow.com/Install-FFmpeg-on-Windows 来解决这个问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 2019-09-08
        • 2021-06-02
        • 1970-01-01
        • 2021-12-09
        相关资源
        最近更新 更多