1

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

4

0 回答 0