| import json |
| from decimal import Decimal, InvalidOperation |
|
|
| from shared.deepy.config import DEEPY_ENABLED_KEY |
|
|
|
|
| LEGACY_EXTENSIONS_DEFAULTS_MIGRATED_KEY = "_extensions_defaults_migrated" |
| EXTENSIONS_DEFAULTS_VERSION_KEY = "extensions_defaults_version" |
| EXTENSIONS_DEFAULTS_TARGET_VERSION = Decimal("1.11") |
| EXTENSIONS_DEFAULTS_TARGET_VERSION_TEXT = str(EXTENSIONS_DEFAULTS_TARGET_VERSION) |
|
|
| MMAUDIO_MODE_CHOICES = [("Standard", 1), ("NSFW", 2)] |
| SEEDVC_MODE_CHOICES = [("v1.0 Speech", 1), ("v1.0 Singing / F0 44k", 2), ("v2 Speech", 3)] |
| FLASHVSR_MODE_CHOICES = [ |
| ("FlashVSR v1.1 Tiny (Slightly Lower Quality, Faster VAE Decoding, Needs Less RAM)", 1), |
| ("FlashVSR v1.1 Full (Best Quality, Slower VAE Decoding, Needs More RAM)", 2), |
| ] |
| PROMPT_ENHANCER_CHOICES = [ |
| ("Florence 2 (image captioning) + LLama 3.2 3B (text generation)", 1), |
| ("Florence 2 (image captioning) + Llama Joy 8B (uncensored, richer)", 2), |
| ("Qwen3.5VL Abliterated 4B (recommended, captioning + uncensored text enhancement, vllm accelerated if available)", 3), |
| ("Qwen3.5VL Abliterated 9B (captioning + uncensored high end text enhancement, vllm accelerated if available)", 4), |
| ] |
|
|
| MMAUDIO_DEFAULT_MODE = MMAUDIO_MODE_CHOICES[0][1] |
| SEEDVC_DEFAULT_MODE = 2 |
| FLASHVSR_DEFAULT_MODE = FLASHVSR_MODE_CHOICES[0][1] |
| PROMPT_ENHANCER_LOW_VRAM_DEFAULT_MODE = PROMPT_ENHANCER_CHOICES[0][1] |
| PROMPT_ENHANCER_HIGH_VRAM_DEFAULT_MODE = 3 |
| PROMPT_ENHANCER_DEFAULT_MODE = PROMPT_ENHANCER_HIGH_VRAM_DEFAULT_MODE |
| PROMPT_ENHANCER_QWEN_MIN_VRAM_GB = 10 |
| DEEPY_DEFAULT_ENABLED = 1 |
|
|
|
|
| def _to_int(value, default=0): |
| try: |
| return int(value or default) |
| except (TypeError, ValueError): |
| return default |
|
|
|
|
| def _is_off(value) -> bool: |
| return _to_int(value, 0) == 0 |
|
|
|
|
| def _cuda_vram_gb() -> float: |
| try: |
| import torch |
|
|
| if not torch.cuda.is_available(): |
| return 0.0 |
| return torch.cuda.get_device_properties(torch.cuda.current_device()).total_memory / (1024 ** 3) |
| except Exception: |
| return 0.0 |
|
|
|
|
| def get_prompt_enhancer_default_mode() -> int: |
| return PROMPT_ENHANCER_HIGH_VRAM_DEFAULT_MODE if _cuda_vram_gb() >= PROMPT_ENHANCER_QWEN_MIN_VRAM_GB else PROMPT_ENHANCER_LOW_VRAM_DEFAULT_MODE |
|
|
|
|
| def _write_config(config, config_filename): |
| if not config_filename: |
| return |
| with open(config_filename, "w", encoding="utf-8") as writer: |
| writer.write(json.dumps(config, indent=4)) |
|
|
|
|
| def _set_missing_persistence(config, key): |
| if key not in config or _to_int(config.get(key), 1) not in (1, 2): |
| config[key] = 1 |
|
|
|
|
| def _extension_defaults_version(config) -> Decimal: |
| version = config.get(EXTENSIONS_DEFAULTS_VERSION_KEY, None) |
| if version is not None: |
| try: |
| return Decimal(str(version)) |
| except (InvalidOperation, ValueError): |
| return Decimal("1.0") |
| return Decimal("1.1") if config.get(LEGACY_EXTENSIONS_DEFAULTS_MIGRATED_KEY, False) else Decimal("1.0") |
|
|
|
|
| def migrate_extension_defaults(server_config, server_config_filename="") -> bool: |
| if not isinstance(server_config, dict): |
| return False |
|
|
| version = _extension_defaults_version(server_config) |
| prompt_enhancer_default_mode = get_prompt_enhancer_default_mode() |
| changed = False |
|
|
| if version < Decimal("1.1"): |
| mmaudio_mode = server_config.get("mmaudio_mode", None) |
| if mmaudio_mode is None: |
| mmaudio_mode = 0 if _is_off(server_config.get("mmaudio_enabled", 0)) else MMAUDIO_DEFAULT_MODE |
| if _is_off(mmaudio_mode): |
| server_config["mmaudio_mode"] = MMAUDIO_DEFAULT_MODE |
| changed = True |
| else: |
| server_config["mmaudio_mode"] = _to_int(mmaudio_mode, MMAUDIO_DEFAULT_MODE) |
| _set_missing_persistence(server_config, "mmaudio_persistence") |
| server_config["mmaudio_enabled"] = server_config["mmaudio_persistence"] |
|
|
| if _is_off(server_config.get("seedvc_mode", 0)): |
| server_config["seedvc_mode"] = SEEDVC_DEFAULT_MODE |
| changed = True |
| _set_missing_persistence(server_config, "seedvc_persistence") |
|
|
| if _is_off(server_config.get("flashvsr_mode", 0)): |
| server_config["flashvsr_mode"] = FLASHVSR_DEFAULT_MODE |
| changed = True |
| _set_missing_persistence(server_config, "flashvsr_persistence") |
|
|
| if _is_off(server_config.get("enhancer_enabled", 0)): |
| server_config["enhancer_enabled"] = prompt_enhancer_default_mode |
| changed = True |
|
|
| if _is_off(server_config.get(DEEPY_ENABLED_KEY, 0)): |
| server_config[DEEPY_ENABLED_KEY] = DEEPY_DEFAULT_ENABLED |
| changed = True |
|
|
| if version < EXTENSIONS_DEFAULTS_TARGET_VERSION: |
| if server_config.get("seedvc_mode") != SEEDVC_DEFAULT_MODE: |
| server_config["seedvc_mode"] = SEEDVC_DEFAULT_MODE |
| changed = True |
| _set_missing_persistence(server_config, "seedvc_persistence") |
|
|
| if server_config.pop(LEGACY_EXTENSIONS_DEFAULTS_MIGRATED_KEY, None) is not None: |
| changed = True |
| if server_config.get(EXTENSIONS_DEFAULTS_VERSION_KEY) != EXTENSIONS_DEFAULTS_TARGET_VERSION_TEXT: |
| server_config[EXTENSIONS_DEFAULTS_VERSION_KEY] = EXTENSIONS_DEFAULTS_TARGET_VERSION_TEXT |
| changed = True |
|
|
| if changed: |
| _write_config(server_config, server_config_filename) |
| return changed |
|
|
|
|
| def enabled_choice_value(value, choices, default): |
| allowed = {choice_value for _, choice_value in choices} |
| value = _to_int(value, default) |
| return value if value in allowed else default |
|
|