tonhowtf/omniget · error

a transcrição saiu vazia

Error message

a transcrição saiu vazia

What it means

After the source is resolved, `run` checks that the collected subtitle cues are non-empty. If transcription/download produced zero cues, the tool aborts with "a transcrição saiu vazia" because there is nothing to build notes from. This catches videos with no captions, empty caption tracks, or a Whisper run that returned no segments.

Solutions

  1. Choose a video that has available captions or check the URL points to the intended video.
  2. Fall back to the Whisper path by supplying a media file when captions are empty.
  3. Check for region/age restrictions that make the caption track inaccessible.
  4. Retry if the failure was transient (caption fetch occasionally returns empty on throttling).
Defensive patterns

Strategy: fallback

Try / catch

match run(opts).await {
    Err(e) if e.to_string().contains("transcrição saiu vazia") => {
        // fall back to whisper path with a media file
    }
    other => other?,
}

Prevention

When it happens

Trigger: `cues.is_empty()` after source selection: video has no subtitle track, the fetched caption track is empty, or the Whisper transcription returned no cues.

Common situations: A YouTube video with captions disabled; a caption track that exists but contains no entries; audio too short/silent for Whisper to produce segments; wrong language selected yielding an empty track.

Understand the failure class

Background: EmptyResultError / "no results found": when an API or scraper succeeds but returns zero rows — this error's family across 9 libraries.

Related errors


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

Appendix: source

Thrown at src-tauri/omniget-core/src/core/tools/yt_notes.rs:521

        let r = transcribe(&path, &opts, progress.clone()).await?;
        if meta.title.is_empty() {
            meta.title = path
                .file_stem()
                .map(|s| s.to_string_lossy().to_string())
                .unwrap_or_default();
        }
        meta.language = r.language.clone();
        meta.duration_seconds = r.seconds;
        cues = r.cues;
        source = "whisper".to_string();
    } else {
        return Err(anyhow!(
            "informe um link, uma legenda ou um arquivo de mídia"
        ));
    }

    if cues.is_empty() {
        return Err(anyhow!("a transcrição saiu vazia"));
    }
    super::report(&progress, ID, "progress", 4, Some(4), None);
    let chapters = if opts.use_chapters {
        meta.chapters.clone()
    } else {
        Vec::new()
    };
    let boundaries: Vec<i64> = chapters.iter().map(|c| c.start_ms).collect();
    let paragraphs = stitch_at(&cues, &boundaries, &opts.stitch);
    let doc = NotesDoc {
        title: meta.title.clone(),
        channel: meta.channel.clone(),
        url: meta.url.clone(),
        duration_seconds: meta.duration_seconds,
        language: meta.language.clone(),
        generated: chrono::Local::now().format("%Y-%m-%d").to_string(),
        chapters: chapters.clone(),
        paragraphs: paragraphs.clone(),

View on GitHub (pinned to 8600b91f42)