tonhowtf/omniget · error

modelo nao esta baixado

Error message

modelo {} nao esta baixado

What it means

transcribe() builds the model path as models_dir/ggml-<model>.bin and checks existence before running. If the selected GGML model was never downloaded, this error is returned. Model ids must match the MODELS table (e.g. "large-v3-turbo-q5_0"); the file must have been fetched via download_model().

Solutions

  1. Call whisper::download_model(opts.model, progress) first, then transcribe.
  2. Check availability with whisper::list_models() (installed/size_bytes per model) or status().models.
  3. Make sure opts.model matches an id in the MODELS table exactly (e.g. "tiny-q5_1", not "tiny").
  4. Re-download if a previous download failed or the file was removed.

Example fix

// before
whisper::transcribe(opts, progress).await?;

// after
let installed = whisper::list_models().iter().any(|m| m.installed && m.id == opts.model);
if !installed {
    whisper::download_model(&opts.model, progress.clone()).await?;
}
whisper::transcribe(opts, progress).await?;
Defensive patterns

Strategy: validation

Validate before calling

let have_model = whisper::list_models()
    .iter()
    .any(|m| m.id == opts.model && m.installed);
if !have_model {
    whisper::download_model(&opts.model, progress.clone()).await?;
}

Try / catch

match whisper::transcribe(opts.clone(), progress.clone()).await {
    Err(e) if e.to_string().contains("nao esta baixado") => {
        whisper::download_model(&opts.model, progress).await?;
        // then retry transcribe
    }
    other => other?,
}

Prevention

When it happens

Trigger: Calling transcribe with opts.model set to an id whose ggml-<model>.bin is absent from the models directory — never downloaded, deleted via remove_model, or a typo in the id that doesn't match any downloaded file.

Common situations: User cleared app data (removing models) then tried to transcribe; passing a raw model name like "large-v3" from another tool's naming when the app uses quantized ids like "large-v3-q5_0"; a download_model call that failed partway leaving no/partial file (partial files also fail here because existence uses the exact name).

Understand the failure class

Background: "File not found" and ENOENT errors: why libraries can't find a file that should exist — this error's family across 50 libraries.

Related errors


AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12). Data as JSON: /api/errors/1cb4a97ae38c8574. Report an issue: GitHub.

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/whisper.rs:324

                text: t,
            });
        }
    }
    Ok((language, cues))
}

pub async fn transcribe(
    opts: TranscribeOptions,
    progress: ProgressFn,
) -> anyhow::Result<TranscribeResult> {
    let (bin, _) = locate()
        .await
        .ok_or_else(|| anyhow!("whisper-cli nao esta instalado"))?;
    let model_path = models_dir()
        .ok_or_else(|| anyhow!("Could not determine data directory"))?
        .join(format!("ggml-{}.bin", opts.model));
    if !model_path.exists() {
        return Err(anyhow!("modelo {} nao esta baixado", opts.model));
    }
    let input = PathBuf::from(&opts.input);
    if !input.exists() {
        return Err(anyhow!("arquivo nao encontrado: {}", opts.input));
    }
    let id = format!("transcribe:{}", opts.input);
    report(&progress, &id, "convert", 0, Some(100), None);
    let started = std::time::Instant::now();
    let wav = to_wav16k(&input).await?;
    let out_prefix = super::temp_dir().join(format!("whisper-{}", uuid::Uuid::new_v4()));

    let mut cmd = crate::core::process::command(&bin);
    cmd.arg("-m").arg(&model_path).arg("-f").arg(&wav);
    cmd.args(["-oj", "-pp", "-np", "-of"]).arg(&out_prefix);
    let lang = if opts.language.trim().is_empty() {
        "auto"
    } else {
        opts.language.trim()

View on GitHub (pinned to 8600b91f42)