Как разделить аудиофайлы на фрагменты по 60 секунд, читая из нескольких каталогов и сохранить обратно в разных каталогах с одинаковым именем - PullRequest
0 голосов
/ 22 марта 2020

Как разбить файлы на куски по 60 секунд, считывая из нескольких каталогов и сохраняя обратно в разных каталогах с тем же именем исходного каталога и создавая папку с файл, в котором у вас есть разные чанки.

Итак, у меня есть этот код, где l oop входит в каталог меток записей и проверяет там файлы .mp3, он должен разбивать каждый файл на 60 секунд, создайте папку с исходным именем файла и затем сохраните куски там соответственно для каждой метки записи.

main_dir = '/mnt/kora-asplab/electronic-music- 
dataset/archivesunzipped/'
countlabel = 0
count = 0
nfiles = min(labels_dict["number_songs"])
fs = 44100
sample_60s = fs*60


# Start iteration through labels folders
for l in labels_dict['name']:

    if not os.path.exists(s_60_folder +'/'+l):
        os.mkdir(s_60_folder +'/'+l)
       print("Directory ", s_60_folder +'/'+l, " Created ")
else:
    print("Directory ", s_60_folder +'/'+l, " already exists")

count = 0    
for root, dirs, files in os.walk (main_dir+l):
    # Check if counter of files per label and reset
    # Iterate over files in label l
    for file in files: 
        if not file.startswith('.') and file.endswith('.mp3'):                                  
            if count <= nfiles:
                count += 1
                # Reading audio file 
                x = ess.MonoLoader(filename=root+'/'+file, 
sampleRate=fs)()

                # Append audio file choppend in a list
                X = []
                for i in range(x.size//sample_60s):

X.append(x[i*sample_60s:i*sample_60s+sample_60s])

                #write an audio file 
                y = ess.MonoWriter(filename=root+'/'+filename, 
sampleRate=fs, bitrate =320, format ='mp3')(x)


                count_chunk = 0

                # Create a folder for each song
                if not os.path.exists(s_60_folder+'/'+l+'/'+ file):
                    os.mkdir(s_60_folder+'/'+l+'/'+file)
                    print("Directory ", s_60_folder+'/'+l+'/'+file, 
" Created ")
                else:
                    print("Directory ", s_60_folder+'/'+l+'/'+file, 
" already exists")

                for x in X:
                    count_chunk+=1;                               

                    np.save(s_60_folder+'/'+l+'/'+file+'/' + 
str(count_chunk), x )                               

                if count % 20 == 0:
                    print(count, "files processed, current file: 
",file)                    


print('Files processed ', count)

Благодарим вас за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...