babysor/MockingBird · error · Exception

Please load fre-gan in memory before using it

Error message

Please load fre-gan in memory before using it

What it means

infer_waveform in models/vocoder/fregan/inference.py is module-level state-based: it requires load_model() to have been called first, which sets the module-global `generator`. If generator is None, synthesis is refused.

Source

Thrown at models/vocoder/fregan/inference.py:63

        _device = torch.device('cpu')

    generator = FreGAN(h).to(_device)
    state_dict_g = load_checkpoint(
        weights_fpath, _device
    )
    generator.load_state_dict(state_dict_g['generator'])
    generator.eval()
    generator.remove_weight_norm()


def is_loaded():
    return generator is not None


def infer_waveform(mel, progress_callback=None):

    if generator is None:
        raise Exception("Please load fre-gan in memory before using it")

    mel = torch.FloatTensor(mel).to(_device)
    mel = mel.unsqueeze(0)

    with torch.no_grad():
        y_g_hat = generator(mel)
        audio = y_g_hat.squeeze()
    audio = audio.cpu().numpy()

    return audio, output_sample_rate

View on GitHub (pinned to 28dc5e14f1)

Solutions

  1. Call load_model(checkpoint_path) before infer_waveform
  2. Verify the Fre-GAN checkpoint path exists and loads without exceptions
  3. Check is_loaded() (returns generator is not None) before synthesizing

Example fix

# before
import models.vocoder.fregan.inference as fregan
wav = fregan.infer_waveform(mel)  # raises

# after
fregan.load_model(Path('models/vocoder/fregan/checkpoint.pt'))
wav = fregan.infer_waveform(mel)
Defensive patterns

Strategy: validation

Validate before calling

from models.vocoder import fregan
if not fregan.is_loaded():
    fregan.load_model(Path('models/vocoder/fregan/generator.pt'))
wav = fregan.infer_waveform(mel)

Type guard

def fregan_ready() -> bool:
    from models.vocoder.fregan import inference
    return inference.generator is not None

Try / catch

try:
    wav = fregan.infer_waveform(mel)
except Exception as e:
    if 'load fre-gan' in str(e):
        fregan.load_model(ckpt); wav = fregan.infer_waveform(mel)
    else: raise

Prevention

When it happens

Trigger: Calling infer_waveform(mel) before calling fregan.inference.load_model(fpath) in the same Python process (or after a failed load).

Common situations: Toolbox/UI code path that skips vocoder loading; the model file path was wrong so load silently failed; calling from a fresh process/import.

Related errors


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