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
- Call vocoder.inference.load_model(Path("<models_dir>/<name>/vocoder.pt")) once before infer_waveform().
- If load_model itself failed, fix that first (verify the vocoder.pt path exists under the models dir you passed).
- 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
- Load encoder, synthesizer, and vocoder in one init routine and assert each is loaded before serving.
- When the toolbox vocoder selection is Griffin-Lim (None), route to the Griffin-Lim code path instead of infer_waveform.
- Fail loudly on load_model errors instead of continuing into generation.
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
- Model was not loaded. Call load_model() before inference.
- Unknown model mode value -
- No encoder models found in %s
- No synthesizer models found in %s
AI-assisted analysis of CorentinJ/Real-Time-Voice-Cloning@890f3a0318 (2026-08-15).
Data as JSON: /api/errors/021464d1e46ce70c.
Report an issue: GitHub.