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')