CoolFace
Apppublic

NhanNguyen1309/audio-separation-api

sourceHugging Faceupdated 4mo agoView on Hugging Face
0likes
separation_validation.py22 linesDownload Raw Back to app
1from __future__ import annotations2 3from pathlib import Path4 5from app.config import settings6from app.errors import ApiError7from app.validation import ensure_decodable, probe_duration_seconds8 9 10def validate_separation_outputs(output_files: dict[str, Path], input_duration_sec: float) -> dict[str, Path]:11    for stem_name, output_path in output_files.items():12        if not output_path.is_file():13            raise ApiError(code="separation_output_invalid", message=f"Missing expected output stem: {stem_name}.wav", status_code=500)14        if output_path.stat().st_size < settings.separation_min_output_bytes:15            raise ApiError(code="separation_output_invalid", message=f"Output stem is too small: {stem_name}.wav", status_code=500)16    for stem_name, output_path in output_files.items():17        ensure_decodable(output_path)18        output_duration_sec = probe_duration_seconds(output_path)19        if abs(output_duration_sec - input_duration_sec) > settings.separation_duration_tolerance_seconds:20            raise ApiError(code="separation_output_invalid", message=f"Output stem duration mismatch: {stem_name}.wav", status_code=500)21    return output_files22