Command-Line Interface (CLI)
Knowii Voice AI gives you two command-line tools, and they do very different jobs:
transcribeis the real CLI. It runs fully headless, turns audio and video files into subtitles or text, and manages your transcription models. No window, no clicking, no waiting.knowii-voice-aiis the desktop app itself. Its flags let you drive a running app from a script or a keybinding, and change how it starts up.
The first one is what most readers want, so it goes first.
The Transcribe CLI Tutorial walks you through your first file, start to finish, in about ten minutes. This page is the reference you come back to afterwards.
The transcribe CLI
transcribe turns the audio that never passes through your microphone (meeting recordings, interviews, podcasts, old videos) into subtitles or text. Point it at files, get text back.
It decodes media in-process (mp4, mkv, mov, m4a, mp3, wav, ogg, opus, flac, and more), so there is no ffmpeg to install. It runs the same transcription engines as the desktop app, on your machine, offline. And because it is a normal command-line program, it composes with everything else you already use: shell loops, cron jobs, Makefiles, scripts.
transcribe never launches or interferes with a running Knowii Voice AI window. It does its work and exits, so it is safe to use while the desktop app is open. Models downloaded with transcribe models download show up in the app, and models downloaded in the app are available to the CLI.
Where to find it
transcribe is installed with Knowii Voice AI, in the same folder as the main executable:
| Platform | Location |
|---|---|
| Windows | %LOCALAPPDATA%\Programs\knowii-voice-ai\transcribe.exe |
| macOS | /Applications/Knowii Voice AI.app/Contents/MacOS/transcribe |
| Linux (deb / RPM) | /usr/bin/transcribe, already on your PATH |
| Linux (AppImage) | Bundled inside the AppImage (see below) |
The AppImage packs everything, transcribe included, into a single file, so the CLI is not on your PATH. Extract it once and link it wherever you like:
./Knowii-Voice-AI.AppImage --appimage-extract usr/bin/transcribe
sudo install squashfs-root/usr/bin/transcribe /usr/local/bin/transcribe
Prefer the deb or RPM package if you plan to use the CLI a lot.
Check that it works:
transcribe --help
If your shell cannot find the command, that folder is not on your PATH. Either call it by its full path, or add the folder to your PATH so you can type transcribe from anywhere. On macOS, an alias does the job too:
alias transcribe="/Applications/Knowii\ Voice\ AI.app/Contents/MacOS/transcribe"
Your first transcription
Two commands. Download a model, then use it:
transcribe models download whisper-large-v3
transcribe file talk.mp4 --model whisper-large-v3
That writes talk.srt next to talk.mp4. Open the video in any player and your subtitles are there.
Already downloaded a model inside the app? Skip the first command. The CLI and the app share the same models.
Transcribe files
transcribe file <FILE>... --model <NAME_OR_PATH> [OPTIONS]
| Option | Description | Default |
|---|---|---|
<FILE>... | One or more audio/video files. Use - to read one stream from stdin. | (required) |
-m, --model | A model id (e.g. whisper-large-v3) or a path to a model file/directory | (required) |
--engine | Model family for raw paths: whisper, parakeet, moonshine, omnilingual | auto / whisper |
-l, --language | Language code (e.g. en, fr) or auto to detect (Whisper models) | auto |
-f, --format | Output format: srt, vtt, txt, or json | srt |
-o, --output | Output directory, a single output file, or - for stdout | next to each input |
--translate | Translate to English (multilingual Whisper models only) | off |
--initial-prompt <TEXT> | Bias vocabulary/style (Whisper models only) | (none) |
--int8 | Trade a little accuracy for more speed and lower memory, where supported | off |
--no-preprocess | Skip preprocessing (peak-normalize; silence-trim for txt) | off |
--models-dir <DIR> | Where to look up models by id | app data directory |
When --model is an id, it is resolved against your downloaded models. When it is a raw path, pass --engine as well so the CLI knows what it is loading.
Examples:
# Subtitle a video - writes "talk.srt" next to it
transcribe file talk.mp4 --model whisper-large-v3
# Several files at once, into a folder, as WebVTT
transcribe file *.mp4 --model whisper-medium --format vtt --output ./subs/
# Force English and print plain text to the terminal
transcribe file interview.m4a --model whisper-large-v3 --language en --format txt --output -
# Translate a French recording into English subtitles
transcribe file entretien.mp3 --model whisper-large-v3 --translate
# Feed a jargon-heavy recording some vocabulary up front
transcribe file standup.m4a --model whisper-large-v3 --initial-prompt "Kubernetes, Grafana, Prometheus, OTEL"
# Pipe audio in from stdin
cat note.ogg | transcribe file - --model whisper-medium --format txt
# A faster model, in its lower-memory mode
transcribe file clip.mkv --model parakeet-tdt-0.6b-v3 --int8
File names often contain spaces. Always quote them: transcribe file "My Recording.mp4" --model whisper-large-v3.
Output formats
| Format | What you get | Use it for |
|---|---|---|
srt | Numbered subtitle blocks with timestamps | Video players, YouTube, editing software |
vtt | WebVTT subtitles | Web video, HTML5 players |
txt | Plain text, no timestamps | Notes, search, feeding text into another tool |
json | Structured segments with timings | Scripts and further processing |
Model families
Models come in four families. Pass one to --engine only when you point --model at a raw path:
| Family | What it gives you |
|---|---|
whisper | Timestamped segments and the widest language support. Best for subtitles. |
parakeet | Much faster than Whisper. Supports --int8 for more speed and less memory. |
moonshine | Fastest of all on short clips. English plus several other languages. |
omnilingual | Widest language coverage (1,600+). Supports --int8. |
When --model is a known model id (e.g. whisper-large-v3), the family is detected automatically, so you rarely need this flag.
Manage models
transcribe models lists, downloads, and removes transcription models from the terminal, using the same catalog and the same folder as the app. Changes are shared in both directions.
List what is available:
transcribe models list
Models directory: /home/you/.local/share/knowii-voice-ai/models
ID ENGINE SIZE DL NAME
parakeet-tdt-0.6b-v3 Parakeet 785M - Parakeet V3
whisper-tiny Whisper 74M - Whisper - Tiny
whisper-large-v3 Whisper 2952M ✓ Whisper - Large V3
...
The DL column shows ✓ for models you already have. Add --downloaded to list only those, --json for machine-readable output, or --models-dir <DIR> to inspect another location.
Download a model:
transcribe models download whisper-large-v3
The download streams to disk with a progress indicator and is written atomically, so it is safe to run while the app is open. If the model is already there, nothing happens.
Remove a model:
transcribe models remove whisper-large-v3
Use the ID column from transcribe models list. Whisper ids also accept a short form: large-v3 resolves to whisper-large-v3.
Shell completions
Tab completion for subcommands, flags, and model ids:
transcribe completions bash
transcribe completions zsh > ~/.zsh/completions/_transcribe
transcribe completions fish > ~/.config/fish/completions/transcribe.fish
Controlling the desktop app
The knowii-voice-ai executable takes flags of its own. These have nothing to do with file transcription. They exist so you can drive the app from somewhere other than its keyboard shortcut, and change how it starts.
AI-powered voice transcription application
Usage: knowii-voice-ai [OPTIONS]
Options:
--log-level <LEVEL> Set the log level (trace, debug, info, warn, error, off) [default: info]
--toggle-transcription Start or stop a transcription in the running instance
--cancel Abort the running instance's current recording or transcription
--start-hidden Start with the main window hidden (tray only)
--no-tray Start without creating a system tray icon
-h, --help Print help
Control a running app
Knowii Voice AI only ever runs once. Launch it again while it is already open and the new command hands its instructions to the running app, then exits. That is what makes these two flags work:
| Flag | What it does |
|---|---|
--toggle-transcription | Starts recording. Run it again to stop recording, transcribe, and paste, just like the shortcut. |
--cancel | Throws away whatever is in progress and returns to idle. Does nothing if nothing is running. |
This gives you a second way to trigger dictation, alongside your keyboard shortcut. It is handy for a panel or status-bar button (Waybar, Polybar, a dock, a stream deck), a desktop keybinding set in your window manager, or a script that dictates as part of a longer sequence.
# Start recording (or stop it and transcribe, if already recording)
knowii-voice-ai --toggle-transcription
# Discard the current recording or transcription
knowii-voice-ai --cancel
Hyprland keybindings (~/.config/hypr/hyprland.conf):
bind = SUPER, D, exec, knowii-voice-ai --toggle-transcription
bind = SUPER SHIFT, D, exec, knowii-voice-ai --cancel
A Waybar button (~/.config/waybar/config):
"custom/dictate": {
"format": "🎙",
"tooltip": "Dictate with Knowii Voice AI",
"on-click": "knowii-voice-ai --toggle-transcription",
"on-click-right": "knowii-voice-ai --cancel"
}
Running the app with --toggle-transcription or --cancel will not pop the Knowii Voice AI window in front of what you are doing. Otherwise every press of your panel button would interrupt you. Launching it with no flags at all still brings the window forward, as before.
--toggle-transcription always works as a toggle, even with Push-to-talk enabled in the settings. A command has no key to hold down, so there is nothing to release. Your keyboard shortcut keeps behaving exactly as you configured it.
If Knowii Voice AI is not running yet, these flags simply start the app normally, without recording. Recording during startup would only capture the few seconds the app needs to load its model, so your first words would be lost. Start the app, then trigger it again.
Change how the app starts
These flags apply to the launch itself. They have no effect if the app is already running (you will see a note about it in the logs).
| Flag | What it does |
|---|---|
--start-hidden | Starts with the main window hidden, straight to the tray. Same as Start hidden, but only for this launch. |
--no-tray | Starts without a system tray icon, for desktops where you would rather not have one. |
# Start quietly in the tray, e.g. from a session autostart script
knowii-voice-ai --start-hidden
# Start with no tray icon at all
knowii-voice-ai --no-tray
--no-tray, closing the window minimizes itWithout a tray icon there would be no way to bring the window back, so closing it minimizes the window instead of hiding it. You can always find it again in your task switcher. For the same reason, combining --no-tray with a hidden start is not possible: the window is shown, so the app never becomes unreachable.
Logging
--log-level controls how much detail the app writes to its logs. Use it when something misbehaves and you want to see why.
knowii-voice-ai --log-level debug
| Level | What it gives you | When to use it |
|---|---|---|
trace | Internal state dumps, every audio buffer, full timing | Deep debugging. Creates huge files. |
debug | Detailed diagnostics, state transitions, shortcut events | Troubleshooting and bug reports |
info | Startup, model loading, recording, transcription | Normal operation (default) |
warn | Warnings only | Quiet monitoring |
error | Errors only | Minimal logging |
off | Nothing | Not recommended |
When reporting a problem, start the app with --log-level debug, reproduce the issue, then attach the log files. You can also read the most recent logs without leaving the app, under Settings → Advanced.
Where the log files live, and which ones to send, is covered in Application Data and on the Support page.
Related Documentation
- Transcribe CLI Tutorial: your first file, step by step
- Transcription Settings: models and engines in the app
- Debug Settings: in-app debugging options
- Application Data: where models, history, and logs are stored
- Support: get help with issues
Need Help?
- Check the FAQ for common problems
- Email support@knowii.net with your log files
- Visit the Knowii Community for community support