# resample .wav source to target sampling rate import logging as log import time import os import librosa import soundfile as sf def resample_file(filename, out_filename, target_rate=int(24e3)): start=time.time() # Load the original audio file audio, rate = librosa.load(filename) if rate == target_rate: # Nothing to do sf.write(out_filename, audio, target_rate) return # Convert the sample rate to 24 kHz resampled_audio = librosa.resample(audio, orig_sr=rate, target_sr=target_rate) # Save the resampled audio as a new .wav file sf.write(out_filename, resampled_audio, target_rate) log.info("Resampling of %s took %s s", os.path.basename(filename), round(time.time() - start, 3)) def resample_array(audio, rate, target_rate=int(24e3)): start=time.time() # Load the original audio file if rate == target_rate: # Nothing to do log.info('audio already at target rate, skipping resample') return audio # Convert the sample rate to target rate resampled_audio = librosa.resample(audio, orig_sr=rate, target_sr=target_rate) # Save the resampled audio as a new .wav file log.info("Resampling took %s s", round(time.time() - start, 3)) return resampled_audio if __name__ == "__main__": import os os.chdir(os.path.dirname(__file__)) file_dir = '../text_to_speech/' resample_file(f'{file_dir}/welcome.wav', f'{file_dir}/welcome_resampled.wav')