音频读取错误: 'librosa' 中没有后端

8
import librosa
import librosa.display
import IPython.display
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import matplotlib.font_manager as fm

audio_path = 'rec.wav'
y, sr = librosa.load(audio_path)

我试图将音频文件加载到librosa中。 所以我写了这样的代码。 但是我得到了错误“文件包含未知格式的数据”,“文件包含未知格式的数据”。

我在谷歌上搜索并被告知安装ffmpeg。 所以我安装了ffmpeg,但仍然出现错误。

问题出在哪里? (我猜测编码可能有问题……)

所有错误消息:

Traceback (most recent call last):
  File "C:\Users\****\AppData\Local\Programs\Python\Python36\lib\site-packages\librosa\core\audio.py", line 129, in load
    with sf.SoundFile(path) as sf_desc:
  File "C:\Users\****\AppData\Local\Programs\Python\Python36\lib\site-packages\soundfile.py", line 629, in __init__
    self._file = self._open(file, mode_int, closefd)
  File "C:\Users\****\AppData\Local\Programs\Python\Python36\lib\site-packages\soundfile.py", line 1184, in _open
    "Error opening {0!r}: ".format(self.name))
  File "C:\Users\****\AppData\Local\Programs\Python\Python36\lib\site-packages\soundfile.py", line 1357, in _error_check
    raise RuntimeError(prefix + _ffi.string(err_str).decode('utf-8', 'replace'))
RuntimeError: Error opening 'rec.mp3': File contains data in an unknown format.

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:/Users/****/PycharmProjects/pitch_project_/pitdetec.py", line 12, in <module>
    y, sr = librosa.load(audio_path)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python36\lib\site-packages\librosa\core\audio.py", line 147, in load
    y, sr_native = __audioread_load(path, offset, duration, dtype)
  File "C:\Users\****\AppData\Local\Programs\Python\Python36\lib\site-packages\librosa\core\audio.py", line 171, in __audioread_load
    with audioread.audio_open(path) as input_file:
  File "C:\Users\****\AppData\Local\Programs\Python\Python36\lib\site-packages\audioread\__init__.py", line 116, in audio_open
    raise NoBackendError()
audioread.exceptions.NoBackendError 

尝试:

audio_path = 'C:/Users/ddolcju/PycharmProjects/pitch_project/rec.mp3'

我发现通过miniconda安装librosa可以获得最佳结果,并且通常避免了缺少库的问题。 - Hendrik
谢谢,但问题还没有解决。 - kimhanuu
6个回答

10

你需要检查以下几个问题:

  1. librosa 无法直接读取mp3文件,因此它会尝试使用 audioread 库。

  2. Audioread 尝试使用许多不同的可能已安装或未安装的库。其中之一是 ffmpeg

  3. 然而,它是通过“命令行界面”使用 FFmpeg。我认为这就是 pip 安装 FFmpeg 失败的原因。它需要 ffmpeg.exe 文件。

  4. 您可以从这里下载 ffmpeg 安装程序。

  5. 安装完成后,请确保您可以从命令行启动 ffmpeg(输入 ffmpeg -h)。您可能需要将安装文件夹的路径(例如 c:\ffmpeg\bin)添加到Windows路径中。

  6. 最后,请确保重新启动您的IDE。在重置之前,Visual Studio Code可能无法识别新的路径。


6

在Ubuntu中,我通过以下命令解决了这个问题。

sudo apt update
sudo apt install ffmpeg

pip install ffmpeg 对我没有起作用


非常感谢您。在Ubuntu Ubuntu 22.04.1 LTS x86_64上安装ffmpeg确实为我解决了这个问题。 - Iran R. Roman

2

我在 Windows 10 上遇到了同样的问题,在安装 ffmpeg 并将其配置到 PATH 后,问题得以解决。需要重新启动 Python 会话。


2
我假设你已经解决了问题,但如果其他人也遇到了这个问题:
我安装了ffmpeg(以下代码),它可以正常工作。
pip install ffmpeg

0

0
我也遇到了这个问题,问题在于我只下载了部分目标.wav文件,因此它是损坏的。一旦我重新下载文件并再次尝试,它就可以正常工作了。在我的情况下,错误有点误导人,因为后端是可用和工作的。因此,如果这里的建议都不起作用,请尝试在音乐播放器中加载您的目标文件以确认其真实性。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接