cjpais/Handy · error · anyhow::Error
Failed to load SenseVoice model
Error message
Failed to load SenseVoice model {}: {} What it means
Thrown when SenseVoiceModel::load fails to load the SenseVoice ONNX model with Int8 quantization from model_path. The underlying error is chained and a "loading_failed" model-state event is emitted to the frontend before returning the anyhow error.
Solutions
- Re-download the SenseVoice model
- Verify the Int8 quantized files exist and match expected sizes before loading
- Inspect the chained ONNX error; if quantization ops fail, update the app / transcribe-rs so the onnxruntime version matches the model
- Switch to another engine's model to confirm the issue is model-file-specific
Defensive patterns
Strategy: try-catch
Try / catch
match manager.load_model(&model_id, None) {
Err(e) if e.to_string().contains("SenseVoice") => { /* re-download model, retry once */ }
other => other,
} Prevention
- Verify disk space before large model downloads
- Keep app and transcribe-rs versions in sync (bundled onnxruntime must match model opsets)
- React to loading_failed events in the UI instead of letting users record against a failed model
When it happens
Trigger: load_model reaches EngineType::SenseVoice and SenseVoiceModel::load(&model_path, &Quantization::Int8) errors: missing or truncated Int8 quantized ONNX files, directory layout mismatch, or ONNX Runtime session/provider failure.
Common situations: Download interrupted mid-file; only a non-Int8 variant present on disk; transcribe-rs update renamed expected files; quantized opset unsupported by the bundled onnxruntime version.
Related errors
- Failed to load canary model
- Failed to load cohere model
- Failed to load gigaam model
- Failed to load moonshine model
- Failed to load moonshine streaming model
AI-assisted analysis of cjpais/Handy@ba10ce1943 (2026-08-17).
Data as JSON: /api/errors/02e23274e196bcfe.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/src/managers/transcription.rs:680
EngineType::MoonshineStreaming => {
let engine = StreamingModel::load(&model_path, 0, &Quantization::default())
.map_err(|e| {
let error_msg = format!(
"Failed to load moonshine streaming model {}: {}",
model_id, e
);
emit_loading_failed(&error_msg);
anyhow::anyhow!(error_msg)
})?;
LoadedEngine::MoonshineStreaming(engine)
}
EngineType::SenseVoice => {
let engine =
SenseVoiceModel::load(&model_path, &Quantization::Int8).map_err(|e| {
let error_msg =
format!("Failed to load SenseVoice model {}: {}", model_id, e);
emit_loading_failed(&error_msg);
anyhow::anyhow!(error_msg)
})?;
LoadedEngine::SenseVoice(engine)
}
EngineType::GigaAM => {
let engine = GigaAMModel::load(&model_path, &Quantization::Int8).map_err(|e| {
let error_msg = format!("Failed to load gigaam model {}: {}", model_id, e);
emit_loading_failed(&error_msg);
anyhow::anyhow!(error_msg)
})?;
LoadedEngine::GigaAM(engine)
}
EngineType::Canary => {
let engine = CanaryModel::load(&model_path, &Quantization::Int8).map_err(|e| {
let error_msg = format!("Failed to load canary model {}: {}", model_id, e);
emit_loading_failed(&error_msg);
anyhow::anyhow!(error_msg)
})?;
LoadedEngine::Canary(engine)View on GitHub (pinned to ba10ce1943)