我能做什么:
目前我能够为给定文件夹中的所有文件生成 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]