cjpais/Handy · error · anyhow::Error

GigaAM transcription failed

Error message

GigaAM transcription failed: {}

What it means

The GigaAM branch calls gigaam_engine.transcribe(&audio, &TranscribeOptions::default()); this error wraps the ONNX Runtime failure from the GigaAM Int8 graph, with the library error chained after the colon.

Solutions

  1. Read the chained ORT error and switch accelerator to CPU if provider-related
  2. Retry with longer audio
  3. Re-download the GigaAM model
  4. Check system stability (GPU driver, thermals) if failures are intermittent
Defensive patterns

Strategy: retry

Try / catch

match manager.transcribe(audio.clone()) {
    Err(e) if e.to_string().contains("GigaAM transcription failed") => manager.transcribe(audio),
    other => other,
}

Prevention

When it happens

Trigger: ORT inference fails during GigaAM transcription: provider runtime error, invalid input from too-short/empty-after-trim audio, or corrupted model graph.

Common situations: Accelerator/driver issues; short utterances; model file corruption after interrupted download or disk issues.

Related errors


AI-assisted analysis of cjpais/Handy@ba10ce1943 (2026-08-17). Data as JSON: /api/errors/ac8ed26e2a82d693. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/src/managers/transcription.rs:1397

                            "ja" => Some("ja".to_string()),
                            "ko" => Some("ko".to_string()),
                            "yue" => Some("yue".to_string()),
                            _ => None,
                        };
                        applied_language_hint = language.clone();
                        let params = SenseVoiceParams {
                            language,
                            use_itn: Some(true),
                        };
                        sense_voice_engine
                            .transcribe_with(&audio, &params)
                            .map(|r| r.text)
                            .map_err(|e| anyhow::anyhow!("SenseVoice transcription failed: {}", e))
                    }
                    LoadedEngine::GigaAM(gigaam_engine) => gigaam_engine
                        .transcribe(&audio, &TranscribeOptions::default())
                        .map(|r| r.text)
                        .map_err(|e| anyhow::anyhow!("GigaAM transcription failed: {}", e)),
                    LoadedEngine::Canary(canary_engine) => {
                        output_was_translated = settings.translate_to_english;
                        let lang = if validated_language == "auto" {
                            None
                        } else {
                            Some(validated_language.clone())
                        };
                        applied_language_hint = lang.clone();
                        let options = TranscribeOptions {
                            language: lang,
                            translate: settings.translate_to_english,
                            ..Default::default()
                        };
                        canary_engine
                            .transcribe(&audio, &options)
                            .map(|r| r.text)
                            .map_err(|e| anyhow::anyhow!("Canary transcription failed: {}", e))
                    }

View on GitHub (pinned to ba10ce1943)