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.
| Key | Default | Accepted values | Description |
|---|---|---|---|
| Delivery | |||
copy_to_clipboard | true | true / false | Paste the text through the clipboard, which keeps accents and punctuation intact on any keyboard layout. |
| Startup | |||
start_at_login | false | true / false | Start Whispy automatically when you log in (macOS app only). |
| Recording | |||
min_recording_duration | 0.3 | number ≥ 0 (s) | Recordings shorter than this many seconds are ignored. |
| Vocabulary | |||
custom_vocabulary | [] | list of words | Names and jargon you often say, so transcription favors those spellings. |
| Trigger | |||
trigger | null | empty (platform default), a key name, a combo like cmd+shift+space, or a keycode | The key or key combination you press to dictate; leave empty to use the platform default. |
trigger_mode | "hold" | hold or toggle | Hold the trigger while you speak (hold), or press it once to start and again to stop (toggle). |
| Streaming | |||
streaming_enabled | true | true / false | Transcribe while you speak so the text appears almost instantly when you stop. |
type_while_speaking | true | true / false | In toggle mode, type each piece of text as soon as it is ready instead of waiting until you stop. |
pause_ms | 600 | number > 0 (ms) | Silence (in milliseconds) that ends a chunk during streaming transcription. |
min_speech_s | 0.7 | number ≥ 0 (s) | Seconds of actual speech a chunk needs before a pause may end it, so short words are not misread. |
min_chunk_s | 0.4 | number ≥ 0 (s) | Chunks shorter than this many seconds are discarded instead of transcribed. |
max_chunk_s | 8.0 | number > min_chunk_s (s) | Longest chunk, in seconds, before it is cut even without a pause; must exceed the minimum chunk length. |
soft_gap_ms | 350 | number > 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_aggressiveness | 2 | integer 0–3 | How 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.