Skip to content

Releases: mattbirchler/quicksubs

quicksubs 1.5.0

Choose a tag to compare

@mattbirchler mattbirchler released this 22 Jul 13:54

Benchmark mode

quicksubs bench transcribes a file repeatedly and reports how fast each run went. It is built for running the same test on several Macs and comparing the results.

quicksubs bench audio.mp3 --runs 20
quicksubs bench audio.mp3 --engine apple --engine parakeet   # compare engines
quicksubs bench audio.mp3 --runs 20 --csv results.csv        # export for graphing

Each run reports words per second, real-time factor, die temperature, and thermal state. The summary adds mean, min, max, standard deviation, and median per engine, and flags when it looks like your Mac throttled rather than just got unlucky.

Details that make the numbers trustworthy:

  • Audio conversion happens once, before any runs, so a timing only ever covers the speech engine.
  • A warmup run (excluded from the statistics) absorbs model loading and cache warming, which would otherwise make run 1 an outlier on every machine.
  • Engines run one at a time, so one engine's heat does not contaminate another's numbers.

Comparing across Macs

Every CSV row carries the device model, OS version, core count, memory, engine, and a SHA-256 of the input file, so results from different machines combine with no preprocessing:

# on each Mac
quicksubs bench bench.mp3 --runs 20 --csv "$(hostname -s).csv"

# then, anywhere
cat *.csv > all.csv

Plotting words_per_second against elapsed_since_start gives you a throttle curve. The file hash is what proves two machines benchmarked the same input.

A better progress bar

The progress bar now fills as a gradient, moves smoothly instead of jumping in chunks, and tells you the real-time multiplier and estimated time remaining. It adapts to your terminal width, and respects NO_COLOR and terminals without truecolor support.

Subcommands

quicksubs now has subcommands, with transcribe as the default. Every existing command keeps working exactly as before: quicksubs audio.mp3 and quicksubs transcribe audio.mp3 do the same thing. Nothing you have scripted needs to change.

Fixed

Repeated transcriptions in a single process could read zero audio after the first one, reporting an instant transcription with no words. This only affected the new benchmark mode, never normal transcription.

Install

brew install mattbirchler/tap/quicksubs
brew upgrade quicksubs

Requires macOS 26 or later.

quicksubs 1.4.0

Choose a tag to compare

@mattbirchler mattbirchler released this 18 Jul 22:37

quicksubs now has two extra transcription engines beyond Apple's built-in one: OpenAI Whisper and NVIDIA Parakeet. (Both landed since the last release, 1.2.0.)

What's new

  • New --engine option with three choices:
    • apple (default): Apple's on-device SpeechAnalyzer, no download.
    • whisper: OpenAI Whisper, highest accuracy (about 626 MB model).
    • parakeet: NVIDIA Parakeet, fastest (about 400 MB model), transcribing well above real time on Apple Silicon.
  • If the Quick Subtitles app already downloaded a given engine's model, the CLI reuses that copy in place, so there is no second download. Otherwise it downloads the model once and reuses it on every later run.

Setting QUICKSUBS_NO_APP_SETTINGS=1 still skips reading the app's data, which also skips reusing the app's model, so the CLI downloads its own copy.

Install or upgrade

brew install mattbirchler/tap/quicksubs
brew upgrade quicksubs

quicksubs 1.2.0

Choose a tag to compare

@mattbirchler mattbirchler released this 17 Jul 17:33

quicksubs is now completely free. No purchase required, no transcription limit.

What changed

  • The free tier introduced in 1.1.0 (10 transcriptions, then unlimited with the Quick Subtitles app's one-time purchase) is gone. Everyone gets unlimited transcriptions.
  • Exit code 4 (free limit reached) no longer exists.
  • The unlocked and freeUsesRemaining fields have been removed from --json output. If you scripted against either, this is the only breaking change.

Everything else works exactly as before: on-device transcription to txt/srt/vtt, optional AI clean-up with your own Gemini key, and the app's contextual terms applied automatically.

Install or upgrade

brew install mattbirchler/tap/quicksubs
brew upgrade quicksubs

quicksubs 1.1.1

Choose a tag to compare

@mattbirchler mattbirchler released this 17 Jul 15:14

A small quality-of-life update for watching long transcriptions.

What changed

  • Transcription progress now draws as a live progress bar when you run quicksubs in a terminal, instead of printing a line per 10%.
  • When output is piped or redirected (scripts, cron, CI logs), the old one-line milestone format is kept automatically so logs stay clean.
  • -q / --quiet silences both, as before.

Install or upgrade

brew install mattbirchler/tap/quicksubs
brew upgrade quicksubs

quicksubs 1.1.0

Choose a tag to compare

@mattbirchler mattbirchler released this 17 Jul 15:06

This release adds a free tier that matches the Quick Subtitles app.

What changed

  • quicksubs now includes 10 free transcriptions. Unlimited use unlocks automatically when the Quick Subtitles app is installed from the Mac App Store with its one-time purchase.
  • New exit code 4 means "free limit reached", so scripts can tell it apart from a transcription failure.
  • --json output now includes unlocked and freeUsesRemaining fields.

Everything else is unchanged: on-device Apple transcription to txt/srt/vtt, optional Gemini clean-up with your own API key, and automation-friendly stdout/stderr separation.

Install or upgrade

brew install mattbirchler/tap/quicksubs
brew upgrade quicksubs