Почему Python `audioread.NoBackendError` - PullRequest
0 голосов
/ 02 июля 2018

Я хочу поместить ярлык и функцию каждого аудио в список labels и batch_features, тогда я получаю audioread.NoBackendError, когда batch_size> 10.

Я понимаю, что это ошибка librosa. но странная вещь, если я аннотирую (#) код labels.append(label), тогда ошибки не произойдет. как это:

# labels.append(label)

Тогда это мой код:

n_classes = 21023
n_steps=432
batch_size = 50
def mfcc_batch_generator(batch_size=50):
    labels = []
    batch_features=[]
    files = os.listdir('/home/cheng/audioset/noVideo/')
    n=len(files)
    for i in range(0,n):
        print(files[i])
        wave,sr=librosa.load(path+files[i])
        mfcc=librosa.feature.mfcc(wave,sr)
        label = dense_to_one_hot(int(os.path.splitext(files[i])[0]),n_classes)
        labels.append(label)
        mfcc = np.pad(mfcc,((0,0),(0,n_steps-len(mfcc[0]))), mode='constant', constant_values=0)
        batch_features.append(np.array(mfcc).T)
        if i>= batch_size:
            yield np.array(batch_features), np.array(labels)
            batch_features = []  # Reset for next batch
            labels = []


def dense_to_one_hot(labels_dense, num_classes=21023):
    return np.eye(num_classes)[labels_dense]

batch=mfcc_batch_generator(batch_size)
x,y=next(batch)

и это моя ошибка:

Traceback (most recent call last):
  File "test.py", line 41, in <module>
    x,y=next(batch)
  File "test.py", line 25, in mfcc_batch_generator
    wave,sr=librosa.load(path+files[i])
  File "/home/cheng/.local/lib/python3.6/site-packages/librosa/core/audio.py", line 112, in load
    with audioread.audio_open(os.path.realpath(path)) as input_file:
  File "/home/cheng/.local/lib/python3.6/site-packages/audioread/__init__.py", line 116, in audio_open
    raise NoBackendError()
audioread.NoBackendError

Мой образец аудио здесь: https://github.com/bravo325806/librosa_sample

1 Ответ

0 голосов
/ 01 декабря 2018

Не уверен, что вы все еще боретесь с этим. В моем случае я использую CentOS 7, и эта ошибка связана с тем, что моя система не установила ffmpeg.

Если вы хотите проверить, установлен ли ffmpeg или нет, попробуйте это в консоли: $ ffmpeg

Просто следуйте этой инструкции и проблема должна быть устранена.

...