在Python中读取文件时出现“无后端错误”

时间:2019-11-12 00:17:47

标签: python-3.6 librosa

我正在尝试对一堆声音文件执行STFT,但出现此错误。 我尝试执行STFT的文件的路径正确,但是仍然出现此错误。

import librosa
import io
import numpy as np
import tensorflow as tf
import os
import glob


path_te = "C:\Users\aanum\OneDrive\Documents\Deep Learning\timit-homework\te"
files = os.listdir(path_te)
for file in sorted(files):
    if file.startswith("tex"):

        file_path = path_te2 + "/" + file 

        #file_path = 'r' + "'" + str(file_path) + "'"
        print(file_path)
        st, sr=librosa.load(file_path, sr=None)

输出:

C:/Users/aanum/OneDrive/Documents/Deep Learning/timit-homework/te/tex0000.wav
---------------------------------------------------------------------------
NoBackendError                            Traceback (most recent call last)
<ipython-input-54-4df25548d204> in <module>
      7         #file_path = 'r' + "'" + str(file_path) + "'"
      8         print(file_path)
----> 9         st, sr=librosa.load(file_path, sr=None)
     10         X=librosa.stft(st, n_fft=1024, hop_length=512)
     11         X_abs = abs(X)

~\Anaconda3\envs\DeepLearning\lib\site-packages\librosa\core\audio.py in load(path, sr, mono, offset, duration, dtype, res_type)
    117 
    118     y = []
--> 119     with audioread.audio_open(os.path.realpath(path)) as input_file:
    120         sr_native = input_file.samplerate
    121         n_channels = input_file.channels

~\Anaconda3\envs\DeepLearning\lib\site-packages\audioread\__init__.py in audio_open(path, backends)
    114 
    115     # All backends failed!
--> 116     raise NoBackendError()

NoBackendError

谁能告诉我为什么出现此错误?

3 个答案:

答案 0 :(得分:1)

当Librosa无法加载文件时,可能会发生此错误,主要是因为librosa无法读取文件格式(例如mp3格式),并且它试图查找其他后端,例如ffmpeg。因此,安装ffmpeg可能有助于解决此问题。另外,在某些情况下,根据所使用的操作系统,可能必须将ffmpeg添加到操作系统路径。如果问题实际上是由于文件格式引起的,则正确安装ffmpeg可以解决此问题。

答案 1 :(得分:1)

确保您的.wav文件未损坏。可以使用音频文件阅读器(可以读取WAV文件)打开文件吗?如果不是,则文件已损坏。如果您从开源数据集中下载了音频文件,则在您手动解压缩文件夹时,它们可能会损坏。我建议您再次下载数据集,并使用命令行工具解压缩它。

答案 2 :(得分:0)

就在你写完这行之后:

import usb.core 

你需要写

import usb.backend.libusb1

希望对你有帮助,如果不行就告诉我!