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() 期间将样本大小指定为音频文件的原始大小
两件事:
- 您似乎在使用 Homebrew
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 来解决同样的问题。
我正在尝试使用 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() 期间将样本大小指定为音频文件的原始大小
两件事:
- 您似乎在使用 Homebrew
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 来解决同样的问题。