Как разбить аудио файлы на куски по 60 секунд, считывая из нескольких каталогов и сохраняя обратно в разных каталогах с тем же именем исходного каталога и создавая папку с mp3 файл, в котором у вас есть разные чанки.
Итак, у меня есть этот код, где 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)
Благодарим вас за помощь!