Live Dictation & Captions
openasr live captures audio from a microphone or system loopback and prints
final-per-utterance live captions. For packs that declare streaming-partial
support, it also emits incremental partial transcripts.
openasr liveBy default this opens the system’s default input device (--source mic) and
prints human-readable captions to stdout.
Audio sources
Section titled “Audio sources”| Flag | Effect |
|---|---|
--source mic | Default input device (the default). |
--source system | Loopback / system audio capture. |
--device <NAME> | Select a specific microphone by exact or best-effort name. |
--list-devices | List available input devices and configs, then exit. |
--input-file <PATH> | Simulate live streaming from a local file (WAV/MP3/MP4/M4A/WEBM/FLAC/OGG) instead of capturing from a device — useful for testing or demos. |
Output format
Section titled “Output format”-f / --format controls what reaches stdout:
text(default) — human-readable line-per-utterance captions.jsonl— one JSON object per line, suited for piping into another tool.
openasr live --source mic --max-seconds 5 --format jsonlVAD tuning
Section titled “VAD tuning”Voice-activity detection controls when an utterance opens and closes. All thresholds are optional; the defaults come from the loaded model pack.
| Flag | Purpose |
|---|---|
--frame-duration-ms <10|20|30> | Realtime frame duration (default 20). |
--speech-start-ms <N> | Required speech duration before VAD starts an utterance. |
--speech-stop-ms <N> | Required silence duration before VAD closes an utterance. |
--pre-roll-ms <N> | Audio kept before the VAD speech-start point. |
--max-utterance-ms <N> | Maximum utterance duration before a forced close. |
--no-speech-timeout-ms <N> | Initial no-speech timeout. |
--energy-threshold <F> | Energy threshold for the MVP VAD. |
Lowering --speech-stop-ms produces shorter, snappier segments; raising it
lets the speaker pause mid-sentence without splitting the utterance.
Streaming partials
Section titled “Streaming partials”Packs that declare streaming-partial support emit incremental transcript snapshots between finalized utterances. Two flags control cadence:
| Flag | Default | Purpose |
|---|---|---|
--partial-interval-ms <N> | 300 | Minimum interval between partial emissions. |
--partial-window-ms <N> | 3 000 | Sliding-window duration for partial snapshot audio. |
These flags have no effect on packs that do not support partials.
Session limits
Section titled “Session limits”| Flag | Effect |
|---|---|
--max-seconds <N> | Stop after N seconds. |
--max-utterances <N> | Stop after N completed utterances. |
Both are optional; without either the session runs until you interrupt it.
Session export (--save)
Section titled “Session export (--save)”Save the finalized transcript when the session ends. The file extension controls the export format:
openasr live --save meeting.srtSupported extensions: .txt, .json, .md, .srt, .vtt.
| Flag | Effect |
|---|---|
--save-join-segments | Join finalized caption segments into one paragraph. |
--save-suggest-title | Suggest a conservative title derived from the transcript text. |
OBS caption integration
Section titled “OBS caption integration”For live-streaming setups, openasr live can continuously update a local text
file that an OBS Text Source reads via its “Read from file” mode:
openasr live --obs-text-file captions.txt --obs-max-lines 2| Flag | Default | Effect |
|---|---|---|
--obs-text-file <PATH> | — | Path to the text file OBS reads. |
--obs-max-lines <N> | 3 | Max finalized/revised lines kept in the file. |
--obs-clear-on-start | off | Clear the file when the session starts. |
--obs-clear-on-stop | off | Clear the file when the session stops. |
Markdown session notes
Section titled “Markdown session notes”Write a Markdown note from the session on stop:
openasr live --markdown-note session.md --markdown-suggest-title| Flag | Effect |
|---|---|
--markdown-note <PATH> | Write a Markdown live-session note on stop. |
--markdown-append | Append to an existing file instead of replacing it. |
--markdown-title <STR> | Override the note title. |
--markdown-suggest-title | Suggest a title from the transcript text. |
Diarization
Section titled “Diarization”--diarize labels finalized utterances with anonymous speakers
(SPEAKER_00, SPEAKER_01, …). Unlike openasr transcribe, live
diarization does not accept a --speakers count hint.
Passing --diarize may install the required WeSpeaker speaker-embedder
capability pack — the flag itself serves as consent. See the
Diarization page for the full speaker-enrollment
story.
Model and download flags
Section titled “Model and download flags”| Flag | Env | Effect |
|---|---|---|
-m / --model <ID> | OPENASR_MODEL | Model id from the registry. |
--model-pack <PATH> | — | Use a local .oasr pack file directly. |
-y / --yes | OPENASR_ASSUME_YES | Download a missing model without the interactive prompt. |
--offline (alias --no-pull) | OPENASR_OFFLINE | Never download; fail if the model is not already installed. |
Nothing is auto-downloaded silently. The download path only runs when gated
by an interactive confirmation, --yes, or OPENASR_ASSUME_YES;
--offline disables it entirely.
Runtime posture
Section titled “Runtime posture”openasr live runs the native backend — the same fail-closed,
locally-executed engine as openasr transcribe. There is no cloud fallback
and no telemetry. Unsupported configurations error out rather than producing
fabricated results.
Related pages
Section titled “Related pages”- CLI reference — full command overview including
transcribe,serve, and model management. - Server API — the
GET /v1/audio/realtimeWebSocket endpoint provides a server-side streaming path that shares the same underlying event vocabulary (VAD, partial/final transcript segments, speech-boundary). - Diarization — speaker enrollment, embedding packs, and per-speaker labeling details.
- Models — available model packs and quantizations.