MP4 · MKV · MOV · AVI · WebM
Local files, or direct video and YouTube URLs through yt-dlp.
A desktop workspace for audio description on Windows, macOS and Linux. Draft timed descriptions with local models, your subscription tools or explicit API connections, edit every cue, and hear them against the soundtrack before you export.
Windows: signed by Scott Converse. Mac: macOS 15+ Apple Silicon, no Apple publisher certificate or notarization; no Intel DMG. Linux: Ubuntu 24.04 x64 tested, unsigned. Portable Linux tar, repository setup and installation. Compare downloads with their release checksums. Ollama, subscription tools and model weights are separate.
Start here — no programming · Full user manual · Technical guide
Local files, or direct video and YouTube URLs through yt-dlp.
Whole video, next 20 or next 60 seconds, with glossary continuity across chunks.
Start, end and text per cue. Saved as an .adproject; SRT/VTT import.
Windows SAPI/OneCore, macOS voices or Linux eSpeak NG; optional OpenAI speech, with soundtrack ducking.
Speech is measured locally; cues that cannot fit become pause narration.
Plus TXT and project JSON, with coverage sidecars for every event.
Work in short passages, refine what matters, and hear each description in context. The model drafts; every cue stays yours to change.
Open a local video or import SRT/VTT cues alongside it. Start manually, or choose a short range for an AI first draft.
Edit words and timing inline, correct character cards in Glossary, and use the Scene tab to ask about a scene. You decide what belongs in the description.
Review with your native system voice and the original soundtrack. Export scripts, narrated audio or a complete MP4 with pause narration.
Use Ollama, native Codex/Claude/Antigravity, your existing subscription gateway, named OpenAI-compatible servers or explicit Gemini/Anthropic APIs. The picker always shows the exact model, and there is no silent fallback.
Up to eight 640px frames per request. No audio.
Video analysis with your API key.
Tested exact-tag profiles: gemma4:12b, gemma4:26b and qwen3.8:27b-q6_K-vision — thinking off, 32K output, 64K context. Aliases do not inherit the profile.
| Workflow | Key | Data sent |
|---|---|---|
| Manual cues, subtitles, native speech, MP3 | None | Local processing |
| Ollama on this computer | None | Frames and prompts to local Ollama |
| Ollama cloud or remote | Set in Ollama | Sampled frames leave the computer after confirmation |
| Gemini analysis, Ask, Explore | Gemini key | Video with audio unless silent upload is chosen |
| Codex / Claude / Antigravity native tools | Existing subscription login | Sampled frames and prompts after confirmation |
| Existing subscription gateway | Existing client-key file | Sampled frames through selected gateway account |
| Compatible server / Anthropic API | Profile or API key | Sampled frames to the selected endpoint |
| OpenAI speech | OpenAI key | Description text after confirmation |
Cloud use requires provider access and may incur charges. Native tools use their normal subscription sign-in; the gateway retains its existing OAuth accounts. API credits are separate. A catalog listing does not establish account entitlement or vision.
Desktop, Python, CLI, authenticated REST/OpenAPI and MCP share one durable job queue: batch submission, cancel and resume, paged reads, edits, coverage, scene tools and exports.
Windows / Mac / Linux editor
Import the service
Native CLI on every host
Authenticated loopback, OpenAPI
17 tools · stdio + HTTP
Pinned local YAMNet detector
Selected vision connection
Event-bounded slots
Measured speech, ≤ 1.15×
Pauses where nothing fits
Developer integration guide ↗ · Architecture and data boundaries ↗
A model can draft. It cannot make the final editorial decision for your audience.
Ollama, native subscription tools and compatible connections receive sampled frames without audio. The engine measures speech protection separately. Check visual facts, detector mistakes and missing events yourself.
Manual cue editing, subtitle import, native system speech and local MP3 export work without a provider key.
Cues and glossary live in an .adproject file. Uncertain observations block complete media exports instead of slipping through.
For city, council and board meeting videos. It describes only frames that changed, reads slides at up to 1280 pixels, finds votes from a captions file and pauses only for votes, speaker changes, slides and on-screen text. It is turned on in settings.json ("drafting_mode": "Public meeting"); the window has no switch for it yet. How to turn it on.
Up from 29.5 % in 0.8.0. 105 cues on 13 test videos, graded by hand.
Down from 15.4 %. Trivial cues fell from 36.5 % to 10.5 %.
Every cue was spoken between speech or paused the video for a meeting event. Up from 45 % in a gap.
Meeting results come from a small test set with model gemma4:12b; they are not a promise for your video. The model can still report a vote when no hand is up, results change from run to run and some videos get very few cues. Earlier native acceptance (three 120-second clips) kept a wrong person, a short omitted sequence and uncertain text: correct every draft before export. Separate keyed APIs and local compatible servers keep their live-testing limits. The 0.8.1 Mac and Linux builds passed 311 tests on each GitHub test machine (0 failed, 1 skipped); human listening, VoiceOver/Orca and destination subscription entitlement remain unverified. Release notes, verification receipt and checksums ↗
Start with one scene
Windows, macOS and Linux · Version 0.8.1. Only Windows has Scott Converse publisher signing. Mac/Linux updates are manual. Compare each download with its release’s SHA256SUMS.txt.