CLASSIFICATION: PUBLIC DOC-ID: JGS-VOICEFLOW · SETTINGS REV 0.3.0

§ Settings Reference

VoiceFlow settings guide

What each setting does, why you'd change it, when to apply it, and how to customize VoiceFlow for your workflow. Everything you need to configure VoiceFlow to fit the way you work.

Where settings live

VoiceFlow settings are stored in a plain-text TOML config file in your Windows app-data folder. Open it by right-clicking the tray icon and selecting Settings, or navigate manually to:

%APPDATA%\VoiceFlow\config.toml

Two ways to configure:

  1. Settings dialog (recommended). Right-click the VoiceFlow tray icon → Settings. Most common settings have a UI. Changes apply immediately to the next capture.
  2. Direct config file edit. Open %APPDATA%\VoiceFlow\config.toml in a text editor. Restart VoiceFlow for changes to take effect. Use this for advanced configuration (like personal dictionary or LLM endpoints).

Hotkeys & Trigger

These settings control how you start, stop, and manage recordings.

Recording hotkey

Config: hotkey.record | Default: Ctrl+Space

What it does: The key combination you hold (or tap, if toggle mode) to trigger recording.

Why change it: Your preferred hotkey conflicts with another app, or you want a combo that's easier to reach.

How to use: Open Settings, go to Hotkeys, click in the Record field, and press the keys you want (single key or combination). Try Alt+R, Ctrl+` (backtick, good for programmers), or CapsLock if you remap it.

Examples:

  • Ctrl+Space: default, works in most apps
  • Alt+V: mnemonic for "voice"
  • Ctrl+Shift+D: "dictate", easy to remember
Gotcha: Some apps (like VS Code, Windows Terminal) swallow common hotkeys. Test your choice in the apps you use most. If it doesn't work, rebind to something less common.

Trigger style

Config: trigger.style | Default: hold

What it does: How you activate recording: hold the key down while speaking, or tap once to start and tap again to stop.

Options:

  • hold: record while key is pressed, stop on release. Instant feedback on when recording ends.
  • toggle: tap once to start, tap again to stop. Hands-free, good for longer dictations.

When to use:

  • Hold: quick bursts to Claude Code, chat messages, PR descriptions. You know exactly when recording stops.
  • Toggle: hands-free note-taking while reading docs, long rambling thoughts, or meetings. No need to hold a key.

Why you'd switch: Your use case changed (now doing more hands-free work), or you want to reduce finger strain on long sessions.

Paste-again hotkey

Config: hotkey.paste_again | Default: Ctrl+Shift+V

What it does: Re-paste the last transcription at your cursor, without re-recording.

Why use it: You dictated something, pasted it, then clicked elsewhere. Now you want to paste the same text somewhere else without re-speaking.

Example: You dictate an error message to Claude Code, it gets pasted in the chat. Then you realize you also need it in a GitHub issue. Hit paste-again and it appears in the issue without re-recording.

Cancel hotkey

Config: hotkey.cancel | Default: Esc

What it does: Stop recording and discard the current capture (don't paste anything).

When you'd use it: You started recording, realized you want to rephrase, and want to bail without pasting. In hold mode, just release; in toggle mode, hit Esc to cancel before you tap to stop.

Output & Cleanup

These settings control what VoiceFlow does with the raw transcript before pasting it.

Default output mode

Config: output.mode | Default: clean

What it does: The cleanup mode that runs on every capture (unless you override it from the tray menu per-capture).

Options:

  • raw: verbatim transcript, lightly punctuated. Nothing removed or reworded.
  • clean: removes filler ("um", "uh", repeats), fixes capitalization, and improves punctuation. Works offline, instant.
  • code: like clean, but also trims politeness and fixes programming terms ("dunder init" → __init__). Perfect for AI coding assistants.
  • summary: condenses rambling speech into a tight, one-line brief. Needs an LLM.
  • prompt: reformats your spoken words into a structured LLM prompt (Role, Task, Constraints, Context). Needs an LLM.
  • systems: rewrites speech into formal Systems Engineering terminology per INCOSE/ISO 15288 (e.g. "make sure it works" → "verify compliance with the requirement"). Needs an LLM.

Which to pick:

  • Writing most of the time? Use clean (default, works everywhere, instant).
  • Dictating to Claude Code or Cursor? Use code (programming terms fixed, politeness trimmed).
  • Taking rough notes you'll clean up later? Use raw.
  • Want AI to condense your thoughts? Use summary or prompt (after configuring an LLM).
You can override per-capture: even if your default is clean, right-click the tray icon before dictating and pick a different mode just for that capture. Useful when you switch tasks mid-day.

LLM provider

Config: llm.provider | Default: none

What it does: Points VoiceFlow at an AI model to power the summary and prompt modes. Completely optional.

Options:

  • none: no LLM. summary and prompt fall back to a rule-based cleaner (offline, instant, lower quality).
  • openai_compatible: any OpenAI-compatible endpoint. Examples: Ollama, LM Studio, Azure OpenAI, or even your own local server.
  • anthropic: Claude API (requires API key; your text is sent to Anthropic).
  • openai: OpenAI API (requires API key; your text is sent to OpenAI).

When to configure:

  • You want better summaries: rambling spoken thoughts condensed into tight, readable text. Great for capturing half-formed ideas.
  • You dictate prompts to AI: spoken instructions reformatted into structured role/task prompts, saving you keypresses.
  • You want true local-only processing: use Ollama or LM Studio with a local model (careful: some model names ending in :cloud route through a remote server).

Setup example (Ollama):

Config (config.toml):
[llm]
provider = "openai_compatible"
base_url = "http://localhost:11434/v1"
model = "mistral"

Then fire up Ollama, run ollama serve, and your summaries will use the Mistral model running on your machine.

Privacy tip: A local model (Ollama, LM Studio) keeps your text on your machine. A cloud provider (OpenAI, Anthropic) sends it to their servers. Pick based on your comfort level and speed needs.

Personal dictionary

Config: [dictionary] section in config.toml

What it does: A list of spoken phrases and what they should become in your output. Merges on top of the built-in programming dictionary (your entries win if there's a conflict).

Why use it: VoiceFlow keeps mishearing a term, or you want to add jargon specific to your domain, company, or stack.

How to add terms: Edit config.toml directly. Find or create the [dictionary] section and add pairs:

[dictionary]
"dunder main" = "__main__"
"postgres" = "PostgreSQL"
"my company name" = "MyCompanyName"
"async await" = "async/await"

Tips for good dictionary terms:

  • Exact matches only. The term must match exactly as spoken (case-insensitive). "postgres" matches but "postgre" won't.
  • Multi-word phrases work. You can map "machine learning model" → "ML model".
  • Symbols are safe. Use any symbols you need: "double quote" → " works fine.
  • Order doesn't matter. Longer phrases are processed first, so specific terms take precedence.

Real examples from v1:

  • "dunder init" → __init__
  • "fast api" → FastAPI
  • "dot py file" → .py file
  • "postgres connection" → PostgreSQL connection

When to add a term: After you notice VoiceFlow mishearing the same word three times. Add it to the dictionary and it's fixed from then on, in every mode.

Speech Recognition

These settings control the on-device speech engine and language behavior.

Language

Config: speech.language | Default: auto-detect based on Windows locale

What it does: The language the speech engine listens for. Auto-detection is the default but slower and less accurate than explicitly setting a language.

Why change it: You work in a specific language and want faster, more accurate transcription.

Examples: en (English), fr (French), de (German), ja (Japanese). See Whisper's supported languages for the full list.

Performance: Setting a language is ~10-20% faster than auto-detect, with better accuracy for that language.

Speech engine

Config: speech.engine | Default: auto-configured on first run

What it does: The underlying transcription model and provider. VoiceFlow auto-configures on first run based on your hardware.

Options (v0.3.0):

  • parakeet: NVIDIA's lightweight model. Faster, lower accuracy than Whisper. Bundled in the installer. Recommended for most users.
  • whisper_tiny, whisper_base, whisper_small: OpenAI Whisper models, in order of speed vs. accuracy trade-off. Tiny is fast but less accurate; small is slower but more accurate. All bundled in the installer.

When to switch:

  • Parakeet is mishearing you. Try whisper_base for better accuracy (trades speed).
  • Transcription is too slow. Try parakeet or whisper_tiny for speed (trades accuracy).
  • You need a specific language. Some models perform better in certain languages. Test both and see.
GPU acceleration: NVIDIA GPUs (CUDA) are supported for all models. AMD/Intel GPUs are not accelerated; those machines default to CPU, which is still fast enough.

Behavior

These settings control app-level behavior and persistence.

Start on login

Config: app.start_on_login | Default: false

What it does: Whether VoiceFlow launches automatically when you log into Windows.

Why enable it: You use VoiceFlow every day and want it running without remembering to start it. It sits quietly in the tray, takes no resources until you dictate.

How to set it: Right-click the tray icon → Settings → check Start on login. That's it; next restart, it'll launch automatically.

Tray icon click behavior

Config: app.tray_click | Default: menu

What it does: What happens when you left-click the VoiceFlow tray icon.

Options:

  • menu: opens the context menu (mode switcher, Settings, Help).
  • paste_again: re-pastes the last transcription (convenience shortcut).
  • toggle_mode: cycles through modes without opening a menu.

Choose based on workflow:

  • Default (menu): most flexible, covers everything in one click.
  • paste_again: if you frequently re-paste the last dictation without changing it.
  • toggle_mode: if you switch modes often and want a one-click cycle.

Capture history retention

Config: app.history_days | Default: 30

What it does: How many days of capture history VoiceFlow keeps (transcripts, timestamps, modes used). Older entries are automatically deleted.

Why care: History takes disk space (minimal) and can be a privacy concern if your machine is ever accessed by someone else.

Options:

  • 0: no history, every capture is forgotten immediately.
  • 7: keep a week of history.
  • 30: default, keep a month.
  • -1: keep forever.

Why you'd change it: Privacy-sensitive work (medical, legal transcripts) → set to 0. Research or reference work where you want to look back → set to -1.

Recipes & Workflows

Common scenarios and how to configure VoiceFlow for each.

Scenario A: I dictate to Claude Code all day

Setup:

  • Default mode: code
  • Hotkey: Ctrl+Space (default is fine)
  • Trigger: hold (default)
  • Personal dictionary: add your stack's terms (e.g., "dunder init" → __init__, "your framework" → "YourFramework")

Why: Code mode strips politeness and fixes terms. You hold the key, speak an instruction, release, and it pastes clean and ready to send. Your custom terms get fixed every time.

Pro tip: set paste-again hotkey to something one-handed so you can re-paste a prompt into multiple places without re-speaking.

Scenario B: I take notes while reading docs (hands-free)

Setup:

  • Default mode: clean
  • Trigger: toggle
  • Hotkey: something easy to tap (e.g., Alt+V)

Why: Toggle mode means you tap once to start, tap again to stop. No key-holding. Clean mode removes filler but keeps structure, great for documentation notes. You can ramble and pause without stopping the recording.

Workflow: Tap Alt+V once, read and talk, tap Alt+V again. Text lands in your editor, cleaned up and ready.

Scenario C: I want AI-powered summaries of rambling thoughts

Setup:

  • Default mode: clean (or summary if you want summaries most of the time)
  • LLM provider: configure Ollama or your cloud provider of choice (OpenAI, Anthropic)
  • Trigger: toggle (hands-free for longer thoughts)

Why: LLM modes condense rambling speech into tight, one-line notes. Useful for capturing half-formed ideas and turning them into actionable items. You talk for 30 seconds, it becomes a one-line note ready to paste into your issue tracker.

Setup (Ollama example): Install Ollama, run ollama pull mistral, start the server, then point VoiceFlow at http://localhost:11434/v1 with model mistral.

Scenario D: Privacy-first, zero history

Setup:

  • Default mode: clean or raw
  • LLM provider: none
  • Hotkey: leave default or set to something you control
  • Capture history: 0 (forget every capture immediately)

Why: Sensitive work (medical, legal, financial transcripts) needs zero persistence and zero cloud egress. This config ensures everything stays on-device and nothing is logged.

Verify: See privacy for how to confirm zero network usage with a firewall rule.

Scenario E: My hotkey conflicts with another app

Problem: You use Ctrl+Space to invoke an IDE feature or autohotkey script, and VoiceFlow grabs it first.

Solution: Rebind VoiceFlow's hotkey.

  • Right-click tray icon → SettingsHotkeys → click the Record field
  • Press the new keys you want (try Alt+Shift+V, Ctrl+` backtick, or CapsLock if you remap it)
  • Test in the apps where you use VoiceFlow most

Pro tip: If a key combo still doesn't work, check the other app's settings, since it might be blocking the hotkey at a system level.

Quick reference table

Setting Config key Default Type When to change
Recording hotkey hotkey.record Ctrl+Space Hotkey Conflicts with another app
Trigger style trigger.style hold hold / toggle Want hands-free, or quick bursts
Paste-again hotkey hotkey.paste_again Ctrl+Shift+V Hotkey Want easier access to re-paste
Cancel hotkey hotkey.cancel Esc Hotkey Rarely needed; conflicts if common in your app
Default output mode output.mode clean raw / clean / code / summary / prompt / systems Dictating to AI, or want LLM cleanup
LLM provider llm.provider none none / openai_compatible / anthropic / openai Want better summaries or prompts
Personal dictionary [dictionary] (empty) Key-value pairs App mishears a term, or add domain jargon
Language speech.language auto-detect en, fr, de, etc. Want faster, more accurate transcription
Speech engine speech.engine auto-configured parakeet / whisper_* Accuracy or speed needs change
Start on login app.start_on_login false true / false Use VoiceFlow every day
Tray click behavior app.tray_click menu menu / paste_again / toggle_mode Different workflow preferences
History retention app.history_days 30 0 to -1 (0 = none, -1 = forever) Privacy concerns, or need long-term record

More questions? See the FAQ, check troubleshooting, or read the full guide. For bugs or feature requests, visit the GitHub issues page.