Files
product/config.py
T
2026-03-29 23:01:39 +08:00

70 lines
2.8 KiB
Python

from pydantic import AliasChoices, Field, field_validator
from pydantic_settings import BaseSettings, SettingsConfigDict
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8", extra="ignore")
@field_validator("webrtc_host", mode="before")
@classmethod
def normalize_listen_host(cls, value: str) -> str:
host = str(value or "0.0.0.0").strip().lower()
if host in {"127.0.0.1", "localhost", "::1"}:
return "0.0.0.0"
return host or "0.0.0.0"
hf_token: str = ""
llm_api_key: str = Field(
default="",
validation_alias=AliasChoices("LLM_API_KEY", "DEEPSEEK_API_KEY", "OPENAI_API_KEY"),
)
llm_base_url: str = Field(
default="https://api.deepseek.com/v1",
validation_alias=AliasChoices("LLM_BASE_URL", "DEEPSEEK_BASE_URL", "OPENAI_BASE_URL"),
)
llm_model: str = Field(
default="deepseek-chat",
validation_alias=AliasChoices("LLM_MODEL", "DEEPSEEK_MODEL", "OPENAI_MODEL"),
)
llm_timeout: int = 8
llm_max_tokens: int = 150
llm_temperature: float = 0.55
llm_system_prompt: str = (
"你是一个自然、友好的中文语音助手。"
"请像真人当面聊天一样回答,口语化、简洁、自然,通常 1 到 2 句。"
"不要使用书面公告腔,不要分点,不要长段解释,不要夸张语气词。"
"不要虚构身份关系,不要自称家人、恋人或其他私人身份。"
"避免客服套话,比如‘随时为你服务’、‘很高兴为你服务’、‘请问有什么可以帮您’。"
"优先使用短句和自然停顿,适合直接语音播报。"
)
tts_voice: str = "zf_xiaoxiao"
tts_speed: float = 0.9
tts_sentence_max_len: int = 64
tts_segment_pause_ms: int = 90
tts_fade_ms: int = 12
webrtc_host: str = "0.0.0.0"
webrtc_port: int = 8080
avatar_fps: int = 25
avatar_driver_mode: str = "blendshape_stream"
avatar_control_protocol: str = "ws"
avatar_blendshape_schema: str = "arkit"
stun_url: str = "stun:stun.l.google.com:19302"
cors_origins: str = "*"
ssl_certfile: str = ""
ssl_keyfile: str = ""
# Legacy MuseTalk settings retained for migration reference only.
musetalk_enabled: bool = True
musetalk_repo_dir: str = "/home/xsl/work/MuseTalk"
musetalk_infer_script: str = "/home/xsl/work/MuseTalk/scripts/inference.py"
musetalk_source_video: str = "/home/xsl/work/MuseTalk/data/video/yongen.mp4"
musetalk_unet_model: str = "/home/xsl/work/MuseTalk/models/musetalkV15/unet.pth"
musetalk_unet_config: str = "/home/xsl/work/MuseTalk/models/musetalkV15/musetalk.json"
musetalk_whisper_dir: str = "/home/xsl/work/MuseTalk/models/whisper"
musetalk_result_dir: str = "/home/xsl/work/MuseTalk/results/visual-chat"
settings = Settings()