amuse / slicer_module.py
alppo's picture
fix on slice overwrite on slicer module
421323e
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')