File size: 1,252 Bytes
0cc41af
 
 
 
 
 
 
 
 
 
421323e
 
 
 
 
 
 
0cc41af
 
 
 
 
 
421323e
0cc41af
 
 
 
 
421323e
0cc41af
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import os
import librosa
import soundfile as sf

def get_slices(file_path, sample_rate=44100, slice_duration=10, output_dir='slices'):
    os.makedirs(output_dir, exist_ok=True)

    audio, sr = librosa.load(file_path, sr=sample_rate)
    slice_samples = slice_duration * sample_rate

    existing_slices = [f for f in os.listdir(output_dir) if f.endswith('.wav')]
    if existing_slices:
        max_index = max(int(f.split('_')[1].split('.')[0]) for f in existing_slices)
        start_index = max_index + 1
    else:
        start_index = 0

    num_slices = len(audio) // slice_samples
    for i in range(num_slices):
        start_sample = i * slice_samples
        end_sample = start_sample + slice_samples
        audio_slice = audio[start_sample:end_sample]

        output_file = os.path.join(output_dir, f'slice_{start_index + i:04d}.wav')
        sf.write(output_file, audio_slice, sample_rate)

    if len(audio) % slice_samples != 0:
        start_sample = num_slices * slice_samples
        audio_slice = audio[start_sample:]
        output_file = os.path.join(output_dir, f'slice_{start_index + num_slices:04d}.wav')
        sf.write(output_file, audio_slice, sample_rate)

if __name__ == "__main__":
    get_slices('rock_song_009.wav')