babysor/MockingBird · critical · Exception

No synthesizer models found in %s

Error message

No synthesizer models found in %s

What it means

Raised by the Toolbox UI when the synthesizer models directory yields zero *.pt files from a recursive glob. Occurs in non-VC mode during reset_ui/populate_models and aborts toolbox startup.

Source

Thrown at control/toolbox/ui.py:362

        self.repopulate_box(self.encoder_box, [(f.stem, f) for f in encoder_fpaths])
        
        if vc_mode:
            # Extractor
            extractor_fpaths = list(extractor_models_dir.glob("*.pt"))
            if len(extractor_fpaths) == 0:
                self.log("No extractor models found in %s" % extractor_fpaths)
            self.repopulate_box(self.extractor_box, [(f.stem, f) for f in extractor_fpaths])
            
            # Convertor
            convertor_fpaths = list(convertor_models_dir.glob("*.pth"))
            if len(convertor_fpaths) == 0:
                self.log("No convertor models found in %s" % convertor_fpaths)
            self.repopulate_box(self.convertor_box, [(f.stem, f) for f in convertor_fpaths])
        else:
            # Synthesizer
            synthesizer_fpaths = list(synthesizer_models_dir.glob("**/*.pt"))
            if len(synthesizer_fpaths) == 0:
                raise Exception("No synthesizer models found in %s" % synthesizer_models_dir)
            self.repopulate_box(self.synthesizer_box, [(f.stem, f) for f in synthesizer_fpaths])

        # Vocoder
        vocoder_fpaths = list(vocoder_models_dir.glob("**/*.pt"))
        vocoder_items = [(f.stem, f) for f in vocoder_fpaths] + [("Griffin-Lim", None)]
        self.repopulate_box(self.vocoder_box, vocoder_items)

    @property
    def selected_utterance(self):
        return self.utterance_history.itemData(self.utterance_history.currentIndex())
        
    def register_utterance(self, utterance: Utterance, vc_mode):
        self.utterance_history.blockSignals(True)
        self.utterance_history.insertItem(0, utterance.name, utterance)
        self.utterance_history.setCurrentIndex(0)
        self.utterance_history.blockSignals(False)
        
        if len(self.utterance_history) > self.max_saved_utterances:

View on GitHub (pinned to 28dc5e14f1)

Solutions

  1. Place a synthesizer .pt checkpoint under the synthesizer models directory (subdirectories are searched)
  2. If your checkpoint has another extension, rename/copy it to .pt or re-save it properly
  3. Point the Toolbox at the correct models root containing populated model folders

Example fix

# before: synthesizer dir empty
 cp runs/apr/synthesizer/synthesizer.pt encoder/saved_models/synthesizer/
# after: toolbox starts, synthesizer dropdown populated
Defensive patterns

Strategy: validation

Validate before calling

syn_fpaths = list(synthesizer_models_dir.glob('**/*.pt'))
if not syn_fpaths:
    raise SystemExit(f'No synthesizer .pt under {synthesizer_models_dir}')

Try / catch

try:
    ui.populate_models(...)
except Exception as e:
    log_error(e); prompt_user_for_models_dir()

Prevention

When it happens

Trigger: Starting the Toolbox in normal mode where the synthesizer models directory is empty or contains no .pt checkpoints anywhere beneath it.

Common situations: Synthesizer checkpoint saved as .ckpt or with different naming; empty saved_models folder after a failed training; wrong models root selected.

Related errors


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