|
import ffmpeg |
|
import numpy as np |
|
import requests |
|
import logging |
|
import wave |
|
import librosa |
|
|
|
def load_audio(file_path, sr): |
|
try: |
|
with wave.open(file_path, 'rb') as audio_file: |
|
channels = audio_file.getnchannels() |
|
sample_width = audio_file.getsampwidth() |
|
frame_rate = audio_file.getframerate() |
|
frames = audio_file.readframes(audio_file.getnframes()) |
|
|
|
audio_data = np.frombuffer(frames, dtype=np.int16) |
|
audio_data = audio_data.astype(np.float32) / np.iinfo(np.int16).max |
|
|
|
|
|
if frame_rate != sr: |
|
audio_data = librosa.resample(audio_data, orig_sr=frame_rate, target_sr=sr) |
|
|
|
|
|
|
|
|
|
except Exception as e: |
|
raise RuntimeError(f"Failed to load audio: {e}") |
|
|
|
return audio_data |
|
|
|
|
|
|
|
|
|
|
|
|
|
|