Zackriya-Solutions/meetily · error · anyhow::Error
Failed to load Whisper model '{}': {}
Error message
Failed to load Whisper model '{}': {} What it means
WhisperEngine::load_model(target_model) failed while preparing the engine for retranscription. discover_models() runs first but its failure is only warned about; the hard error comes from load_model. The inner '{}' typically means the GGML model file is missing from the models directory, corrupt or truncated (partial download), unreadable for this whisper-rs build, or too large for available memory.
Source
Thrown at frontend/src-tauri/src/audio/retranscription.rs:567
info!(
"Loading Whisper model '{}' (current: {:?})",
target_model, current_model
);
// Discover available models first (populates the internal cache)
info!("Discovering available Whisper models...");
if let Err(discover_err) = e.discover_models().await {
warn!("Error during model discovery (continuing anyway): {}", discover_err);
}
match e.load_model(&target_model).await {
Ok(_) => {
info!("Whisper model '{}' loaded successfully", target_model);
Ok(e)
}
Err(load_err) => {
error!("Failed to load Whisper model '{}': {}", target_model, load_err);
Err(anyhow!("Failed to load Whisper model '{}': {}", target_model, load_err))
}
}
} else {
info!("Whisper model '{}' already loaded", target_model);
Ok(e)
}
}
None => Err(anyhow!("Whisper engine not initialized")),
}
}
/// Get the configured Whisper model name from the database
async fn get_configured_whisper_model<R: Runtime>(app: &AppHandle<R>) -> Result<String> {
debug!("Getting configured Whisper model from database...");
let app_state = app
.try_state::<AppState>()
.ok_or_else(|| {View on GitHub (pinned to 0281737d87)
Solutions
- Verify the model file exists in the models directory (dev: frontend/models; macOS: ~/Library/Application Support/Meetily/models).
- Read the inner error: 'no such file' means missing, 'failed to read' usually means corrupt - re-download the model from Settings.
- If the inner error is out-of-memory, choose a smaller model (base/small).
- Retry with the default model to confirm the engine itself works, isolating the problem to that model file.
Defensive patterns
Strategy: validation
Validate before calling
// Confirm the model file exists before invoking retranscription
let models_dir = get_models_directory();
let ok = models_dir.map(|d| d.join(format!("{model}.bin")).exists()).unwrap_or(false);
if !ok { return Err(anyhow!("model {model} not downloaded - fetch it in Settings first")); } Try / catch
// Frontend: branch on the load failure and offer the model download UI
try { await invoke('start_retranscription', {...}); }
catch (e) {
if (String(e).includes('Failed to load Whisper model')) promptDownloadModel(modelName);
} Prevention
- Download and verify the model in Settings before selecting it for retranscription.
- Keep the models directory on a drive with space for the model plus runtime memory.
- Re-download models that fail integrity (truncated files load with opaque errors).
When it happens
Trigger: Requesting a model by name (retranscription dialog or transcript_settings row) that was never downloaded; models directory missing or moved; model file half-downloaded; loading large-v3 on a low-memory machine.
Common situations: User selects large-v3 in the UI without downloading it; app data directory moved between machines; whisper-rs version update rejecting old GGML files; disk full during model download earlier.
Related errors
- Failed to load model '{}': {}
- Whisper transcription failed on segment {}: {}
- Retranscription requires Whisper. Current provider '{}' does
- Failed to load Parakeet model '{}': {}
- Model {} not found
AI-assisted analysis of Zackriya-Solutions/meetily@0281737d87 (2026-08-16).
Data as JSON: /api/errors/4b33eba1afaf4ed6.
Report an issue: GitHub.