← Blog

How to set up a custom dictionary for voice dictation

Speech-to-text is remarkably good at common vocabulary. It stumbles on everything else: your name, your colleague's name, your product, the framework you use at work. A custom dictionary fixes this by teaching Hovor the exact spellings you need, and it feeds those entries to the AI cleanup pass, so the model corrects on the fly throughout your session.

Last updated: June 2026

Why dictation gets names wrong

Dictation mishears names and jargon because speech models are trained on text where common words vastly outnumber rare proper nouns. A model that has seen "Cyril" thousands of times and "Кирило" a fraction as often will default to the familiar spelling even when the audio is clearly the less common one. The fix is not better audio; it's telling the model, explicitly, which spelling you want.

A few common failure modes:

The problem is not that the model is broken: it is doing what it was trained to do, which is to produce the most probable output given the audio signal. Your job is to shift those probabilities for your specific vocabulary.

How the custom dictionary works

Hovor's custom dictionary maps a list of variant misspellings to one canonical form, applied in two stages: first as a direct text replacement on the raw transcription, then again as a vocabulary hint injected into the system prompt the cleanup model reads. That second stage means the AI is told which spellings to preserve, not just handed already-corrected text. The syntax: list every incorrect variant separated by |, then an arrow, then the correct form.

For example:

The replacement is applied after transcription, before the AI cleanup step. This two-stage design matters: the raw transcription from the speech model is corrected first, and then the LLM cleanup receives already-fixed text. As a result, the AI sees the correct terms and reinforces them through the formatting pass rather than working against them.

Beyond replacement, dictionary entries also serve as hints to the LLM. When Hovor builds the system prompt for the cleanup model, it includes your dictionary entries as vocabulary context. This means the model is aware of your preferred spellings from the very start of a session and applies them consistently throughout, not just as post-processing substitutions but as part of how the model interprets and formats everything you say.

Step by step: add your first entries

Adding an entry takes five steps: open Dictionary in settings, tap add, enter every variant the model tends to produce separated by |, enter the exact canonical spelling you want, and save. The entry applies immediately on that device and reaches your other signed-in devices via background sync within seconds — no export, import, or restart required.

  1. Open Hovor settings. On iOS, tap the profile icon and go to Dictionary. On macOS, open the Hovor menu from the menu bar and choose Settings, then Dictionary.
  2. Tap "Add entry" (or the + button). You will see two fields: the variants field (what the model might produce) and the canonical field (what you want in the output).
  3. Enter the variants. Type or paste all the incorrect forms the model typically produces, separated by the pipe character |. You can add as many variants as you like. Three or four covers most cases. If you are unsure which variants the model generates, dictate the word a few times without any dictionary entry and check the raw transcription.
  4. Enter the canonical form. This is the exact spelling, casing, and punctuation you want to appear in the final text. For brand names, match the official capitalisation. For proper names, use the exact form you prefer.
  5. Save. The entry takes effect immediately for all subsequent dictation sessions on that device. Sync distributes it to your other devices within seconds.

You can edit or delete entries at any time from the same Dictionary screen. Changes sync across devices automatically.

The dictionary is case-insensitive on the variant side by default. If your term has mixed-case variants that mean different things (unlikely, but possible), create separate entries.

It syncs and the AI learns from it

Every dictionary change (add, edit, delete) is recorded as a timestamped event on Hovor's server, and each of your other signed-in devices pulls new events in the background. Add an entry on your iPhone during a commute and it's waiting on your Mac by the time you sit down. Sync runs in the background and never interrupts an active dictation session.

The AI learning aspect deserves a closer look. Hovor's cleanup pass uses an LLM (gpt-4o-mini on the server, or Apple Foundation Models for on-device processing) to fix punctuation, capitalisation, and phrasing after the raw transcription. The system prompt for that model is built fresh for each session, and it includes your dictionary entries as context. This means:

The effect compounds: a well-populated dictionary means fewer corrections after dictation, which means faster writing, which means more dictation, which reveals more missing entries to add.

Tips: jargon, brand names, and multilingual setups

The dictionary applies the same way regardless of category: developer jargon, brand names, and multilingual proper nouns all use the identical variant-list-to-canonical-form syntax. What changes is which variants are worth listing first. Below are the categories that save the most correction time, in priority order for most professional users.

Technical jargon and developer terms

If you dictate code-adjacent content (documentation, technical blog posts, design documents, Slack messages about your stack), a small set of entries covers a large fraction of the errors. Start with the names of technologies, frameworks, and tools you use every day. Common entries for developers include database names, cloud provider services, framework names, and the names of internal projects or microservices that have unusual spellings.

Examples that save significant correction time: docker|doc ker → Docker, github|git hub → GitHub, typescript|type script → TypeScript, graphql|graph ql|graph queue el → GraphQL.

Brand names and product names

Many brand names are just common words with unusual capitalisation that speech models cannot infer from audio alone. apple|Apple → Apple is a no-op in most sentences, but iphone|I phone|I-phone → iPhone is immediately useful. The pattern is the same: list the phonetically-plausible mangled versions alongside the lowercase version, and set the canonical to the official casing.

Multilingual setups

If you dictate in more than one language, the same dictionary applies across all of them. This is an advantage: if you have both English and Ukrainian names in your vocabulary (as most professionals in technology do), you add them once and they are covered regardless of which language you are currently dictating in.

For Ukrainian-speaking users specifically, the most valuable entries tend to be proper nouns that have well-known Russian or Soviet-era transliterations: city names, personal names with Ukrainian-specific spelling, and terminology that diverged between Ukrainian and Russian after independence. An entry like Харків|Харьков → Харків ensures the Ukrainian spelling is always used.

Medical, legal, and domain-specific terms

Professionals who dictate within a specialised domain benefit most from the dictionary. Medical practitioners can map phonetic mishearings of drug names, anatomical terms, and procedure names. Legal professionals can ensure jurisdiction-specific terminology is spelled consistently. Researchers can lock in the exact form of technical terms, gene names, or citation-style abbreviations they use repeatedly.

The dictionary has no semantic limit on what it can contain: if a speech model can mishear it, you can fix it.

A note on entry limits

The free tier caps the dictionary at 20 replacement rules, with a separate 20-item cap on snippets. That's enough for most personal setups but will feel tight for a developer maintaining an extensive jargon list or a professional with a large domain vocabulary. Any one of Pro Monthly, Pro Yearly, Local Unlock, or BYOK Unlock removes both caps — it isn't limited to a single upgrade path.

Dictionary, snippets, and workflows solve different problems and are capped differently:

FeatureWhat it doesFree-tier capSyncs across devices
DictionaryCorrects mistranscribed words/names and feeds them to the AI as vocabulary context20 entriesYes
SnippetsExpands a short trigger name into a longer stored block of text20 snippetsYes
WorkflowsConfigures the tone/translation/formatting pipeline for a whole sessionDepends on provider (server tone requires Pro; Apple Foundation and BYOK have their own gates)Yes

Pro Monthly ($11.99), Pro Yearly ($89.99), Local Unlock ($49.99 / 1999 UAH, one-time, family-shareable), and BYOK Unlock ($24.99 / 999 UAH, one-time, family-shareable) each lift the dictionary and snippet caps to unlimited; the Local + BYOK Bundle ($69.99 / 2799 UAH) covers both one-time unlocks together.

FAQ

How many dictionary entries can I add on the free tier?

The free tier caps custom dictionary entries at 20 replacement rules. The same 20-entry cap applies separately to snippets. Any one of Pro Monthly, Pro Yearly, Local Unlock ($49.99 / 1999 UAH), or BYOK Unlock ($24.99 / 999 UAH) removes both caps, so you don't need Local Unlock specifically just to lift the dictionary limit.

Does the dictionary only replace text, or does it also help the AI understand what I mean?

Both. Replacement happens first: the raw transcription is corrected against your variant list before anything else touches it. Separately, your dictionary entries are also inserted into the system prompt sent to the cleanup model (gpt-4o-mini on the server, or Apple Foundation Models on-device) as a line of known vocabulary to preserve exactly. So the model both receives already-corrected text and is told which terms in it must not be touched during formatting.

Is dictionary matching case-sensitive?

No, matching on the variant side is case-insensitive by default. Each entry can individually opt into exact-match-only mode if you need a variant to match only in one specific casing; that setting is stored per entry, not globally.

Does the dictionary sync across my devices?

Yes. Every add, edit, and delete is recorded as an event on Hovor's server and pulled by your other signed-in devices in the background, so an entry added on iPhone reaches your Mac without any manual export or import step. Sync does not interrupt an active dictation session.

What is the difference between the dictionary, snippets, and workflows?

The dictionary corrects how individual words and names are transcribed and feeds them to the AI as vocabulary context. Snippets expand a short trigger name into a longer stored block of text, useful for boilerplate you repeat often. Workflows configure which tone, translation, and formatting pipeline runs on a whole dictation session. All three sync across devices; the dictionary and snippets each have a separate 20-item free-tier cap, while workflow availability depends on which formatting provider (server, Apple Foundation, or BYOK) the workflow uses.

Stop correcting the same names over and over

Set up your custom dictionary in Hovor and let the AI cleanup pass learn your vocabulary. Available on iOS and macOS. Free tier includes 20 dictionary entries; Pro, Local Unlock, or BYOK Unlock removes the cap.

Get Hovor