Spaces:
No application file
No application file
| """Application configuration loaded from .env with defaults.""" | |
| from __future__ import annotations | |
| import os | |
| from dataclasses import dataclass, field | |
| from pathlib import Path | |
| from dotenv import load_dotenv | |
| def _load_env() -> None: | |
| """Load .env from project root (or CWD) if it exists.""" | |
| for candidate in (Path(__file__).resolve().parents[2], Path.cwd()): | |
| env_path = candidate / ".env" | |
| if env_path.is_file(): | |
| load_dotenv(env_path) | |
| return | |
| load_dotenv() | |
| _load_env() | |
| class Settings: | |
| """Immutable application settings.""" | |
| output_dir: str = field( | |
| default_factory=lambda: os.getenv("STEMSPLITTER_OUTPUT_DIR", "./output") | |
| ) | |
| model_file_dir: str = field( | |
| default_factory=lambda: os.getenv( | |
| "STEMSPLITTER_MODEL_DIR", "/tmp/audio-separator-models/" | |
| ) | |
| ) | |
| default_2stem_model: str = field( | |
| default_factory=lambda: os.getenv( | |
| "STEMSPLITTER_2STEM_MODEL", | |
| "model_mel_band_roformer_ep_3005_sdr_11.4360.ckpt", | |
| ) | |
| ) | |
| default_4stem_model: str = field( | |
| default_factory=lambda: os.getenv( | |
| "STEMSPLITTER_4STEM_MODEL", "htdemucs_ft.yaml" | |
| ) | |
| ) | |
| output_format: str = field( | |
| default_factory=lambda: os.getenv("STEMSPLITTER_OUTPUT_FORMAT", "WAV") | |
| ) | |
| output_bitrate: str = field( | |
| default_factory=lambda: os.getenv("STEMSPLITTER_OUTPUT_BITRATE", "320k") | |
| ) | |
| sample_rate: int = field( | |
| default_factory=lambda: int(os.getenv("STEMSPLITTER_SAMPLE_RATE", "44100")) | |
| ) | |
| normalization: float = field( | |
| default_factory=lambda: float( | |
| os.getenv("STEMSPLITTER_NORMALIZATION", "0.9") | |
| ) | |
| ) | |
| log_level: str = field( | |
| default_factory=lambda: os.getenv("STEMSPLITTER_LOG_LEVEL", "WARNING") | |
| ) | |
| web_host: str = field( | |
| default_factory=lambda: os.getenv("STEMSPLITTER_WEB_HOST", "127.0.0.1") | |
| ) | |
| web_port: int = field( | |
| default_factory=lambda: int(os.getenv("STEMSPLITTER_WEB_PORT", "7860")) | |
| ) | |
| def get_settings() -> Settings: | |
| """Return a fresh Settings instance (re-reads env vars).""" | |
| return Settings() | |