audio_analyzer / io_utils.py
Mr7Explorer's picture
Update io_utils.py
cbff2dd verified
raw
history blame contribute delete
831 Bytes
import soundfile as sf
import librosa
import numpy as np
def read_audio_info(path):
"""Read audio file metadata using soundfile.info"""
info = sf.info(path)
return {
"samplerate": int(info.samplerate),
"channels": int(info.channels),
"frames": int(info.frames),
"subtype": info.subtype,
"format": info.format,
"duration": float(info.frames) / info.samplerate if info.frames else 0.0
}
def load_audio_mono(path):
"""
Always load safely as mono using Librosa.
This helper keeps the original logic untouched.
"""
try:
y, sr = librosa.load(path, sr=None, mono=True)
if np.isnan(y).any():
y = np.nan_to_num(y)
return y, sr
except Exception as e:
raise RuntimeError(f"Audio loading failed: {str(e)}")