Skip to main content
When the model mispronounces a brand name, product, or domain term, you have two tools: write IPA directly in the request text, or set up a pronunciation dictionary that fixes the word in every request.

Inline IPA in the request text

Write the IPA transcription between slashes, directly where the word would be:
"Willkommen bei /ˈkuːɡl̩/ Audio."
Square brackets ([aˈleks]) are also recognized. The notation passes through text normalization untouched — the normalizer is trained to copy IPA notation verbatim — so it composes with normalize: true.
audio = client.tts.generate(
    text="Willkommen bei /ˈkuːɡl̩/ Audio.",
    language="de",
)
Use real IPA characters (the non-ASCII phonetic alphabet, e.g. ˈ, ː, ɡ), not ASCII respellings, inside the slashes. A plain English word between slashes is just read as text. SSML <phoneme> tags are not supported — write the IPA inline instead.
Inline IPA is per-request. If the same word needs fixing everywhere, put it in a dictionary instead:

Pronunciation dictionaries

A dictionary is a per-project word list applied automatically to every request. Each entry maps a word to either:
  • a replacement spelling (write it how it sounds), or
  • an IPA transcription (exact phonetic control).
When both are set, IPA wins.
{
  "word": "Kugel",
  "replacement": "Koogel",
  "ipa": "ˈkuːɡl̩"
}
Dictionaries are managed via the API or SDKs and applied server-side — your request text stays clean, and the fix applies to every request that uses the dictionary. Full management guide: Dictionaries · API reference · SDK pages: Python, JavaScript, Java.

Choosing the right tool

ProblemTool
Word pronounced wrong everywhere (“Kugel” read as English)Dictionary entry with replacement or ipa
Exact phonetics required (clinical terms, names)Dictionary entry with ipa, or inline /aɪ piː eɪ/
One-off pronunciation fix in a single requestInline IPA, or just write the spoken form (“Koogel Audio”)
Text should be spelled character-by-character (codes, emails)<spell> tags
Numbers/dates/currency read wrongSet language + normalization
Migrating from SSML <phoneme alphabet="ipa">Replace each tag with inline /…/ IPA (the tag itself is stripped)

Quick example

By default, active dictionaries apply automatically to your project’s requests (you can also select dictionaries per request with dictionary_ids):
# Create a dictionary with an IPA entry
d = client.dictionaries.create(name="brand-terms", language="de")
client.dictionaries.entries.add(
    d.id,
    word="Kugel",
    ipa="ˈkuːɡl̩",
)

# Applies automatically from the next request on
audio = client.tts.generate(
    text="Willkommen bei Kugel Audio.",
    language="de",
)
See Dictionaries for matching rules, case sensitivity, and bulk sync.