通过固定块计算音频文件的mfcc并单独保存

时间:2018-02-13 22:10:47

标签: python numpy librosa

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

0 个答案:

没有答案