The tx command lets you transcribe audio and video files from Terminal, shell scripts and automation tools. It uses the same models and settings as the app and runs entirely on your Mac.

Set up tx

  1. Open TranscribeX at least once, so its settings and models exist. The command line reads them.
  2. Open Settings › Advanced and turn on Enable Command Line. This creates a link at ~/.local/bin/tx pointing to the tool inside the app.
  3. Make sure ~/.local/bin is on your PATH. TranscribeX doesn’t change your shell settings. For zsh (the macOS default), run:
    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.zshrc
    Then open a new Terminal window.
  4. Check it works:
    tx models

The How to Use button next to the switch shows a short usage summary you can copy. To remove the command, turn off Enable Command Line.

Commands

CommandWhat it does
tx modelsPrints your downloaded (and enabled cloud) models as JSON.
tx transcribe <path> [flags]Transcribes one file and prints the result as JSON.
tx mcpStarts the MCP server for AI assistants. See MCP server.
tx helpPrints usage. --help and -h also work.

tx models

Lists each available model with its id, name, type, volume (size), description and supported languages as [id, label] pairs. Use the id values with --model and --language.

{
  "models" : [
    {
      "description" : "Latest multilingual model. Slow but highest accuracy. Supports 100+ languages.",
      "id" : "large_v3",
      "languages" : [["auto", "Auto Detect"], ["af", "Afrikaans"], ...],
      "name" : "Large V3",
      "type" : "whisper",
      "volume" : "3.1 GB"
    }
  ]
}

tx transcribe

tx transcribe <path> [--flag value ...]

Put the file path first. Every flag is optional.

FlagValuesDefaultNotes
--modelModel id or nameThe app’s default modelFrom tx models, for example large_v3 or FluidAudio_v2.
--languageLanguage id, or autoThe app’s default for that modelMust be supported by the model. Ids differ by model: Whisper uses en, Apple On-Device uses en-US.
--should-diarizetrue / falsefalseAdds speaker labels. Needs Pro and a model with timestamps; otherwise it’s skipped.
--export-formattext, markdown, json, csv, pdf, srt, vtttextAlso accepts txt, plaintext, plain_text and md. pdf requires --export-file.
--export-filePathNoneWrites the transcript to this file (creating folders as needed) instead of returning it in the JSON.
--display-modetext, segmentstexttext is one block; segments is one line per segment. Also accepts full, segment, segmented.
--show-timestamptrue / falsetrueOnly applies with --display-mode segments.
--show-millisecondtrue / falsefalseApplies with segments. Always on for srt and vtt.
--should-persist-jobtrue / falsefalsetrue keeps the job so it appears in the app’s library. By default the job is deleted when the command ends.
--compute-unitsneural, gpu, cpu, allThe app’s settingHardware for on-device Whisper and Parakeet models, for this run only. Try gpu if a model crashes while loading.
--show-debug-logtrue / falsefalseShows the app’s internal log output, for troubleshooting.

True values are true, yes, y and 1; anything else is false. A flag with no value counts as true, but only if the next word starts with -- or is the end of the line. Writing tx transcribe --should-diarize file.mp3 would read file.mp3 as the flag’s value, so put the path first or give an explicit value.

Accepted files

Output

On success, tx transcribe prints a JSON object to standard output:

FieldMeaning
job_idThe job’s id.
statusThe job status (completed).
titleThe file name.
model, model_nameThe model id and display name that were used.
languageThe language id that was used.
export_format, display_modeThe format and mode after normalizing aliases.
compute_unitsThe compute setting in effect.
job_persistedWhether the job was kept in the app.
contentThe transcript text, when no --export-file is given.
export_fileThe path written, when --export-file is given.

The transcript is always inside the JSON. Redirecting output with > file.srt gives you JSON, not an SRT file. Use --export-file to write the file itself.

Errors

On failure, tx prints {"error": "..."} to standard error and exits with code 1. Common messages:

What the command line doesn’t do

To keep scripts predictable, tx skips the app’s automatic extras: AI title and description, automatic summaries, auto-export and notifications. Your app settings aren’t changed.

Examples

Transcribe with the app’s default model and print the text:

tx transcribe ~/Desktop/audio.mp3

Save a Markdown transcript:

tx transcribe ~/Desktop/audio.mp3 --export-format markdown --export-file ~/Desktop/transcript.md

Subtitles with speakers, using Whisper Large V3 in English (Pro):

tx transcribe ~/Desktop/meeting.m4a --model large_v3 --language en --should-diarize true --export-format srt --export-file ~/Desktop/meeting.srt

A segmented PDF with timestamps:

tx transcribe ~/Desktop/interview.mov --export-format pdf --display-mode segments --export-file ~/Desktop/interview.pdf

Keep the job so you can edit it in the app:

tx transcribe ~/Desktop/call.mp4 --should-persist-job true

Get only the text, using jq (install it separately, for example with Homebrew):

tx transcribe ~/Desktop/audio.mp3 | jq -r .content

Script: subtitles for a whole folder

This zsh script writes an .srt file next to every audio and video file in a folder, and skips files that already have one. Save it as transcribe-folder.zsh and run zsh transcribe-folder.zsh ~/Recordings.

#!/bin/zsh
setopt null_glob extended_glob

dir="${1:-.}"

for f in "$dir"/*.(#i)(mp3|wav|m4a|aac|flac|ogg|wma|aiff|mp4|mov|avi|mkv|flv|wmv|m4v|webm); do
  out="${f:r}.srt"
  if [[ -e "$out" ]]; then
    echo "Skipping $f (already has subtitles)"
    continue
  fi
  echo "Transcribing $f"
  if ! tx transcribe "$f" --export-format srt --export-file "$out" > /dev/null; then
    echo "Failed: $f" >&2
  fi
done

Files are transcribed one at a time. Errors are printed and the loop moves on to the next file. For watched folders inside the app, see bulk transcription.

Command line FAQ

Why does Terminal say “command not found: tx”?

~/.local/bin isn’t on your PATH. Add it with the command in Set up tx, then open a new Terminal window. You can also run ~/.local/bin/tx directly.

Does tx need the app to be running?

No. It needs the app to be installed and opened at least once, with the models you want already downloaded.

Can I use Pro models from the command line?

Yes, when Pro is active in the app. Otherwise only free models work.

More in Automation

All help articles · Still stuck? Email support@transcribex.io.