tonhowtf/omniget · error
entrada
Error message
entrada: {} What it means
isolate reads the input audio file with std::fs::read before uploading it as multipart for source separation, wrapping failures as 'entrada: {}' (input: {}). It means the file to be processed could not be read from disk.
Solutions
- Read the inner OS error: NotFound → correct the path; PermissionDenied → fix permissions.
- Validate the input path with Path::is_file before calling isolate.
- Confirm the upstream step that produced the input file actually succeeded and wrote it.
- Check for file locks (close players/editors holding the file) and remount network volumes.
Example fix
// before
let data = std::fs::read(input).map_err(|e| anyhow!("entrada: {}", e))?;
// after
let in_path = Path::new(input);
anyhow::ensure!(in_path.is_file(), "entrada: arquivo ausente: {}", input);
let data = std::fs::read(in_path).map_err(|e| anyhow!("entrada: {}", e))?; Defensive patterns
Strategy: validation
Validate before calling
fn validate_isolate_input(path: &str) -> Result<(), String> {
let p = std::path::Path::new(path);
if !p.is_file() { return Err(format!("input not a file: {path}")); }
let len = std::fs::metadata(p).map(|m| m.len()).unwrap_or(0);
if len == 0 { return Err("input file is empty".into()); }
Ok(())
} Try / catch
match std::fs::read(input) {
Err(e) if e.kind() == std::io::ErrorKind::NotFound => eprintln!("entrada nao encontrada: {input}"),
Err(e) if e.kind() == std::io::ErrorKind::PermissionDenied => eprintln!("sem permissao: {input}"),
other => other?,
} Prevention
- Validate the input path immediately before calling isolate.
- Confirm the previous pipeline step wrote its output successfully before starting isolation.
- Keep intermediates in a stable directory to avoid stale-path failures.
- Close players/editors that may lock the audio file during processing.
When it happens
Trigger: The `input` path passed to isolate does not exist, is a directory, or is unreadable due to permissions at the start of vocal/instrumental isolation.
Common situations: Stale path after a previous processing step moved/renamed the file, wrong path from the UI, file on an unmounted volume, or antivirus/another process locking the file.
Understand the failure class
Background: "failed to read file", EACCES, ENOENT and "could not read <path>" errors: when a program can't read a file from disk — this error's family across 49 libraries.
Related errors
AI-assisted analysis of tonhowtf/omniget@8600b91f42 (2026-09-12).
Data as JSON: /api/errors/e9d71efc411ef71f.
Report an issue: GitHub.
Appendix: source
Thrown at src-tauri/omniget-core/src/core/tools/voicestudio.rs:493
matched,
unmatched,
profile_id,
})
}
/// Demucs no VoiceStudio: devolve só a voz. O instrumental é a diferença,
/// feita aqui com o FFmpeg (voz invertida somada ao original).
pub async fn isolate(
base_url: &str,
input: &str,
output_dir: &str,
instrumental: bool,
progress: super::ProgressFn,
) -> anyhow::Result<Vec<String>> {
let b = base(base_url);
let c = client(1800)?;
super::report(&progress, "voicestudio", "upload", 0, None, None);
let data = std::fs::read(input).map_err(|e| anyhow!("entrada: {}", e))?;
let file_name = Path::new(input)
.file_name()
.map(|s| s.to_string_lossy().to_string())
.unwrap_or_else(|| "audio.wav".into());
let form = reqwest::multipart::Form::new().part(
"audio",
reqwest::multipart::Part::bytes(data).file_name(file_name),
);
super::report(&progress, "voicestudio", "separate", 0, None, None);
let resp = c
.post(format!("{}/clean-audio", b))
.multipart(form)
.send()
.await?;
let stem = Path::new(input)
.file_stem()
.map(|s| s.to_string_lossy().to_string())
.unwrap_or_else(|| "audio".into());View on GitHub (pinned to 8600b91f42)