cpu-tts / app /config.py
grimshaw's picture
Improve storage fallback and UI source editor
0a81ef3 verified
Raw
History Blame Contribute Delete
1.72 kB
from functools import lru_cache
from typing import Literal
from pydantic import field_validator
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(
env_file=".env", env_file_encoding="utf-8", extra="ignore"
)
host: str = "0.0.0.0"
port: int = 7860
model_dir: str = "/app/models/supertonic-2"
kitten_model_name: str = "KittenML/kitten-tts-micro-0.8"
kitten_cache_dir: str = "/app/models/hf-cache"
enable_melo_tts: bool = False
melo_device: Literal["cpu"] = "cpu"
melo_fail_fast: bool = True
custom_voice_dir: str = "/app/voices"
kokoro_model_dir: str = "/app/models/kokoro"
kokoro_model_file: str = "model_q8f16.onnx"
default_model: str = "supertonic-2"
default_voice: str = "alloy"
default_response_format: Literal["wav"] = "wav"
default_speed: float = 1.05
default_quality: Literal["low", "balanced", "high"] = "balanced"
default_language: Literal["en", "ko", "es", "pt", "fr"] = "en"
require_auth: bool = False
api_key: str = ""
log_level: str = "info"
omp_num_threads: int = 1
ort_intra_op_num_threads: int = 1
ort_inter_op_num_threads: int = 1
max_input_length: int = 5000
job_poll_interval: float = 2.0
workspace_dir: str = "/tmp/tts-server"
persistent_output_dir: str = "/store"
@field_validator("default_speed")
@classmethod
def validate_default_speed(cls, value: float) -> float:
if not 0.25 <= value <= 4.0:
raise ValueError("default_speed must be between 0.25 and 4.0")
return value
@lru_cache(maxsize=1)
def get_settings() -> Settings:
return Settings()