Version 1.0 — by crucio2211
Synth Dictionary Editor is an NVDA add-on that lets you view and edit the pronunciation
dictionary files (.dic) used by the IBMTTS and
Eloquence synthesizers directly from within NVDA — no need to open a
separate text editor or restart NVDA manually.
.dic files read directly by the synthesizer engine itself,
giving you direct control over how the synthesizer pronounces specific words.
| Synthesizer | Notes |
|---|---|
| IBMTTS | Must be installed as an NVDA add-on. All versions supported. |
| Eloquence | Must be installed as an NVDA add-on. All versions supported. |
Requires NVDA 2019.3 or later.
Go to NVDA menu → Tools → Synth Dictionary Editor...
The Dictionary file dropdown at the top lets you switch between the
available .dic files in the synthesizer folder. Each file may serve a different
purpose (e.g., main word list, root forms, abbreviations). Changes apply only to the
currently selected file.
Type in the Search box to filter the list by word or pronunciation in real time. Press the X button inside the search box to clear the filter and show all entries.
The list shows all entries in the selected dictionary file. Each row has two columns: Word (what the synth reads in text) and Pronunciation (how it should be spoken). The entry count is shown below the list.
Press Add, enter the word and its pronunciation, then press OK.
Select an entry and press Edit, or double-click it. Change the word or pronunciation as needed, then press OK.
Select an entry and press Remove. A confirmation dialog will appear before deletion.
Select a root word entry and press Add Variations... to automatically generate morphological variations based on common affixes — prefixes, suffixes, and infixes. This is useful for any language with regular affixation patterns.
All suggestions are unchecked by default. Review the list, check the ones you want to add, edit individual phonemes if needed, or add a custom variation manually. Press Add Checked to insert them.
Press Import... to bring in entries from a single .dic or .txt file.
You will be asked which dictionary file to merge them into. Entries whose words already exist
in the destination (case-insensitive) are skipped automatically.
Press Batch Import... to import multiple files at once. Select one or more
.dic or .txt files in the file picker.
For each selected file, the add-on checks if its filename matches the standard naming convention (see below). If it matches, the destination file is determined automatically. If not, a dialog will ask you to assign a language and dictionary type before importing.
A summary dialog appears at the end showing how many files were processed and how many new entries were added. Any files that were skipped (cancelled or unreadable) are listed separately.
Dictionary files follow a strict naming pattern: langcode + type + .dic
The language code is a 3-letter prefix identifying the language:
| Code | Language |
|---|---|
enu | English (US) |
eng | English (UK) |
esp | Spanish (Spain) |
esm | Spanish (Latin America) |
ptb | Portuguese (Brazil) |
fra | French (France) |
frc | French (Canada) |
deu | German |
ita | Italian |
fin | Finnish |
chs | Chinese (Simplified) |
jpn | Japanese |
kor | Korean |
The type suffix identifies the dictionary's role:
| Suffix | Purpose |
|---|---|
main | Main word pronunciation dictionary |
root | Root word forms |
abbr | Abbreviations and acronyms |
Examples: enumain.dic, enuroot.dic, enuabbr.dic, ptbmain.dic, deuroot.dic
Press Export... to save all entries in the current dictionary to a file of your choice.
Press Save to write your changes to disk. After pressing OK in the confirmation dialog, the synthesizer reloads automatically so the new pronunciations take effect immediately — no need to restart NVDA.
Press Remove Dictionary to permanently delete the currently selected
.dic file from disk. A confirmation dialog appears with No as the
default to prevent accidental deletion.
The Online Dictionary Update section at the bottom of the editor lets you download and merge pronunciation entries from community-maintained GitHub repositories.
.dic files. Duplicate entries are skipped.
New dictionary files not yet present in your folder are created automatically..dic files in the repository,
not just the one currently selected in the editor. All entries are written in CP1252 encoding
with Windows-style line endings (CRLF) for full compatibility with the synthesizer.
The IBMTTS and Eloquence engines support two ways to specify a pronunciation for a word: phoneme strings (SPR) and spelled-out pronunciations. The phoneme symbols listed here are for American English (enu). Other languages have their own symbol sets — refer to the IBM TTS API Reference for details.
The simplest method. Write how the word should sound using ordinary words that the synth already reads naturally. Best used for abbreviations and acronyms.
| Word | Spelled-Out Entry | Result |
|---|---|---|
OMG | oh em jee | Reads as "oh em jee" |
NVDA | en vee dee ay | Reads as "en vee dee ay" |
CPU | see pee you | Reads as "see pee you" |
A Symbolic Phonetic Representation (SPR) gives you direct control over the exact sounds the synthesizer produces. The format is:
`[phoneme_sequence]
The backtick-bracket wrapper (`[...]) tells the synthesizer to treat the contents as
a raw phoneme sequence rather than ordinary text.
| Symbol | Meaning |
|---|---|
1 | Primary stress (most prominent) |
2 | Secondary stress |
0 | No stress |
. | Syllable boundary (optional in most languages) |
Stress markers go to the left of the vowel of the stressed syllable.
| Symbol | Example Words |
|---|---|
a | father, lot |
A | back, had |
e | cake, pain |
E | hedge, let |
i | see, speak, believe |
I | pick, ill |
o | both, oak |
c | law, cough |
u | zoo, truth |
U | took, put |
H | but, mug, son |
R | butter, hurt |
| Symbol | Example Words |
|---|---|
O | toil, boy |
W | out, cow |
Y | life, fine |
| Symbol | Example Words |
|---|---|
x | sofa, alone, suppose, America |
X | roses, connect, melody, symphony, hinted |
| Symbol | Example Words |
|---|---|
b | bad, sob |
p | pit, rip |
d | dip, had |
t | tip, pet |
g | good, bug |
k | kill, cat, make, back |
D | this, breathe |
T | thing, Beth |
v | vase, save |
f | field, if, graph |
z | zip, phase |
s | seal, miss, ceiling |
Z | treasure, garage |
S | ship, wish |
J | Jane, huge |
C | chip, witch, nature |
h | hot, hero |
m | man, hum, summer |
n | never, sun, winner |
G | sing, finger |
r | borrow, rake |
l | low, hall |
w | wear, quick |
y | yes, Virginia |
M | hmmm |
? | glottal stop — kitten, Latin |
F | flap — writer, fiddle |
N | syllabic nasal — button, satin, eaten |
| Word | SPR Entry |
|---|---|
| though | `[.1Do] |
| shocking | `[.1Sa.0kIG] |
| construction | `[kXn1strHkSXn] |
| hello | `[h.1E.0lo] |
| beautiful | `[.1byu.0tI.0fXl] |
| writer | `[.1rY.0FR] |
| button | `[.1bH.0tN] |
x and X are reduced vowels
(like the unstressed vowel in "sofa"), not consonants.
This add-on is licensed under the GNU General Public License v2.0. It is based in part on code from the Eloquence for NVDA add-on, which is also licensed under GPL v2.