我有一个文件夹存储在我的桌面上,它包含187个音频文件的WAV格式。我想从音频文件中提取特性,我执行了以下提取功能音频的代码,并将这些特性保存在CSV文件中,但是我获得了没有值的excel文件,它只包括每个列的标题和len(音频文件)的输出是0..but,its必须是187。我怎样才能解决这个问题??
from glob import glob
data_dir = './audio featur-extraction\audio-setA/'
audio_files = glob(data_dir + '*.wav')
len(audio_files)
from librosa import feature
import numpy as np
fn_list_i = [
feature.chroma_stft,
feature.spectral_centroid,
feature.spectral_bandwidth,
feature.spectral_rolloff,
]
fn_list_ii = [
feature.zero_crossing_rate
]
def get_feature_vector(y,sr):
feat_vect_i = [ np.mean(funct(y,sr)) for funct in fn_list_i]
feat_vect_ii = [ np.mean(funct(y)) for funct in fn_list_ii]
feature_vector = feat_vect_i + feat_vect_ii
return feature_vector
#build the matrix with normal audios featurized
audios_feat = []
for file in audio_files:
'''
y is the time series array of the audio file, a 1D np.ndarray
sr is the sampling rate, a number
'''
y,sr = librosa.load(file,sr=None)
feature_vector = get_feature_vector(y, sr)
audios_feat.append(feature_vector)
print('.', end= " ")
print(audios_feat)
#.........................
import csv
norm_output = 'normals_00.csv'
header =[
'chroma_stft',
'spectral_centroid',
'spectral_bandwidth',
'spectral_rolloff',
'zero_crossing_rate',
]
#WARNING : this overwrites the file each time. Be aware of this because feature extraction step takes time.
with open(norm_output,'+w') as f:
csv_writer = csv.writer(f, delimiter = ',')
csv_writer.writerow(header)
csv_writer.writerows(audios_feat)发布于 2021-07-13 18:49:58
audio_files = glob(data_dir + '/*.wav')它通过在星号前加斜杠来解决。
发布于 2021-07-11 14:52:14
错误在这一行中:
data_dir = './audio featur-extraction\audio-setA/'是额外的斜杠。用反斜杠代替它(就像在路径的其余部分一样),你就可以继续了。将来:调试您的代码。逐行遍历代码并查找错误。如果具有进程路径的数组的长度为零,则不会计算任何数据。
它应该是
data_dir = r'audio featur-extraction\audio-setA\' # for Windows 或
data_dir = 'audio featur-extraction/audio-setA/' # for Mac / Linux. 更一般地,使用os.path.joinin您的代码
https://stackoverflow.com/questions/68336978
复制相似问题