Skip to content

v0.2.0

Choose a tag to compare

@mupozg823 mupozg823 released this 26 Jul 14:07
· 5 commits to main since this release

Transcript-first video understanding: infer from speech, verify only the uncertain moments, and keep the evidence as a reusable index.

Understanding and evidence

  • Transcript collapse is detected and repaired. va ingest compares transcribed duration against VAD-detected speech and records the ratio as transcript_coverage; below 0.5 with at least 60 s of speech it retries and keeps the better attempt, stamping transcript_repair. A tail retranscribe resumes from the stall point instead of redoing the whole file.
  • Uploader captions come first. When the source already carries an original-language caption track, it is adopted instead of re-transcribing, which turns a 43-minute ingest into seconds.
  • ASR provenance. asr_backend records which backend produced the adopted transcript, with a +<backend>(tail) suffix when a tail repair contributed. It is null on the caption path, where transcript_source identifies the origin.
  • Checkpoint field flags. Build a checkpoint from --span, --status, --hypothesis, --confidence and friends instead of JSON. Mixing the two input paths is rejected, including an explicitly empty value.

Editing and handoff

  • A separate edit ledger. Cut decisions live in sequences.jsonl and never rewrite the fact ledger. Promotion requires evidence, and terminal promotion now requires coverage of the cut body — overlap alone is not coverage.
  • Exports: srt, edl, xml, fcpxml, otio, md, with --ids argument order as cut order, revision pins carried into the handoff, and a Receipt sidecar proving artifact integrity.
  • Boundary evaluation (va boundary-eval) plus a join-risk metric that flags jump-cut hazards.

Corpus and reading

  • va view renders a static corpus browser and workspace player — no server, click a scene record to jump the player to its timestamp.
  • va index / va wiki build a markdown-first vault with entity pages, a tag index, and a relation ledger.
  • Search fuses per-family ranking so understanding is not buried under raw transcript matches.

Runtime

  • Experimental Windows support (workspace lock falls back to msvcrt, exercised by a CI smoke job).
  • pyannote moved to the diarize extra, so the default install stays light; an MLX ASR path is available on Apple silicon.

Interface language

Documentation is bilingual, but the running tool is not uniform: most --help text is English while diagnostics, the va brief/va status summaries, and the va view UI are Korean, and there is no locale switch. Timestamps and structural fields are language-neutral; prose is not — your NLE handoff speaks whatever language the ledger does, and the agent writes those fields in the language you ask in.

Install

git clone https://github.com/mupozg823/timecode-agent.git && cd timecode-agent
uv tool install --python 3.12 .          # add '.[diarize]' for pyannote diarization

Requires ffmpeg/ffprobe on PATH, plus yt-dlp for URL ingest. See the README (한국어).