Setup Guide English - zkwi/VoxType GitHub Wiki

VoxType User Configuration Guide: Windows Voice Typing, Selectable ASR, and Optional LLM Polishing

This page is the repository draft mirror for the GitHub Wiki Setup-Guide-English page, so the Wiki and repository docs do not drift apart. When updating the live Wiki, check this file as well.

This guide is for first-time setup and daily VoxType use. It covers Windows voice typing, speech-to-text with Doubao streaming ASR or Alibaba Cloud FunASR, optional OpenAI-compatible LLM polishing, automatic paste, clipboard restore, hotwords, and troubleshooting. Start with the minimum setup that makes the main workflow usable, then enable quality, trigger, caption, update, and privacy-related options as needed.

Chinese version: 声写 VoxType 用户配置指南

1. Install and Check Windows Permissions

VoxType targets Windows 10/11.

Download the Windows installer from GitHub Releases:

https://github.com/zkwi/VoxType/releases

The installer includes the Microsoft Edge WebView2 Bootstrapper. On a clean machine without WebView2 Runtime, the installer installs it automatically.

Before recording, make sure Windows allows desktop apps to access the microphone:

Windows Settings -> Privacy & security -> Microphone -> Let desktop apps access your microphone

2. Main Pages

VoxType has six main pages:

Page Purpose
Home Check current state, start/stop voice input, and see trigger methods
Hotwords & prompts Manage hotwords, scene notes, AI prompts, and automatic hotword candidates
API Config Select and configure ASR credentials and optional LLM API
Options Configure shortcuts, paste method, microphone, floating captions, startup, and close behavior
Privacy & local data Review storage/upload boundaries and clear local context, hotword history, and stats
Analytics View recent 24-hour, recent 7-day, and daily usage stats

The Home voice card shows idle/recording state plus the primary shortcut, middle mouse, and right Alt in compact chips. Recent input and input performance stay below it.

Current UI Reference

After a successful input, Home shows "Input completed". This means VoxType copied the text and attempted to paste it. If the target field did not receive text, press Ctrl + V, click "Copy text", or inspect the result with "View recognized text". The recognized text is kept only in the current window.

When the selected ASR credentials are missing, API Config first shows a three-step first-use guide: choose the provider and fill keys, test the connection, then return Home to start dictating. Setup health follows below: ASR keys, microphone, paste method, trigger method, and privacy status are shown separately. Only issues that block recording, recognition, or paste should be prominent warnings. Optional settings such as right Alt, middle mouse, recent context, and automatic hotwords should remain softer reminders. Public screenshots should blur real App Keys, Access Keys, Alibaba Cloud API Keys, and other secrets.

Privacy & local data centralizes the storage/upload boundaries for recent context, automatic hotword history, usage stats, ASR audio, screen OCR, LLM polishing text, and clipboard snapshots. It also clears local context, hotword history, and usage stats.

3. Required: Configure ASR

The core workflow depends on one working streaming ASR service. Doubao ASR remains the default; Alibaba Cloud FunASR can be selected from API Config. Without credentials for the selected ASR provider, recording, recognition, and paste stay locked.

Minimum setup rule: once the selected ASR test passes, you can return Home and start dictating. LLM polishing, hotwords, and screen OCR are optional quality improvements.

Doubao ASR Setup

Open API Config -> Speech recognition provider, choose "Doubao ASR", then select an access mode:

Access mode Required fields Notes
Speech console API Key (recommended) API Key Created under API Key management in the new Doubao speech console; uses the standard endpoint and the hourly resource by default. A fresh install starts here
App Key + Access Key App Key and Access Key Preserves the legacy Doubao speech-service flow; Resource ID can match the account's enabled resource
Volcengine Ark Agent Plan Agent Plan API Key Uses the dedicated Ark X-Api-Key; configure the model and overage post-pay in the Ark console first

The three credential sets live in separate fields (console_api_key, api_key, and app_key/access_key) in the local config, so switching modes never overwrites another mode's key, and only the selected access mode is used. Speech console API Keys and Ark Agent Plan keys are not interchangeable and return 401 if swapped. Agent Plan is fixed to Doubao Streaming ASR 2.0 resource volc.seedasr.sauc.duration and automatically connects to wss://openspeech.bytedance.com/api/v3/plan/sauc/bigmodel_async; it does not use [request].ws_url. API Config resets the Resource ID when Agent Plan is selected. This release adds Agent Plan ASR only, not TTS.

The speech console API Key mode sends X-Api-Key, X-Api-Resource-Id, and X-Api-Request-Id; legacy standard access sends X-Api-App-Key, X-Api-Access-Key, and X-Api-Resource-Id; Agent Plan sends the dedicated Ark X-Api-Key and the fixed Resource ID. Do not paste a Bailian/DashScope LLM key, GitHub token, or unrelated cloud secret into ASR credentials. The Doubao panel opens the official docs for the selected access mode.

Click Test after filling credentials. This connection test uses the current real credentials and sends a short program-generated silence packet to the selected ASR provider to verify authentication, TLS, and service access. It does not open the microphone and does not replace a real recording, final-event, and paste regression. When it passes, return to Home and start voice input.

In Doubao mode, API Config normally only needs the provider and credential fields. Recognition language is under Advanced connection and language settings. The default is Auto/service default, which omits the language parameter. The main workflow uses bigmodel_async + enable_nonstream two-pass recognition, and Doubao documents language as unsupported by two-pass recognition, so leaving it blank is better for Chinese, English, dialect, and mixed input. Chinese Mandarin needs no setting, and existing zh-CN configs migrate to blank; only set a code such as en-US, ja-JP, or yue-CN when explicitly troubleshooting a non-default language.

Alibaba Cloud FunASR Setup

Open API Config -> Speech recognition provider, choose "Alibaba Cloud FunASR", and fill in:

Field Required Notes
API Key Yes Alibaba Cloud Bailian / DashScope API Key, used as WebSocket Bearer auth
Workspace ID Yes, unless custom WebSocket URL is filled Bailian workspace ID used to build the realtime ASR WebSocket endpoint
Advanced connection and language settings Usually not needed Region, model, custom WebSocket URL, and language hint. Expand only for region changes, fixed languages, or custom endpoints required by docs

In Alibaba Cloud mode, VoxType connects, sends run-task, waits for task-started, uploads 16kHz mono PCM, sends finish-task after recording stops, and only accepts final sentence text confirmed before task-finished. FunASR live captions combine confirmed sentences with the current unfinished sentence; interim result-generated text remains display feedback only and does not enter polishing, paste, recent context, automatic hotword history, or success stats.

Alibaba Cloud mode uses FunASR language_hints. Leave it empty for auto detection; choose Chinese, English, Japanese, Korean, or Cantonese in the advanced area only when troubleshooting a non-default language.

If ASR Test Fails

Symptom Check first
Doubao authentication or permission failure Confirm the selected access mode; for standard access check App Key/Access Key/resource, and for Agent Plan check the dedicated API Key, model setup, and overage post-pay
Alibaba Cloud authentication or permission failure API Key, Workspace ID, region, and model permission belong to the same Bailian workspace
Connection failure or timeout Network, proxy, or firewall access to the selected ASR service domain
Failure after changing language Switch Recognition language back to Auto/service default and test again
Test passes but recording returns no text Windows microphone permission, selected input device, mic volume, and actual speech

The production recording path also separates connection timeout, connection failure, final-result timeout, and early connection close. A failed session enters the failed state with a short error hint, and the next shortcut press starts a fresh recognition session instead of staying in "waiting for final result".

If it still fails, open Options -> Updates and diagnostics -> Copy diagnostic report and include the redacted error code/status in an Issue. Do not paste real keys, full logs, or transcript text.

Standard Doubao docs:

https://www.volcengine.com/docs/6561/1354869?lang=en

Volcengine Ark Agent Plan docs:

https://www.volcengine.com/docs/82379/2516286?lang=zh

Alibaba Cloud FunASR official docs:

https://help.aliyun.com/zh/model-studio/fun-asr-realtime-websocket-api

Do not commit real keys, and do not share your local config.toml.

Config and Log Locations

In development, VoxType continues to use config.toml and voice_input.log in the repository root. Installed builds use Windows user data directories by default:

  • Config file: %APPDATA%\VoxType\config.toml
  • Log file: %LOCALAPPDATA%\VoxType\logs\voice_input.log

If an installed build finds an old VoxType config.toml and the new default location does not have a config yet, the main window asks whether to migrate it. Confirming copies the old config to the new location once. VoxType does not create complex backups and does not delete the old file. Privacy & local data shows the current actual config and log paths.

4. Optional: Configure LLM Polishing

The LLM API is used for:

  • Light polishing of recognized text.
  • Organizing longer dictated text for common scenarios.
  • Generating automatic hotword candidates.

Open API Config -> LLM API:

Field Notes
Enable polishing When off, VoxType uses ASR only
Base URL OpenAI-compatible endpoint; service root, /v1 URL, and full /chat/completions URL are accepted
API Key Provider API key from the same platform/region as the Base URL
Model For example qwen3.5-plus; must be available to the current account
Advanced compatibility settings Thinking adapter is Auto by default; OpenRouter prefers reasoning.effort=none, and the test saves the fastest usable strategy

Secret fields are hidden by default and can be temporarily revealed or copied with the controls beside the input. Click Test after configuration, or wait for the automatic test after auto-save. The test sends a sample text with the real AI prompt, shows the measured latency, and in Auto mode saves the fastest thinking/reasoning adapter that succeeds, but it does not read the clipboard, live screen OCR, or local recent-context text. The page keeps a local summary of the five most recent tests, including success rate, average latency for successful requests, and the latest result; it stores only test time, result, and latency, not keys, model names, or test text. After Base URL, API Key, model, or the thinking toggle changes and auto-save succeeds, VoxType automatically reruns the adapter test from Auto candidates and saves the fastest successful strategy. If you only need speech recognition, LLM polishing is not required. When polishing is enabled, final transcripts that reach the minimum length are sent to your configured AI service; recognition terms, writing/product preferences, budget-compacted screen OCR, and optional recent context are appended as reference information. Recent context for AI is off by default; it is sent only when local recent context and "use recent context for polishing" are both enabled, and it is capped to about 200 chars from the latest snippets by default. Screen OCR is trimmed by line, deduplicated, and capped to 12 lines / 400 chars before AI polishing by default; term references are capped to 50 entries. LLM reference budgets are low-frequency settings and remain in config.toml, not in the normal UI.

The default example uses Alibaba Cloud Bailian/DashScope's OpenAI-compatible endpoint. The Beijing Base URL is https://dashscope.aliyuncs.com/compatible-mode/v1; if you use Singapore, US, or another region, update Base URL, API Key, and model access together instead of changing only one field. For standard OpenAI-compatible services such as DeepSeek, service root, /v1 URL, and full /chat/completions URL are treated as equivalent, for example https://api.deepseek.com, https://api.deepseek.com/v1/, and https://api.deepseek.com/v1/chat/completions.

DashScope requires an explicit enable_thinking=false to disable thinking; omitting the field does not mean disabled. OpenRouter models receive reasoning.effort=none when supported; models that require reasoning fall back to low-effort candidates. A reasoning-only response without final content is not treated as usable for polishing. qwen3.7-max-preview and qwen3.7-max-2026-05-17 are thinking-only models and cannot be switched off. VoxType blocks these slow requests and asks you to use qwen3.7-max, qwen3.7-max-2026-05-20, or qwen3.7-max-2026-06-08 instead.

For DashScope model-selection notes, see 2026-05-28 LLM polishing model test. The 2026-05-30 retest corrects the old conclusion: qwen3.7-max remains the daily default choice; qwen3.6-flash-2026-04-16 is still the lower-latency option but is riskier for prompt-like text and technical paths; do not switch to deepseek-v4-pro only for technical text, because the simplified prompt can still rewrite code paths. Actual availability depends on the current account and region.

Recommendations:

  • Thinking is disabled with provider-specific request fields where supported because voice polishing is latency-sensitive; changing Base URL, API Key, model, or the thinking toggle automatically retests after auto-save.
  • Text below min_chars = 40 is not polished by default. CJK characters count individually; English and numbers count by contiguous word-like segments; spaces and punctuation do not count.
  • Similar or identical model names can behave very differently across providers, so prefer the latency measured by API Config over the model name alone.
  • Code paths, filenames, and English identifiers are easy for an LLM to "correct" into plausible but wrong forms. Use screen OCR, hotwords, or a manual check for those terms.
  • If the network is unstable, adjust LLM timeout in config.toml.

If LLM Test Fails

Symptom Check first
API Key or permission failure API Key belongs to the configured Base URL provider and region
Model not found or forbidden Model name spelling and account permission
Connection failure Base URL belongs to the configured provider, network/proxy is usable
Test passes but polishing does not run Polishing is enabled and polishing length reaches min_chars
Test passes but real polishing is slow Rerun the thinking adapter test and confirm thinking/reasoning is disabled or minimized
Model only supports thinking Use a hybrid-thinking model that supports disabling thinking; do not use qwen3.7-max-2026-05-17
Code paths are often rewritten Enable screen OCR, or add common paths, filenames, and field names to hotwords

If LLM polishing fails during input, VoxType keeps the original ASR text and still tries to copy/paste it.

5. Hotwords and Prompts

Open Hotwords & prompts.

Hotwords

Use one item per line. Good hotwords include:

  • Names, company names, product names.
  • Project names, abbreviations, code names.
  • Technical terms that ASR often misrecognizes.

Do not add passwords, ID numbers, phone numbers, customer data, or other sensitive information. Terms or context sent to the selected ASR service are capped according to provider capability. Doubao ASR direct hotwords are capped at the first 100 effective entries, with manual hotwords taking priority over confirmed automatic hotwords, to avoid oversized real-time ASR requests.

Writing Context

Use writing context for the current writing scenario, product names, project background, and preferred wording. In daily use, update this first before editing the AI prompt.

Recent Context

Recent context is off by default. When enabled, VoxType saves recent recognized snippets to local context/recent_context.jsonl to improve continuity with the selected ASR service.

Notes:

  • Only VoxType recognition snippets are saved; keyboard input is not recorded.
  • Recent context is not written back to config.toml.
  • Clear it from Privacy & local data, or delete context/recent_context.jsonl manually.

AI Prompt

Hotwords & prompts now prioritizes recognition terms, writing context, recent context, and automatic hotword candidates. The AI prompt template and minimum polishing length are under Advanced prompt settings. VoxType includes a default voice-input AI prompt. It marks the text-to-polish block as the only content to rewrite and output. Even if the transcript contains questions, commands, or prompt-like content, the LLM should polish the text rather than answer, execute, or analyze it. Short messages, one-line commands, and questions get light correction, with natural punctuation allowed but no expansion. Long spoken notes, records, retrospectives, explanations, meeting notes, product feedback, and investment reviews are polished into publishable prose: filler words, verbal padding, repeated expressions, dead pauses, and self-corrections are removed; sentence order can be adjusted; sentences can be split; necessary connectors can be added; and the result is usually organized into 2-4 natural paragraphs. It preserves the original facts, judgment, intensity, stance, proper nouns, English abbreviations, finance terms, and programming terms, and avoids adding headings, lists, Markdown, or backticks. User dictionary terms, writing/product preferences, optional recent context, and screen OCR are appended as reference-information blocks; they only help correct terms, names, UI words, continuity, paths, filenames, code identifiers, and wording preferences, not act as text to polish or instructions to follow, and must not add information that the text to polish did not say. Recent context must not be continued, summarized, or reproduced, and screen OCR is only used for related corrections. For file paths, commands, log fields, and code identifiers, the default prompt asks the model to keep uncertain text unchanged unless the reference information provides an exact spelling. In finance, investing, and quant contexts, the default prompt asks the LLM to normalize clear amounts, returns, and percentages into common numeric forms such as 100万 and 1%, without calculating returns or answering questions.

The Hotwords page lets you:

  • Restore the default prompt.
  • Preview the final prompt, including reference-information rules, the current screen OCR policy and LLM budgets, and whether recent context enters the AI prompt.
  • Edit the User Prompt template and minimum polishing length in Advanced prompt settings.

Minimum polishing length supports 0 to 10000. CJK characters count individually; English and numbers count by contiguous word-like segments. LLM reference budgets and System Prompt stay in config.toml to keep the normal UI concise.

Automatic Hotword Candidates

Automatic hotword candidates are off by default. When enabled, VoxType saves final voice-input text locally. Only when the user clicks "Generate candidates" does it send a summary to the configured LLM service. Local history can be cleared from Hotwords & prompts or Privacy & local data.

Candidates are not added automatically. The user must review and confirm them. The default local history limit is 5000 characters; saved limits are preserved and are no longer rewritten by old default values.

6. Daily Options

Options is grouped into Common settings, Enhancements, and Maintenance so daily controls come first and maintenance entries are clearly separated:

Section Visible Settings
Common settings Primary shortcut, microphone, paste method, remove trailing period, restore clipboard after paste
Enhancements Screen OCR context, Windows OCR test, caption preview, color presets, opacity presets
Maintenance Startup, close-window behavior, check updates, update now, open logs, copy diagnostic report
Recording troubleshooting Collapsed by default; expands for non-default values or validation errors, with ASR no-feedback auto-stop and input gain
Extra start options Collapsed by default; expands when enabled, with middle mouse and right Alt

To review or clear local data, open Privacy & local data from the sidebar.

Screen OCR context is on by default. It captures the current display by default, which helps when you reference one document while typing into another window. You can switch it to the current window only in Options. OCR text is lightly normalized, used only for the current ASR/LLM request, and is not written to logs, stats, config, or cache. OCR sent to ASR is controlled by the screen OCR character limit; OCR sent to AI polishing has a separate LLM budget. Switch to current-window-only or disable it when the screen contains sensitive content.

Low-level parameters stay in config.toml: Resource ID, ASR WebSocket URL, model name, final-result timeout, max recording seconds, stop grace milliseconds, LLM timeout, main hotkey enable flag, mute system volume while recording, OCR character limit and wait time, caption custom size/position/color, clipboard restore delay, snapshot size, and retry parameters. LLM minimum polishing length is under Advanced prompt settings on Hotwords & prompts; LLM reference budgets remain in config.toml.

7. Recommended Defaults

Config Recommended Value Reason
Primary shortcut Ctrl + Q Low conflict, easy to remember
Middle mouse Off Can conflict with browsers or editors
Right Alt Off Can conflict with IMEs or shortcuts
Paste method Automatic paste Works for most text fields
Clipboard restore On Tries to restore previous clipboard after paste
ASR no-feedback auto-stop 30 seconds by default; set 0 to disable Stops through the normal grace flow when the ASR provider returns no effective text feedback for too long
Screen OCR context On, current display Improves names, UI terms, filenames, and code identifiers; switch to current-window-only or disable in sensitive scenarios
Recent context Off Conservative by default; AI access to previous text also needs a separate opt-in
Automatic hotword candidates Off Does not save transcript history by default
Mute system volume while recording Off Avoids interrupting meetings, videos, and alerts
Thinking Off Faster for voice polishing

8. Key config.toml Fields

Settings edited in the UI auto-save. The title bar briefly shows pending, saving, and saved states. For manual edits, use config.example.toml as the reference.

Minimum Doubao ASR config:

[asr]
provider = "doubao"

[auth]
app_key = ""
access_key = ""
resource_id = "volc.seedasr.sauc.duration"

Minimum Alibaba Cloud FunASR config:

[asr]
provider = "aliyun_fun"

[aliyun_asr]
api_key = ""
workspace_id = ""
region = "cn-beijing"
model = "fun-asr-realtime"
language_hint = ""

Optional LLM config:

[llm_post_edit]
enabled = false
use_recent_context = false
base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1"
api_key = ""
model = "qwen3.5-plus"
min_chars = 40
screen_context_max_chars = 400
screen_context_max_lines = 12
recent_context_max_chars = 200
reference_hotwords_limit = 50
enable_thinking = false
thinking_strategy = "auto"

Recording:

[asr]
no_feedback_auto_stop_seconds = 30

[audio]
max_record_seconds = 300
stop_grace_ms = 250
input_gain_db = 0.0
mute_system_volume_while_recording = false
# Optional: prefer matching by device name; legacy input_device index is kept only for old configs.
# input_device_name = "Microphone Array"
# input_device = 1

When you choose a microphone in Options, VoxType saves both the device name and the legacy numeric index. Recording startup prefers the saved name, so Bluetooth reconnects or device-order changes are less likely to pick the wrong microphone. If the saved microphone is unavailable, VoxType falls back to the system default input device and shows a non-blocking notice.

In Doubao mode, VoxType keeps actual ASR packets within Doubao's recommended 100-200ms range, defaulting to 200ms. About 50ms of leading silence is merged into the first real-audio packet while keeping the first packet at the configured segment size, defaulting to about 200ms; this helps Doubao stabilize initial speech recognition without sending a standalone 50ms packet. If no real microphone audio is captured, VoxType does not send an extra silence packet. Alibaba Cloud FunASR mode also sends 16000Hz mono PCM and gates final output on the service's task-finished event.

VoxType keeps input_gain_db = 0.0 by default and does not boost microphone audio. Only raise input gain slightly in recording troubleshooting when the recording quality card repeatedly reports low volume and the system microphone level and distance already look correct; try +3 dB or +6 dB first to avoid clipping speech or amplifying room noise. After recording, Home shows a lightweight recording quality card when it is useful, with the latest RMS, peak, active speech ratio, and a suggestion. If the session already recognized and output text successfully, low-active-speech warnings are hidden to avoid flagging a usable result as a problem. These metrics contain no recognized text and are not written to the main stats table.

Interim Doubao text is shown in the floating caption with a shorter local throttle; fast interim updates are coalesced to the latest text and emitted on time. An anomalous one-to-four-character interim drop in the same recording session does not replace an already complete caption. When utterance text is more complete than result.text in the same response, captions prefer the fuller cumulative utterance text, while final paste still waits for the final package. Alibaba Cloud interim text is also caption feedback only; final paste waits for task-finished. The floating caption runtime window is at least 52px high, including for legacy low-height settings. stop_grace_ms is the fixed real-audio tail wait after stopping, defaulting to about 250ms; it no longer depends on local volume detection to decide whether to extend, so quiet microphones are less likely to lose tail words because of threshold misclassification. Any partial final audio chunk is flushed before the microphone is closed. ASR no-feedback auto-stop defaults to 30 seconds and only stops through the normal grace flow when the provider returns no effective text feedback; set 0 to disable it.

For Doubao mode, the recently verified stable combination is to keep the default 200ms ASR packet size and put perceived-speed work into 20ms response polling, 50ms caption throttling, and a 500ms OCR-context wait. First-word acceleration is off by default to prioritize beginning-word accuracy. Doubao final output still accepts only the final package and prefers that package's full result.text. definite=true utterances stabilize the final result, but when the final package highly overlaps those utterances and recovers missing head or tail words, VoxType should keep the final full text even if the package slightly shortens earlier wording.

First-word acceleration is disabled by default with enable_accelerate_text = false and accelerate_score = 0; saved explicit values are preserved. If faster live-caption startup matters more, you can manually enable it in config.toml, but beginning-word accuracy may drop.

Semantic smoothing enable_ddc is enabled by default for light ASR-side smoothing on short and medium text, reducing reliance on LLM polishing for short inputs. Saved explicit values are preserved. Disable it manually when exact proper nouns, short commands, paths, or punctuation-sensitive dictation matter more.

Triggers:

[triggers]
hotkey_enabled = true
middle_mouse_enabled = false
right_alt_enabled = false

Output:

[typing]
paste_method = "ctrl_v"
remove_trailing_period = true
restore_clipboard_after_paste = true
clipboard_restore_delay_ms = 800

Screen OCR context:

[screen_context]
enabled = true
capture_scope = "screen"  # screen = current display, window = current window only
max_chars = 1200
timeout_ms = 500

Updates:

[update]
auto_check_on_startup = true
github_repo = "zkwi/VoxType"

9. First Use Flow

  1. Install and start VoxType.
  2. Open API Config.
  3. Choose Doubao ASR or Alibaba Cloud FunASR and fill in the selected provider's credentials.
  4. Click Test for the selected ASR provider.
  5. Return to Home and put the cursor in a target input field.
  6. Press Ctrl + Q to start recording; press it again to stop. ASR no-feedback auto-stop defaults to 30 seconds and can be increased or disabled from Options.
  7. Wait for final recognition and optional polishing.
  8. If text does not appear in the target field, press Ctrl + V manually.

10. Next Steps

11. Common Questions

Is LLM API required?

No. VoxType's core workflow is Windows voice typing with the selected ASR speech-to-text provider. LLM polishing is optional.

Can I use clipboard-only output?

Yes. In Options, choose clipboard-only output. VoxType will leave the recognized text in the clipboard and skip simulated paste.

What should I put in hotwords?

Names, product names, project names, abbreviations, and technical terms. Do not put secrets or sensitive customer data there.

Why are recent context and automatic hotword candidates off by default?

They save voice-input text history locally. VoxType keeps them off by default to reduce privacy risk.

Recent context contains real dictated text, so VoxType does not save it or send it to an AI service by default. When local recent context is enabled, it helps the selected ASR provider with continuous dictation; it reaches the AI service only when "use recent context for polishing" is also enabled and polishing actually runs.

Screen OCR context is on by default, but it does not save transcript history. It reads the current display at recording start by default, lightly normalizes OCR text, and attaches it temporarily to the current ASR/LLM request. It does not cache recent OCR screenshots or text, and OCR sent to the LLM is compacted by budget. Use current-window-only or turn it off when the screen contains sensitive content.