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

时间:2019-05-21 21:55:02

标签: python python-3.x avconv librosa

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

4 个答案:

答案 0 :(得分:3)

两件事:

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

假设您从未安装过它,那么应该只需安装即可解决此问题。即运行:

$ 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

答案 1 :(得分:0)

该错误表明librosa无法找到FFMPEG可执行文件,例如avconv

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我必须安装FFMPEG才能解决此问题。您可以按照https://www.wikihow.com/Install-FFmpeg-on-Windows的链接进行操作。