|
|
import os |
|
|
import sys |
|
|
from pathlib import Path |
|
|
|
|
|
|
|
|
HERE = Path(__file__).parent |
|
|
_project_root = getattr(sys, '_MEIPASS', HERE.parent.parent.parent.as_posix()) |
|
|
PROJECT_ROOT = Path(_project_root) |
|
|
|
|
|
|
|
|
ASSETS_PATH = PROJECT_ROOT / "assets" |
|
|
MODELS_PATH = ASSETS_PATH / "models" |
|
|
|
|
|
|
|
|
ASR_MODELS_PATH = MODELS_PATH / "asr" |
|
|
TTS_MODELS_PATH = MODELS_PATH / "tts" |
|
|
LLM_MODELS_PATH = MODELS_PATH / "llm" |
|
|
|
|
|
|
|
|
THIRD_PARTY_PATH = PROJECT_ROOT / "third_party" |
|
|
|
|
|
|
|
|
LIBRARIES_PATH = ASSETS_PATH / "libraries" |
|
|
AUDIO_RESOURCES_PATH = ASSETS_PATH / "audio" |
|
|
|
|
|
|
|
|
FRONTEND_ASSETS_PATH = ASSETS_PATH / "www" |
|
|
|
|
|
|
|
|
|
|
|
def get_app_data_path() -> Path: |
|
|
"""获取应用数据存储路径""" |
|
|
app_name = "Voice Dialogue" |
|
|
|
|
|
if sys.platform == "darwin": |
|
|
base_path = Path.home() / "Library" / "Application Support" |
|
|
elif sys.platform == "win32": |
|
|
base_path = Path(os.environ.get("APPDATA", Path.home() / "AppData" / "Roaming")) |
|
|
else: |
|
|
base_path = Path.home() / ".config" |
|
|
|
|
|
return base_path / app_name |
|
|
|
|
|
|
|
|
APP_DATA_PATH = get_app_data_path() |
|
|
if not APP_DATA_PATH.exists(): |
|
|
APP_DATA_PATH.mkdir(parents=True, exist_ok=True) |
|
|
USER_PROMPTS_PATH = APP_DATA_PATH / "user_prompts.json" |
|
|
|
|
|
|
|
|
def load_third_party(): |
|
|
|
|
|
if THIRD_PARTY_PATH.exists() and str(THIRD_PARTY_PATH) not in sys.path: |
|
|
sys.path.insert(0, str(THIRD_PARTY_PATH)) |
|
|
|