babysor/MockingBird · critical · Exception

Model folder {EXT_MODELS_DIRT} doesn't exist.

Error message

Model folder {EXT_MODELS_DIRT} doesn't exist.

What it means

Import-time guard in mkgui/train_vc.py: the VC training page requires an extractor models directory (EXT_MODELS_DIRT) with .pt checkpoints for its dropdown; missing folder raises at import.

Source

Thrown at control/mkgui/train_vc.py:21

from pathlib import Path
from enum import Enum
from typing import Any, Tuple
import numpy as np
from utils.hparams import HpsYaml
from utils.util import AttrDict
import torch

# Constants
EXT_MODELS_DIRT = f"data{os.sep}ckpt{os.sep}ppg_extractor"
CONV_MODELS_DIRT = f"data{os.sep}ckpt{os.sep}ppg2mel"
ENC_MODELS_DIRT = f"data{os.sep}ckpt{os.sep}encoder"


if os.path.isdir(EXT_MODELS_DIRT):    
    extractors =  Enum('extractors', list((file.name, file) for file in Path(EXT_MODELS_DIRT).glob("**/*.pt")))
    print("Loaded extractor models: " + str(len(extractors)))
else:
    raise Exception(f"Model folder {EXT_MODELS_DIRT} doesn't exist.")

if os.path.isdir(CONV_MODELS_DIRT):    
    convertors =  Enum('convertors', list((file.name, file) for file in Path(CONV_MODELS_DIRT).glob("**/*.pth")))
    print("Loaded convertor models: " + str(len(convertors)))
else:
    raise Exception(f"Model folder {CONV_MODELS_DIRT} doesn't exist.")

if os.path.isdir(ENC_MODELS_DIRT):    
    encoders = Enum('encoders', list((file.name, file) for file in Path(ENC_MODELS_DIRT).glob("**/*.pt")))
    print("Loaded encoders models: " + str(len(encoders)))
else:
    raise Exception(f"Model folder {ENC_MODELS_DIRT} doesn't exist.")

class Model(str, Enum):
    VC_PPG2MEL = "ppg2mel"

class Dataset(str, Enum):
    AIDATATANG_200ZH = "aidatatang_200zh"

View on GitHub (pinned to 28dc5e14f1)

Solutions

  1. Create the extractor models directory and add an extractor .pt checkpoint
  2. Download pretrained VC extractor weights
  3. Verify EXT_MODELS_DIRT in config

Example fix

# before: extractor/saved_models missing
mkdir -p extractor/saved_models && cp extractor.pt extractor/saved_models/
# after: 'Loaded extractor models: 1', page loads
Defensive patterns

Strategy: validation

Validate before calling

ext_dir = Path(EXT_MODELS_DIRT)
if not ext_dir.is_dir() or not list(ext_dir.glob('**/*.pt')):
    raise SystemExit(f'Extractor models missing in {ext_dir}')

Prevention

When it happens

Trigger: Opening the VC training page with no extractor models directory present.

Common situations: No extractor pretrained model downloaded yet; models root misconfigured.

Related errors


AI-assisted analysis of babysor/MockingBird@28dc5e14f1 (2026-08-27). Data as JSON: /api/errors/efbff9acfd27a5c2. Report an issue: GitHub.