我可以做什么:
目前,我能够为给定文件夹中的所有文件生成mfcc,并按如下方式保存:
def gen_features(in_path, out_path):
src = in_path + '/'
output_path = out_path + '/'
sr = 22050
path_to_audios = [os.path.join(src, f) for f in os.listdir(src)]
for audio in path_to_audios:
audio_data = librosa.load(audio_path, sr=22050)[0] # getting y
mfcc_feature_list = librosa.feature.mfcc(y=audio_data,sr=sr) # create mfcc features
np.savetxt(blah blahblah , mfcc_feature_list, delimiter ="\t")
gen_features('/home/data','home/data/features')
难度:
我输入的录音很长,每次至少3-4个小时。
这个程序非常低效,因为np.savetxt
之后的文件大小变得非常大~1.5MB txt文件1分钟的音频。我打算将mfcc与未来的更多功能结合起来。因此保存的文件文本大小将会爆炸。我希望将它保持在较小的5分钟块以便于处理。
我想做什么:
再向gen_features添加一个参数len
,这必须指定一次要处理的音频长度。
因此,如果输入音频abc.mp3
长达13分钟,我指定len = 5
意味着5分钟,
然后应该为[0.0,5.0] [5.0,10.0]和[10.0,13.0]计算mfcc,并且应该保存它们
作为
mfcc_filename_chunk_1.csv
mfcc_filename_chunk_2.csv
mfcc_filename_chunk_3.csv
像这样我想对该目录中的所有文件进行此操作 我想用librosa来做到这一点。
我无法获得有关如何继续的任何想法。
更棒的事情是,在重叠的时间间隔内计算,例如,如果len =5
通过,
然后
chunk one should be over [0.0,5.1]
chunk two should be over [5.0,10.1]
chunk three should be over [10.0,13.0]