CorentinJ/Real-Time-Voice-Cloning · error · Exception

Please load Wave-RNN in memory before using it

Error message

Please load Wave-RNN in memory before using it

What it means

Raised by infer_waveform() in vocoder/inference.py when the module-level _model singleton is None. Like the encoder (error 3), the vocoder inference API is stateful: load_model(models_dir, model_fpath, _) must populate _model before generation. The guard is a bare None check on the WaveRNN instance, so any path that reaches infer_waveform without a successful load fails here.

Source

Thrown at vocoder/inference.py:58

def is_loaded():
    return _model is not None


def infer_waveform(mel, normalize=True,  batched=True, target=8000, overlap=800, 
                   progress_callback=None):
    """
    Infers the waveform of a mel spectrogram output by the synthesizer (the format must match 
    that of the synthesizer!)
    
    :param normalize:  
    :param batched: 
    :param target: 
    :param overlap: 
    :return: 
    """
    if _model is None:
        raise Exception("Please load Wave-RNN in memory before using it")
    
    if normalize:
        mel = mel / hp.mel_max_abs_value
    mel = torch.from_numpy(mel[None, ...])
    wav = _model.generate(mel, batched, target, overlap, hp.mu_law, progress_callback)
    return wav

View on GitHub (pinned to 890f3a0318)

Solutions

  1. Call vocoder.inference.load_model(Path("<models_dir>/<name>/vocoder.pt")) once before infer_waveform().
  2. If load_model itself failed, fix that first (verify the vocoder.pt path exists under the models dir you passed).
  3. In toolbox flows, when the vocoder box shows Griffin-Lim, ensure the code routes to the Griffin-Lim vocoder path rather than infer_waveform.

Example fix

# before
from vocoder import inference
wav = inference.infer_waveform(mel)  # _model is None -> raises

# after
from vocoder import inference
from pathlib import Path
inference.load_model(Path("vocoder/saved_models/pretrained/vocoder.pt"))
wav = inference.infer_waveform(mel)
Defensive patterns

Strategy: validation

Validate before calling

from vocoder import inference
from pathlib import Path

def ensure_vocoder_loaded(models_dir: Path, fpath: Path):
    if inference._model is None:
        inference.load_model(models_dir, fpath, False)

Try / catch

try:
    wav = inference.infer_waveform(mel)
except Exception as e:
    if "Wave-RNN" in str(e):
        inference.load_model(Path("vocoder/saved_models/pretrained"), Path("vocoder/saved_models/pretrained/vocoder.pt"), False)
        wav = inference.infer_waveform(mel)
    else:
        raise

Prevention

When it happens

Trigger: Calling infer_waveform(mel) directly, or via the toolbox/demo_cli synthesis flow, without a prior vocoder load_model(); also when the toolbox is configured with the Griffin-Lim fallback (vocoder_fpath None) and code nevertheless calls infer_waveform instead of the Griffin-Lim path.

Common situations: New integration code that skips the vocoder load step; a load_model failure (missing vocoder.pt, CUDA OOM) swallowed earlier; notebook reuse after an exception during load; mixing WaveRNN inference into a script that only loaded the synthesizer.

Related errors


AI-assisted analysis of CorentinJ/Real-Time-Voice-Cloning@890f3a0318 (2026-08-15). Data as JSON: /api/errors/021464d1e46ce70c. Report an issue: GitHub.