Я хочу поместить ярлык и функцию каждого аудио в список 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