import librosa import numpy as np TARGET_SR = 16000 MAX_LENGTH = 80000 def load_audio(file_path): audio, sr = librosa.load(file_path, sr=TARGET_SR) return audio def normalize_audio(audio): max_val = np.max(np.abs(audio)) if max_val == 0: return audio return audio / max_val def trim_silence(audio): trimmed_audio, _ = librosa.effects.trim(audio) return trimmed_audio def pad_or_truncate(audio): if len(audio) > MAX_LENGTH: audio = audio[:MAX_LENGTH] else: padding = MAX_LENGTH - len(audio) audio = np.pad(audio, (0, padding)) return audio def preprocess_audio(file_path): audio = load_audio(file_path) audio = normalize_audio(audio) audio = trim_silence(audio) audio = pad_or_truncate(audio) return audio