49 lines
1.4 KiB
Python
49 lines
1.4 KiB
Python
# 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')
|