ASRSubs is a desktop app for generating subtitles from local media files without sending the audio to a hosted transcription service. You pick a file, choose a local model, let the app transcribe and align the speech, then review and save the resulting .srt file.
It is built with Wails and ships with a managed Python runtime plus bundled media tools so the app can prepare audio, run local ASR models, and generate subtitle timing on the machine itself.
- runs speech-to-subtitle workflows locally
- supports both audio and video inputs
- downloads transcription models on demand and reuses them later
- prepares media automatically before transcription
- shows stage-by-stage progress during runtime setup, downloads, transcription, alignment, and subtitle building
- opens the finished subtitle draft in an editor so you can make final fixes before saving
- Open the app and choose a media file.
- Prepare the local runtime on the first run.
- Download the transcription model you want to use.
- Click Start Transcription.
- Review the generated subtitle draft.
- Save the final
.srtfile where you want.
ASRSubs currently accepts:
.wav, .mp3, .m4a, .aac, .flac, .ogg, .opus, .mp4, .mov, .m4v, .mkv, .avi, .webm
The app currently exposes two local ASR model options:
Qwen3-ASR-1.7BBest accuracy, slower, larger first download.Qwen3-ASR-0.6BFaster startup, lighter footprint, good for smaller machines and quicker runs.
The app also manages an internal forced aligner automatically when timestamp generation needs it.
Inside the settings drawer you can:
- switch between the available local models
- download or remove model files
- change subtitle grouping preferences
- change max line length and lines per subtitle
- change the alignment chunk size used for longer files
- re-run local runtime preparation if the managed runtime needs repair
The repository currently builds desktop packages for:
- macOS
- Windows
Windows builds are published as both a portable ZIP and an installer. macOS builds are packaged as a DMG.
Run the app in development mode:
wails devBuild the frontend assets directly:
cd frontend && npm run buildBuild the packaged macOS app and DMG:
./scripts/build-macos-package.shThat flow:
- builds
ASRSubs.app - stages the managed runtime, worker script, requirements,
ffmpeg, andffprobe - creates
build/bin/ASRSubs.dmg
Important staging inputs:
ASRSUBS_PYTHON_STANDALONEASRSUBS_FFMPEG_PATHASRSUBS_FFPROBE_PATH
If those are not set, the staging helper falls back to packaged runtime/tool locations in the repo or the current shell PATH.
The repository produces:
ASRSubs-<version>-windows-amd64-portable.zipASRSubs-<version>-windows-amd64-installer.exe
The Windows GitHub Actions workflow:
- installs Go, Node, and Python toolchains
- installs
ffmpegand NSIS - builds
ASRSubs.exe - stages the bundled runtime and tools
- creates the portable ZIP and installer
./scripts/verify-macos-package.sh
./scripts/verify-windows-package-layout.sh
./scripts/verify-windows-workflow.sh- macOS may show a Gatekeeper warning the first time you open a local unsigned build
- Windows may show a SmartScreen warning for unsigned artifacts
For local testing, that is expected.


