Conversational AI

An open source medical pronunciation dictionary for voice AI

960 medical terms with phonetic alias and IPA pronunciations, pre-built for Telnyx, ElevenLabs, Vapi, Retell, and Amazon Polly. Open source, provider-agnostic, 30 seconds to import.

Every voice AI platform supports pronunciation dictionaries. None of them ship a medical one. So every healthcare team, from digital health startups to hospital systems, rebuilds the same thousand-drug pronunciation file from scratch. We built one and open sourced it.

The repository is at github.com/team-telnyx/medical-pronunciation-dictionary. It covers 960 medical terms with both phonetic alias and IPA pronunciations, pre-built for Telnyx, ElevenLabs, Vapi, Retell, and Amazon Polly. It also includes a keyterm list for STT engines. You can import it into a Telnyx account in under 30 seconds.

Mispronounced drug names break patient trust

When a voice assistant says "atorvastatin" with the stress on the wrong syllable, patients notice. When it says "metformin" like "met FOR men," the assistant stops sounding like a healthcare tool and starts sounding like a toy. Patients rate AI health assistants lower on trust scales when pronunciation errors occur, even when the clinical content is correct (Tiwary et al., JAMIA, 2023). Pronunciation is a trust problem.

The standard fix is pronunciation dictionaries. Every major voice AI infrastructure platform supports them: Telnyx, ElevenLabs, Vapi, Retell. You upload a file mapping words to their phonetic spelling, and the TTS engine uses that mapping when synthesizing speech. The mechanism works. The gap is content. No platform ships a pre-built medical pack.

So every healthcare team does the same work:

  1. Pull drug names from RxNorm or the hospital formulary
  2. Pull clinical terms from SNOMED CT
  3. Generate phonetic respellings for each one
  4. Format them for their specific provider
  5. Test, correct, re-import

This takes 1 to 2 weeks of focused work per team. The result is usually a spreadsheet that lives in a Slack channel and never gets updated. We have seen this pattern at healthcare customers building on Telnyx, and we have seen it at healthcare customers building on competitors. The work is identical every time. We built this pack so nobody has to do it again.

The pack covers 960 medical terms across four categories:

CategoryCountExamples
Drug names398atorvastatin, omeprazole, metformin, epinephrine, naloxone
Clinical terms267myocardial infarction, cholecystectomy, angina, hyperlipidemia
Anatomical terms152epithelium, myocardium, synovium, choroid plexus
Medical acronyms149MI, COPD, CHF, UTI, HbA1c, SpO2
Total960

Each term has two pronunciation representations.

Alias format uses plain-text phonetic respelling with the stressed syllable capitalized. For example, atorvastatin becomes a-TOR-va-STAT-in. This works across every provider because it is just text substitution. The engine reads the alias instead of the original word.

IPA format uses standard International Phonetic Alphabet notation. For example, əˌtɔr.vəˈstæ.tɪn. This is more precise, especially for terms where the stress pattern is non-obvious, but only some providers accept it.

The pack provides both because they serve different purposes. Alias is the universal fallback. IPA is the precision option. The converter script emits whichever format each provider supports.

Before and after

The widget below plays before/after audio samples generated with Telnyx Qwen3TTS. Each card compares the raw TTS pronunciation (without the dictionary) to the corrected pronunciation (with the dictionary applied). Click play to hear the difference.

Provider support

The pack ships pre-built files for seven output formats:

ProviderFormatAliasIPAFiles
TelnyxJSONNoYes10 files, 100 phoneme entries each
ElevenLabsPLS XMLYesYes10 PLS files, alias + phoneme per lexeme
VapiJSONNoYes1 file, 960 <<ipa>> entries
Amazon PollyPLS XMLNoYes10 PLS files, en-US
RetellJSONNoYes1 file, 909 word-level entries
STT (Deepgram, Speechmatics, Soniox)KeytermsN/AN/A1 file, 960 comma-separated terms
GenericCSV + JSONYesYesBoth columns for any provider

The Telnyx JSON files use phoneme entries only. We tested this against the live Telnyx API and confirmed that the API rejects duplicate text entries in the same dictionary, so you cannot have both an alias and a phoneme entry for the same word. Phoneme is the more precise format, so that is what we ship.

The Retell files filter out multi-word terms like "metoprolol succinate" because Retell's pronunciation dictionary is word-level. Multi-word entries would be rejected or silently ignored.

The STT side

TTS pronunciation gets the attention, but STT misrecognition is the bigger problem. When a patient says "metformin" and the speech-to-text engine transcribes it as "met for men," the assistant breaks. The clinical reasoning layer gets garbage input and produces garbage output.

Most STT engines support keyterm boosting, which increases the recognition weight of specified words. Deepgram, Speechmatics, and Soniox all accept comma-separated keyterm lists. The pack includes providers/stt/keyterms.txt with all 960 terms in that format.

with open("providers/stt/keyterms.txt") as f:
    keyterms = f.read().strip()

# Deepgram
response = requests.post(
    "https://api.deepgram.com/v1/listen",
    headers={"Authorization": f"Token {os.environ['DEEPGRAM_API_KEY']}"},
    json={
        "audio_url": audio_url,
        "transcription": {"keyterm": keyterms},
    },
)

If you are building a healthcare voice assistant, you need both sides. The pronunciation dictionary fixes what the assistant says. The keyterm list fixes what the assistant hears.

Get started

Telnyx (30 seconds)

git clone https://github.com/team-telnyx/medical-pronunciation-dictionary.git
cd medical-pronunciation-dictionary
export TELNYX_API_KEY=your_key_here
python3 import_to_telnyx.py --dry-run   # preview
python3 import_to_telnyx.py             # create

This creates 10 pronunciation dictionaries in your Telnyx account. Assign them to your assistant in the Voice tab of the portal, or via the AI Assistants API.

The pack uses 10 of the 50 dictionary slots Telnyx allows per organization. If you need dictionaries for other domains, you have 40 slots remaining.

ElevenLabs

import os, requests

with open("providers/elevenlabs/medical-pronunciations-01.pls", "rb") as f:
    response = requests.post(
        "https://api.elevenlabs.io/v1/pronunciation-dictionaries/add-from-file",
        headers={"xi-api-key": os.environ["ELEVENLABS_API_KEY"]},
        files={"file": ("medical.pls", f, "application/xml")},
        data={"name": "medical-pronunciations-01"},
    )

Vapi

import os, json, requests

with open("providers/vapi/medical-pronunciations.json") as f:
    payload = json.load(f)

response = requests.post(
    "https://api.vapi.ai/pronunciation-dictionary",
    headers={"Authorization": f"Bearer {os.environ['VAPI_API_KEY']}"},
    json=payload,
)

Amazon Polly

aws polly put-lexicon \
  --name medical-pronunciations-01 \
  --content file://providers/amazon-polly/medical-pronunciations-01.pls

Why we open sourced it

We could have made this a Telnyx-only feature. A checkbox in the portal: "Enable medical pronunciation pack." Instead we put it on GitHub with adapters for Vapi, ElevenLabs, Retell, and Amazon Polly.

Two reasons.

First, the healthcare teams building on Telnyx asked us for this. The teams building elsewhere asked their providers and got nothing. If we lock it to Telnyx, the teams who need it most cannot use it. The problem is not provider-specific. The 960 terms in this pack are the same 960 terms every healthcare voice AI needs.

Second, open source pronunciation data gets better with contributions. A pharmacist who catches a wrong pronunciation can open a PR. A clinician who notices a missing drug can add it. If this lived inside the Telnyx portal, those corrections would have to go through support tickets. On GitHub, they go through the same review process as any code change.

The Telnyx Voice AI platform supports pronunciation dictionaries natively, and this pack works with it out of the box. But the pack also works with every other provider. That is the point.

Limitations

Have a pharmacist check the drugs you actually use before shipping to production.

If you find a wrong pronunciation, open a PR. Missing a term? Add it. The dictionary gets better every time someone corrects it.

git clone https://github.com/team-telnyx/medical-pronunciation-dictionary.git
Share on Social
Abhishek Sharma
Abhishek Sharma
Sr Technical Product Marketing Manager

Senior Technical Product Marketing Manager