babysor/MockingBird · critical · Exception

Model folder {CONV_MODELS_DIRT} doesn't exist.

Error message

Model folder {CONV_MODELS_DIRT} doesn't exist.

What it means

Startup guard in mkgui/app_vc.py for the convertor models directory (CONV_MODELS_DIRT). Unlike other model types it globs '**/*.pth' (ppg2mel convertors are saved as .pth). A missing folder raises at import time because the convertors dropdown cannot be built.

Source

Thrown at control/mkgui/app_vc.py:42

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="选择本地语音文件."
    )
    upload_audio_file: FileContent = Field(default=None, alias="或上传语音",
        description="拖拽或点击上传.", mime_type="audio/wav")
    local_audio_file_target: audio_input_selection = Field(
        ..., alias="目标语音(本地wav)",
        description="选择本地语音文件."
    )

View on GitHub (pinned to 28dc5e14f1)

Solutions

  1. Create the convertor models directory and copy the .pth convertor checkpoint into it
  2. Train the ppg2mel convertor or download the pretrained one to the expected path
  3. Confirm CONV_MODELS_DIRT points to the right directory and your file ends in .pth

Example fix

# before: convertor/saved_models missing
mkdir -p convertor/saved_models
cp ppg2mel_*.pth convertor/saved_models/
# after: 'Loaded convertor models: 1' and app starts
Defensive patterns

Strategy: validation

Validate before calling

conv_dir = Path(CONV_MODELS_DIRT)
if not conv_dir.is_dir() or not list(conv_dir.glob('**/*.pth')):
    raise SystemExit(f'Convertor (.pth) models missing in {conv_dir}')

Prevention

When it happens

Trigger: Starting app_vc.py when the convertor models folder does not exist or has no .pth checkpoints.

Common situations: ppg2mel convertor not trained yet; checkpoints saved elsewhere; extension mismatch (.pt vs .pth).

Related errors


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