tonhowtf/omniget · error
nao foi possivel iniciar o whisper-cli
Error message
nao foi possivel iniciar o whisper-cli: {} What it means
The whisper-cli child process could not be spawned after all argument assembly (language, translate, max_len, prompt, threads) and stdio piping. The {} is the std::io::Error from spawn(), typically meaning the whisper-cli binary is missing from PATH, not executable, or the system refused to create the process.
Solutions
- Verify whisper-cli is installed and on PATH (or at the path the app expects) and rerun the transcription
- Check the binary is executable and matches the current platform/architecture
- Run whisper-cli manually with the same arguments to confirm it starts
Defensive patterns
Strategy: try-catch
When it happens
Trigger: Thrown at src-tauri/omniget-core/src/core/tools/whisper.rs:362 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/ab529d24f5d016e0.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/tools/whisper.rs:362
cmd.args(["-l", lang]);
if opts.translate {
cmd.arg("-tr");
}
if opts.max_len > 0 {
cmd.args(["-ml", &opts.max_len.to_string(), "-sow"]);
}
if !opts.prompt.trim().is_empty() {
cmd.args(["--prompt", opts.prompt.trim()]);
}
if opts.threads > 0 {
cmd.args(["-t", &opts.threads.to_string()]);
}
cmd.stdin(std::process::Stdio::null())
.stdout(std::process::Stdio::piped())
.stderr(std::process::Stdio::piped());
let mut child = cmd
.spawn()
.map_err(|e| anyhow!("nao foi possivel iniciar o whisper-cli: {}", e))?;
// `-pp` escreve "progress = 42%" no stderr.
let stderr = child.stderr.take();
let p2 = progress.clone();
let id2 = id.clone();
let stderr_task = tokio::spawn(async move {
use tokio::io::{AsyncBufReadExt, BufReader};
let mut tail = String::new();
if let Some(err) = stderr {
let mut lines = BufReader::new(err).lines();
while let Ok(Some(line)) = lines.next_line().await {
if let Some(rest) = line.trim().strip_prefix("progress =") {
if let Ok(pct) = rest.trim().trim_end_matches('%').trim().parse::<u64>() {
report(&p2, &id2, "transcribe", pct.min(100), Some(100), None);
}
} else if !line.trim().is_empty() {
tail = line;
}View on GitHub (pinned to 8600b91f42)