Aud2Stm2Mdi / validators.py
eyov's picture
Upload 6 files
cd61b07 verified
import os
import logging
import torchaudio
from typing import Tuple
logger = logging.getLogger(__name__)
class AudioValidator:
SUPPORTED_FORMATS = ['.mp3', '.wav', '.flac']
MAX_FILE_SIZE = 30 * 1024 * 1024 # 30MB
@staticmethod
def validate_audio_file(file_path: str) -> Tuple[bool, str]:
try:
if not os.path.exists(file_path):
return False, "File does not exist"
file_size = os.path.getsize(file_path)
if file_size > AudioValidator.MAX_FILE_SIZE:
return False, f"File too large. Maximum size: {AudioValidator.MAX_FILE_SIZE // 1024 // 1024}MB"
file_ext = os.path.splitext(file_path)[1].lower()
if file_ext not in AudioValidator.SUPPORTED_FORMATS:
return False, f"Unsupported format. Supported formats: {', '.join(AudioValidator.SUPPORTED_FORMATS)}"
# Validate audio file integrity
try:
waveform, sample_rate = torchaudio.load(file_path)
if sample_rate < 8000 or sample_rate > 48000:
return False, "Invalid sample rate"
except Exception as e:
return False, f"Invalid audio file: {str(e)}"
return True, "Valid audio file"
except Exception as e:
logger.error(f"Error validating audio file: {str(e)}")
return False, str(e)