init
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
import json
|
||||
from pathlib import Path
|
||||
from dataclasses import dataclass, field
|
||||
|
||||
|
||||
@dataclass
|
||||
class ModelConfig:
|
||||
file: str
|
||||
languages: list[str] = field(default_factory=list)
|
||||
|
||||
|
||||
@dataclass
|
||||
class RuntimeConfig:
|
||||
sample_rate: int = 24000
|
||||
ffmpeg_path: str = "ffmpeg"
|
||||
translit_dict: str = "translit_dict.json"
|
||||
port: int = 5215
|
||||
host: str = "0.0.0.0"
|
||||
ssml_max_chars: int = 500
|
||||
|
||||
|
||||
@dataclass
|
||||
class AppConfig:
|
||||
models: list[ModelConfig] = field(default_factory=list)
|
||||
model_voices: dict[str, dict[str, str]] = field(default_factory=dict)
|
||||
runtime: RuntimeConfig = field(default_factory=RuntimeConfig)
|
||||
webui: bool = False
|
||||
use_ssml: bool = True
|
||||
|
||||
@classmethod
|
||||
def load(cls, path: str | Path = "config.json") -> "AppConfig":
|
||||
with open(path, encoding="utf-8") as f:
|
||||
raw = json.load(f)
|
||||
models = [
|
||||
ModelConfig(file=m["file"], languages=m.get("languages", []))
|
||||
for m in raw.get("models", [])
|
||||
]
|
||||
model_voices = raw.get("model_voices", {})
|
||||
rt = raw.get("runtime", {})
|
||||
runtime = RuntimeConfig(
|
||||
sample_rate=rt.get("sample_rate", 24000),
|
||||
ffmpeg_path=rt.get("ffmpeg_path", "ffmpeg"),
|
||||
translit_dict=rt.get("translit_dict", "translit_dict.json"),
|
||||
port=int(rt.get("port", 5215)),
|
||||
host=rt.get("host", "0.0.0.0"),
|
||||
ssml_max_chars=int(rt.get("ssml_max_chars", 500)),
|
||||
)
|
||||
return cls(
|
||||
models=models,
|
||||
model_voices=model_voices,
|
||||
runtime=runtime,
|
||||
webui=raw.get("webui", False),
|
||||
use_ssml=raw.get("use_ssml", True),
|
||||
)
|
||||
Reference in New Issue
Block a user