Fix a word once
When a word comes out wrong, fix it in the text. The pill offers to learn the new spelling. Press Y to keep it or N to skip.
Next time, ParrotFlow writes the name you taught it. It still writes the ordinary word where the sentence means the ordinary word.
| You say | You get |
|---|---|
| upgrade view | upgrade Vue |
| re-render the whole view | re-render the whole view |
How it tells a name from a word
A term is matched by sound, so one entry covers renderings you have never written down. Matching by sound alone would also replace ordinary words that sound like a name. So each match is checked against the sentence before anything is written. No large model takes part, and all of it runs on your Mac.
- Two word lists. If neither the macOS spell checker nor a list of common words has seen the heard word, it was not a word you meant. The name is written.
- The slot the word sits in. A small model, mmBERT-small, reads the sentence around the word. A name does not go where the sentence wants a verb, an adverb or a preposition, so “blocking merge” stays “blocking merge”.
- The sentences you confirmed. Each time you keep a name, ParrotFlow remembers the sentence. Each time you take a name back out, it remembers that sentence too. A new sentence gets the name when it looks more like the first kind.
When none of these can decide, the pill asks. It shows the sentence with the readings stacked where the open place is, and you press a digit. Nothing is typed until you answer. Press Escape, or just keep working, and you get what the checks settled on.
Other ways to teach a word
Select the wrong word in any app, hold the hotkey and say “hey parrot”. A panel opens with what it heard and what it should be. Save, and the rule is learnt.
You can also say the spelling, or describe it:
"hey parrot, Tasmin spells T A S M E E N"
"hey parrot, Jerome with a G at the beginning"
"hey parrot, Elastic search is one word"
A language model finds which word you meant. The spelling itself comes from the letters you said, never from the model. So spoken spellings need a model in the models: section of your config. Without one, “hey parrot” still opens the panel.
From a terminal:
ParrotFlow --learn "super base" Supabase
Where your vocabulary lives
The words you teach are in ~/.config/parrotflow/vocabulary.yaml, beside config.yaml. You write the config. The app writes the vocabulary, from your corrections and from --learn. It reloads on save.
terms:
Tasmeen:
Praisy:
pronunciations:
- heard: Prissy
from: correction
Claude:
floor: off
kind: person
pronunciations:
- heard: cloud
from: correction
Each term can list how the recogniser actually writes it, under pronunciations. kind says what the term names: a person, a place, an organization or a word. floor: off turns off matching by sound for one term. Use it when the recogniser writes the name and an ordinary word the same way, as with “Claude” and “cloud”.
The file says not to edit it by hand. Use the panel, --learn, or these commands instead:
| Command | What it does |
|---|---|
--learn <heard> <corrected> |
Adds a pronunciation |
--for <term> "<sentence>" |
Records a sentence the term belongs in |
--against <term> "<sentence>" <word> |
Records a sentence where the term does not belong |
--forget <term> |
Removes everything learnt about how a name sounds. The term stays. |
To open the folder, use Settings, then Open Config Folder, in the menu bar.
Settings
Vocabulary is on by default.
transcription:
vocabulary:
enabled: true
sound_below: 0.85 # how close a run of words must sound to a term
asks: true # ask before typing a name it could not settle
Set asks: false and the pill never asks. An open place then keeps what arrived.
Read more
- Teach ParrotFlow a word, step by step
- Spelling from what is on your screen, for names you have not taught
- Teaching it a word, the full reference