The Problem

Manual transcription and subtitle creation are time‑consuming, especially when integrating with DaVinci Resolve. Users need a locally‑run, single‑click solution that avoids cloud fees and protects proprietary media.

What This Does

AutoSubs is a desktop application built with Tauri that bundles a React + TypeScript UI (AutoSubs-App/src/App.tsx and the component tree) with a native Rust backend (src-tauri/src/main.rs). The Rust side hosts a modular transcription engine (src-tauri/crates/transcription-engine/src/engine.rs) that can run Whisper, Parakeet, or Moonshine models, perform speaker diarization, and optionally translate results. A Lua script (src-tauri/resources/AutoSubs.lua) enables direct import of generated subtitles into DaVinci Resolve.

How To Use It

Setup

install Node dependencies cd AutoSubs-App npm ci # reads package-lock.json

install Rust toolchain (if not present) rustup target add x8664-pc-windows-gnu # example for Windows cargo install tauri-cli

Build / Install

From the repo root npm run tauri build # defined in package.json scripts, invokes Tauri to compile Rust + bundle UI

The command produces platform‑specific installers (src-tauri/target/release/bundle/...).

Configuration

Model files are downloaded on demand to the directory defined in src-tauri/src/models.rs. No environment variables are required out‑of‑the‑box. For Resolve integration, place the generated Lua file (src-tauri/resources/AutoSubs.lua) in the Resolve scripts folder; the UI will call it via the Tauri bridge.

Running

After build, launch the native binary (e.g., AutoSubs-windows-x8664.exe) ./target/release/AutoSubs # on Linux/macOS use the appropriate bundle

The UI loads, you can drag‑and‑drop a media file, select a model (e.g., Whisper) and press Transcribe. Progress events are streamed from Rust to the React front‑end via the IPC layer (src-tauri/src/lib.rs).

Real‑World Use

A post‑production house can install AutoSubs on each editing workstation. An editor drops a raw interview video into the app, selects “Whisper‑large‑v2” and “Enable Diarization”. The subtitles appear in the UI within minutes, are exported as an SRT file, and the same file is automatically imported into DaVinci Resolve through AutoSubs.lua, preserving per‑speaker colors for timeline editing.

Code Health & Issues

Medium – Missing LICENSE – root directory lacks a license file, creating legal uncertainty for redistribution. Low – Limited Test Coverage – only two test files (src-tauri/src/tests.rs and one TS test) for a 200‑file codebase; core audio preprocessing and model loading are untested. Medium – CI Only Builds – GitHub Actions workflow (.github/workflows/package.yml) runs npm ci && npm run tauri build but does not execute unit tests or linting, reducing confidence in CI quality gates. Low – Hard‑coded Paths – src-tauri/src/models.rs uses relative paths for model cache; may break when the app is installed to a non‑standard location. Low – Potential Blocking I/O – Audio preprocessing (src-tauri/src/audio_preprocess.rs) calls FFmpeg synchronously; long files could block the Tauri event loop, affecting UI responsiveness. Medium – Dependency Hygiene – The package-lock.json pins many npm packages, but no audit step is defined; some dependencies may be outdated (e.g., react version not shown).

Overall, the repository compiles cleanly, the Rust code follows idiomatic patterns, and the UI is componentized with reusable primitives (src/components/ui/*). Documentation is minimal (README, two markdown files) but sufficient to get started.

The Bottom Line

AutoSubs delivers a functional, locally‑run subtitle pipeline with a polished UI and Resolve integration. It is ready for evaluation in small‑to‑medium production environments, provided the team can accept the lack of a formal license and add additional testing/CI steps for higher reliability.