声匠 VoiceSmiths
← Pronunciation dictionary

How to pronounce 65 tech terms developers (and TTS) get wrong

From GIF to kubectl, these are the words colleagues argue about and text-to-speech engines simply get wrong. Every one of the 65 terms below plays the correct reading next to what an AI voice says when left alone. The same list downloads as a pronunciation lexicon you can load into your own voice app.

65 terms · 195 audio clips · free to reuse under CC BY 4.0

Download the PLS lexicon Download JSON

The ones people argue about

GIFjif / gif

Its inventor, Steve Wilhite, insisted on the soft g, "jif". The hard g is more common in practice, and dictionaries list both. The one clear mistake is spelling it out letter by letter.

SQLS-Q-L / sequel

Both readings are standard: the letters S-Q-L follow the ANSI name, while "sequel" comes from its predecessor, SEQUEL. Pick one per team. What it is never is a single syllable like "squall".

LinuxLIN-uks

Torvalds recorded a clip settling it: LIN-uks, with a short i, not "lie". His own name is LEE-nus in Finnish, and the English habit of saying LYE-nus dragged the kernel along with it.

nginxengine-x

The name is short for "engine x", and the pronunciation keeps the original words: say engine, then the letter X. Because the spelling has no vowels, TTS models tend to spell it out or force it into one syllable. The official nginx documentation states the reading plainly.

kubectlcube-cuttle

The docs list several readings; the common ones are "cube control" and "cube cuttle". Nobody spells it out.

cachecash

It is a homophone of cash, one syllable. The two-syllable ka-SHAY is cachet, a different word meaning prestige.

AzureAZH-ur

Microsoft says AZH-ur with the stress up front and a reduced second syllable. British English also allows end stress, but Microsoft's own material is consistent.

GNUguh-NOO

Richard Stallman asks specifically that the g be pronounced, giving two syllables, guh-NOO, to distinguish it from the animal, which is said "new".

tupleTOO-pul / TUH-pul

Both readings are current: TOO-pul is more American, TUH-pul more British. Either way the stress is first.

Kuberneteskoo-ber-NET-eez

It comes from the Greek κυβερνήτης, meaning helmsman. The stress falls on the third syllable, NET, and the ending is "eez", not "nights". Native speakers miss this too, because -netes looks like -nights.

All terms

TermSay it likeIPACorrectAI default
nginxengine-x/ˈendʒɪn ɛks/
Kuberneteskoo-ber-NET-eez/ˌkuːbərˈnetiːz/
PostgreSQLPOST-gres-Q-L/ˈpoʊstɡrɛs ˌkjuː ˈɛl/
SQLiteS-Q-L-ite/ˌɛs kjuː ɛl ˈaɪt/
GIFjif / gif/dʒɪf/ or /ɡɪf/
SQLS-Q-L / sequel/ˌɛs kjuː ˈɛl/ or /ˈsiːkwəl/
JSONJAY-sun/ˈdʒeɪsən/ or /dʒeɪˈsɒn/
YAMLYAM-ul/ˈjæməl/
OAuthoh-AWTH/oʊˈɔːθ/
JWTjot/dʒɒt/
DockerDOCK-er/ˈdɒkər/
RedisRED-iss/ˈrɛdɪs/
KafkaKAHF-kuh/ˈkɑːfkə/
LinuxLIN-uks/ˈlɪnəks/
Ubuntuoo-BOON-too/ʊˈbʊntuː/
DebianDEB-ee-un/ˈdɛbiən/
GNUguh-NOO/ɡəˈnuː/
Bashbash/bæʃ/
Gitgit/ɡɪt/
Viteveet/viːt/
Nuxtnuhkst/nʌkst/
XcodeX-code/ˈɛks koʊd/
AzureAZH-ur/ˈæʒər/
SaaSsass/sæs/
APIA-P-I/ˌeɪ piː ˈaɪ/
Grafanagruh-FAH-nuh/ɡrəˈfɑːnə/
JupyterJOO-pih-ter/ˈdʒuːpɪtər/
PythonPY-thon/ˈpaɪθɒn/
NumPyNUM-pie/ˈnʌmpaɪ/
pandasPAN-duhz/ˈpændəz/
Gogo/ɡoʊ/
Rustrust/rʌst/
NoSQLno-S-Q-L/ˌnoʊ ˈɛs kjuː ˈɛl/
MongoDBMON-go-D-B/ˈmɒŋɡoʊ diː biː/
CaddyCAD-ee/ˈkædi/
NuGetNEW-get/ˈnjuːɡɛt/
cachecash/kæʃ/
tupleTOO-pul / TUH-pul/ˈtuːpəl/ or /ˈtʌpəl/
regexREG-ex / REJ-ex/ˈrɛɡɛks/ or /ˈrɛdʒɛks/
GUIGOO-ee / G-U-I/ˈɡuːi/ or /ˌdʒiː juː ˈaɪ/
croncron/krɒn/
daemonDEE-mun/ˈdiːmən/
kubectlcube-cuttle/ˈkjuːb kʌtl/
Wi-FiWHY-fie/ˈwaɪ faɪ/
iOSi-O-S/ˌaɪ oʊ ˈɛs/
RubyROO-bee/ˈruːbi/
ScalaSKAH-luh/ˈskɑːlə/
Elixirih-LIK-ser/ɪˈlɪksər/
Sveltesvelt/svɛlt/
DenoDEE-no/ˈdiːnoʊ/
pnpmP-N-P-M/ˌpiː ɛn piː ˈɛm/
webpackWEB-pack/ˈwɛb pæk/
BabelBAY-bul/ˈbeɪbəl/
ESLintES-lint/ˌiː ɛs ˈlɪnt/
Sasssass/sæs/
GraphQLgraph-Q-L/ˈɡræf kjuː ɛl/
AJAXAY-jacks/ˈeɪdʒæks/
CI/CDC-I-C-D/ˌsiː aɪ siː ˈdiː/
DevOpsDEV-ops/ˈdɛvɒps/
LLML-L-M/ˌɛl ɛl ˈɛm/
RAGrag/ræɡ/
CUDAKOO-duh/ˈkuːdə/
PyTorchPIE-torch/ˈpaɪ tɔːrtʃ/
SSHS-S-H/ˌɛs ɛs ˈeɪtʃ/
TLST-L-S/ˌtiː ɛl ˈɛs/

Fix these words in your own TTS

The list as a standard W3C PLS lexicon and as JSON. The PLS uses alias rules, which ElevenLabs, Azure Speech, Amazon Polly and other PLS-aware engines load as is.

ElevenLabs: upload as a pronunciation dictionary

curl -s https://voicesmiths.com/pronounce/tech-terms.pls -o tech-terms.pls
curl -X POST https://api.elevenlabs.io/v1/pronunciation-dictionaries/add-from-file \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -F name="tech-terms" \
  -F file=@tech-terms.pls

Azure Speech: reference it from SSML

<speak version="1.0" xml:lang="en-US"
  xmlns="http://www.w3.org/2001/10/synthesis">
  <voice name="en-US-AvaMultilingualNeural">
    <lexicon uri="https://voicesmiths.com/pronounce/tech-terms.pls"/>
    Deploy it with kubectl behind nginx.
  </voice>
</speak>

Free to reuse

The list and the audio are released under CC BY 4.0: copy, adapt and use them commercially, as long as you credit VoiceSmiths and link to this page. CC BY 4.0

To credit it, you can paste this link:

<a href="https://voicesmiths.com/pronounce/developers">VoiceSmiths tech pronunciation guide</a>

In VoiceSmiths these words come out right by default

The pronunciation dictionary applies your readings to every generation, so a term sounds the same across long videos, audiobooks and courses.