Whispy docs

Configuration

Whispy reads ~/.config/whispy/config.json. Every key is optional: anything missing falls back to its default, and an invalid value is replaced by the default with a warning in the log.

Config builder

Set the values you want and copy the result. Only the keys you changed are shown; merge them into your existing config.json, then restart Whispy.

This builder needs JavaScript. Without it, use the reference table below to write the JSON by hand.

How chunking works

While you speak, Whispy cuts the recording into chunks at pauses and transcribes each one. This illustration shows where the cuts fall for the current pause_ms, min_speech_s, soft_gap_ms, min_chunk_s and max_chunk_s.

The visualizer needs JavaScript. In short: a pause longer than pause_ms closes a chunk once it holds min_speech_s of speech; a chunk longer than max_chunk_s is cut at the next gap of soft_gap_ms, or unconditionally at 1.5 times max_chunk_s.

Reference

Generated from the configuration schema in src/whispy/core/config.py.

KeyDefaultAccepted valuesDescription
Delivery
copy_to_clipboardtruetrue / falsePaste the text through the clipboard, which keeps accents and punctuation intact on any keyboard layout.
Startup
start_at_loginfalsetrue / falseStart Whispy automatically when you log in (macOS app only).
Recording
min_recording_duration0.3number ≥ 0 (s)Recordings shorter than this many seconds are ignored.
Vocabulary
custom_vocabulary[]list of wordsNames and jargon you often say, so transcription favors those spellings.
Trigger
triggernullempty (platform default), a key name, a combo like cmd+shift+space, or a keycodeThe key or key combination you press to dictate; leave empty to use the platform default.
trigger_mode"hold"hold or toggleHold the trigger while you speak (hold), or press it once to start and again to stop (toggle).
Streaming
streaming_enabledtruetrue / falseTranscribe while you speak so the text appears almost instantly when you stop.
type_while_speakingtruetrue / falseIn toggle mode, type each piece of text as soon as it is ready instead of waiting until you stop.
pause_ms600number > 0 (ms)Silence (in milliseconds) that ends a chunk during streaming transcription.
min_speech_s0.7number ≥ 0 (s)Seconds of actual speech a chunk needs before a pause may end it, so short words are not misread.
min_chunk_s0.4number ≥ 0 (s)Chunks shorter than this many seconds are discarded instead of transcribed.
max_chunk_s8.0number > min_chunk_s (s)Longest chunk, in seconds, before it is cut even without a pause; must exceed the minimum chunk length.
soft_gap_ms350number > 0 (ms)Once a chunk is too long, wait for a gap of this many milliseconds to cut it, to avoid splitting a word.
vad_aggressiveness2integer 0–3How strictly silence is detected, from 0 (lenient) to 3 (strict); used to find where chunks end.

On macOS you can also choose the trigger from the menu bar (Settings → Trigger): Fn, Right Command, Right Option or F13. The change applies immediately.