> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kugelaudio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Pronunciation & IPA

> Fix how specific words are spoken — inline IPA in the request text, or replacement/IPA entries in pronunciation dictionaries.

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:

```text theme={null}
"Willkommen bei /ˈkuːɡl̩/ Audio."
```

Use the slash form shown here and test it with the target voice and language.
If normalization changes a specialized transcription, disable normalization
for that request.

<Tabs>
  <Tab title="Python">
    ```python theme={null}
    audio = client.tts.generate(
        text="Willkommen bei /ˈkuːɡl̩/ Audio.",
        voice_id=1071,
        language="de",
    )
    ```
  </Tab>

  <Tab title="JavaScript">
    ```typescript theme={null}
    const audio = await client.tts.generate({
      text: 'Willkommen bei /ˈkuːɡl̩/ Audio.',
      voiceId: 1071,
      language: 'de',
    });
    ```
  </Tab>

  <Tab title="cURL">
    ```bash theme={null}
    curl -X POST https://api.kugelaudio.com/v1/tts/generate \
      -H "Authorization: Bearer $KUGELAUDIO_API_KEY" \
      -H "Content-Type: application/json; charset=utf-8" \
      -d '{
        "text": "Willkommen bei /ˈkuːɡl̩/ Audio.",
        "voice_id": 1071,
        "language": "de"
      }' --output output.pcm
    ```
  </Tab>
</Tabs>

<Note>
  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.
</Note>

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**.

```json theme={null}
{
  "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](/features/dictionaries) ·
[API reference](/api-reference/endpoints/dictionaries) · SDK pages:
[Python](/sdks/python/dictionaries), [JavaScript](/sdks/javascript/dictionaries),
[Java](/sdks/java/dictionaries).

## Choosing the right tool

| Problem                                                       | Tool                                                                                               |
| ------------------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| 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 request                 | [Inline IPA](#inline-ipa-in-the-request-text), or just write the spoken form ("Koogel Audio")      |
| Text should be spelled character-by-character (codes, emails) | [`<spell>` tags](/prompting/spell)                                                                 |
| Numbers/dates/currency read wrong                             | Set `language` + [normalization](/features/text-processing)                                        |
| Migrating from SSML `<phoneme alphabet="ipa">`                | Remove the unsupported tag and replace it with [inline `/…/` IPA](#inline-ipa-in-the-request-text) |

## Quick example

Send the dictionary's project ID on synthesis. With `projectId` set, active
dictionaries apply automatically; use `dictionaryIds` when you need an exact
selection:

```typescript theme={null}
const d = await client.dictionaries.create({ name: 'brand-terms', language: 'de' });
await client.dictionaries.entries.add(d.id, {
  word: 'Kugel',
  ipa: 'ˈkuːɡl̩',
});

const audio = await client.tts.generate({
  text: 'Willkommen bei Kugel Audio.',
  voiceId: 1071,
  language: 'de',
  projectId: d.projectId,
});
```

See [Dictionaries](/features/dictionaries) for matching rules, case
sensitivity, and bulk sync.
