def prepare_data(df, config, data_dir):
X = np.empty(shape=(df.shape[0], config.dim[0], config.dim[1], 1))
input_length = config.audio_length
for i, fname in enumerate(df.index):
file_path = data_dir + fname
data, _ = librosa.core.load(file_path, sr=config.sampling_rate, res_type="kaiser_fast")
# Random offset / Padding
if len(data) > input_length:
max_offset = len(data) - input_length
offset = np.random.randint(max_offset)
data = data[offset:(input_length+offset)]
else:
if input_length > len(data):
max_offset = input_length - len(data)
offset = np.random.randint(max_offset)
else:
offset = 0
data = np.pad(data, (offset, input_length - len(data) - offset), "constant")
data = librosa.feature.mfcc(data, sr=config.sampling_rate, n_mfcc=config.n_mfcc)
data = np.expand_dims(data, axis=-1)
X[i,] = data
return X
我的根目录中有一个音频数据集,执行以下代码时出现“类型错误”,但我不知道如何解决。上面的代码用于从我的数据集中准备数据。当我执行以下代码时,类型错误正在累积:
X_train = prepare_data(train, config, 'datasets/train_curated/')
以下错误描述如下:
TypeError Traceback (most recent call last)
<ipython-input-38-3c6c017b85c7> in <module>
1 get_ipython().run_line_magic('time', '')
----> 2 X_train = prepare_data(train, config, 'datasets/train_curated/')
3 X_test = prepare_data(test, config, 'datasets/test/')
4 y_train = to_categorical(train.label_idx.astype('str'), num_classes=config.n_classes)
<ipython-input-36-0cb95e99049e> in prepare_data(df, config, data_dir)
4 for i, fname in enumerate(df.index):
5 # print(fname)
----> 6 file_path = data_dir + fname + '.wav'
7 data, _ = librosa.core.load(file_path, sr=config.sampling_rate, res_type="kaiser_fast")
8
TypeError: can only concatenate str (not "int") to str
答案 0 :(得分:3)
是的,因为您尝试将字符串和整数连接为file_path = data_dir + fname + '.wav'
,但是fname将是整数值,因此请使用string进行类型转换。
for i, fname in enumerate(df.index):
#print(fname)
file_path = data_dir + str(fname) + '.wav'
data, _ = librosa.core.load(file_path, sr=config.sampling_rate, res_type="kaiser_fast")
答案 1 :(得分:0)
NUMBER