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

Startup guard in the voice-conversion GUI (mkgui/app_vc.py) for the extractor models directory (EXT_MODELS_DIRT). The module builds an extractors Enum from '**/*.pt' files under that folder at import time; an absent folder aborts app startup.

Source

Thrown at control/mkgui/app_vc.py:36

# Constants
AUDIO_SAMPLES_DIR = f'data{os.sep}samples{os.sep}'
EXT_MODELS_DIRT = f'data{os.sep}ckpt{os.sep}ppg_extractor'
CONV_MODELS_DIRT = f'data{os.sep}ckpt{os.sep}ppg2mel'
VOC_MODELS_DIRT = f'data{os.sep}ckpt{os.sep}vocoder'
TEMP_SOURCE_AUDIO = f'wavs{os.sep}temp_source.wav'
TEMP_TARGET_AUDIO = f'wavs{os.sep}temp_target.wav'
TEMP_RESULT_AUDIO = f'wavs{os.sep}temp_result.wav'

# Load local sample audio as options TODO: load dataset 
if os.path.isdir(AUDIO_SAMPLES_DIR):
    audio_input_selection = Enum('samples', list((file.name, file) for file in Path(AUDIO_SAMPLES_DIR).glob("*.wav")))
# Pre-Load models
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(VOC_MODELS_DIRT):    
    vocoders =  Enum('vocoders', list((file.name, file) for file in Path(VOC_MODELS_DIRT).glob("**/*gan*.pt")))
    print("Loaded vocoders models: " + str(len(vocoders)))
else:
    raise Exception(f"Model folder {VOC_MODELS_DIRT} doesn't exist.")

class Input(BaseModel):
    local_audio_file: audio_input_selection = Field(
        ..., alias="输入语音(本地wav)",
        description="选择本地语音文件."
    )

View on GitHub (pinned to 28dc5e14f1)

Solutions

  1. Create the extractor models directory and put at least one .pt extractor checkpoint in it
  2. Download the pretrained VC model bundle and extract it into the expected location
  3. Verify EXT_MODELS_DIRT in config matches your checkpoint layout

Example fix

# before: extractor/saved_models missing
mkdir -p extractor/saved_models
cp extractor.pt extractor/saved_models/
# after: 'Loaded extractor models: 1' and app starts
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: Starting app_vc.py without a trained/downloaded PPG extractor model directory at the expected path.

Common situations: Voice-conversion pretrained models not downloaded; fresh clone; models stored under a different root than the config constant.

Related errors


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