Teach ParrotFlow your words

Fix a misheard name once and ParrotFlow offers to learn it. It writes the name the next time you say it, and leaves the ordinary word alone where it belongs.

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