Skip to navigation

Pronunciation Dictionaries

Control how specific words are pronounced with pronunciation dictionaries.
View as Markdown

Pronunciation dictionaries allow you to customize how specific words are pronounced in your text-to-speech synthesis. This is particularly useful for:

  • Brand names, product names, or proper nouns
  • Technical terms or acronyms
  • Words that should be pronounced differently than their standard pronunciation
  • Non-English words in English text (or vice versa)

How Pronunciation Dictionaries Work

A pronunciation dictionary is a collection of word-pronunciation pairs that you create and manage through the Smallest AI API. Each dictionary has a unique ID that you can reference in your TTS requests to ensure consistent pronunciation across your applications.

Key Concepts

  • Word: The text that appears in your input
  • Pronunciation: The way the word is written out in normal words to show how it sounds (not IPA)
  • Dictionary ID: A unique identifier for your pronunciation dictionary that you use in TTS requests

Creating a Pronunciation Dictionary

Step 1: Create Your Dictionary

First, create a pronunciation dictionary with your custom word-pronunciation pairs:

curl -X POST "https://api.smallest.ai/waves/v1/pronunciation-dicts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"word": "API",
"pronunciation": "ay-pee-eye"
},
{
"word": "GitHub",
"pronunciation": "git-hub"
},
{
"word": "SQL",
"pronunciation": "sequel"
}
]
}'

Response:

{
"id": "64f1234567890abcdef12345",
"items": [
{
"word": "API",
"pronunciation": "ay-pee-eye"
},
{
"word": "GitHub",
"pronunciation": "git-hub"
},
{
"word": "SQL",
"pronunciation": "sequel"
}
],
"createdAt": "2023-09-01T12:00:00.000Z"
}

Step 2: Save the Dictionary ID

Important: Save the returned id from the response. You’ll need this ID to reference your pronunciation dictionary in TTS requests and for future updates or deletions.

const dictionaryId = "64f1234567890abcdef12345"; // Save this!

Managing Your Pronunciation Dictionaries

List All Dictionaries

Retrieve all your pronunciation dictionaries:

curl -X GET "https://api.smallest.ai/waves/v1/pronunciation-dicts" \
-H "Authorization: Bearer YOUR_API_KEY"

Update a Dictionary

Modify an existing pronunciation dictionary:

curl -X PUT "https://api.smallest.ai/waves/v1/pronunciation-dicts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "64f1234567890abcdef12345",
"items": [
{
"word": "OpenAI",
"pronunciation": "open ay eye"
},
]
}'

Delete a Dictionary

Remove a pronunciation dictionary:

curl -X DELETE "https://api.smallest.ai/waves/v1/pronunciation-dicts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"id": "64f1234567890abcdef12345"
}'

Using Pronunciation Dictionaries in TTS Requests

Once you have created a pronunciation dictionary and obtained its ID, you can use it in your TTS requests by including the pronunciation_dicts parameter. This parameter accepts an array of dictionary IDs, allowing you to use multiple pronunciation dictionaries in a single request:

Example

curl -X POST "https://api.smallest.ai/waves/v1/tts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Welcome to Smallest AI API! Our TTS service integrates with GitHub.",
"voice_id": "your_voice_id",
"pronunciation_dicts": ["64f1234567890abcdef12345"],
"sample_rate": 24000,
"speed": 1.0,
"language": "en"
}'

Using Multiple Dictionaries

You can also use multiple pronunciation dictionaries in a single request by providing an array of dictionary IDs:

curl -X POST "https://api.smallest.ai/waves/v1/tts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Our API uses PostgreSQL and integrates with GitHub for CI/CD.",
"voice_id": "your_voice_id",
"pronunciation_dicts": [
"64f1234567890abcdef12345",
"64f9876543210fedcba09876"
],
"sample_rate": 24000,
"speed": 1.0,
"language": "en",
"output_format": "wav"
}'

Complete Workflow Example

Here’s a complete example showing the full workflow from creating a dictionary to using it in synthesis:

import requests
import json
# Your API configuration
API_KEY = "your_api_key_here"
BASE_URL = "https://api.smallest.ai/waves/v1"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json"
}
# Step 1: Create pronunciation dictionary
pronunciation_data = {
"items": [
{"word": "PostgreSQL", "pronunciation": "post-gres"},
{"word": "Redis", "pronunciation": "red-iss"},
{"word": "Kubernetes", "pronunciation": "koo-ber-net-ees"},
{"word": "nginx", "pronunciation": "engine-x"}
]
}
# Create the dictionary
response = requests.post(
f"{BASE_URL}/pronunciation-dicts",
headers=headers,
json=pronunciation_data
)
dict_data = response.json()
dictionary_id = dict_data["id"]
print(f"Created pronunciation dictionary with ID: {dictionary_id}")
# Step 2: Use the dictionary in TTS synthesis
tts_request = {
"text": "Our infrastructure uses PostgreSQL, Redis, Kubernetes, and nginx.",
"voice_id": "your_voice_id",
"pronunciation_dicts": [dictionary_id], # Use the dictionary ID here
"sample_rate": 24000,
"speed": 1.0,
"language": "en",
"output_format": "wav"
}
# Generate speech with custom pronunciations
audio_response = requests.post(
f"{BASE_URL}/lightning-v3.1/get_speech",
headers=headers,
json=tts_request
)
# Save the audio file
with open("speech_with_custom_pronunciations.wav", "wb") as f:
f.write(audio_response.content)
print("Speech generated with custom pronunciations!")

Tips for Creating Pronunciations

  1. Break down complex words: For multi-syllable words, separate syllables with hyphens

    • “Kubernetes” → “koo-ber-net-ees”
  2. Spell it how it sounds: Write words the way you want them spoken, even if it’s not standard spelling

    • “SQL” → “sequel”
    • “API” → “ay-pee-eye”
  3. Stay consistent: Use the same style across your dictionary (e.g., always use hyphens for syllables).

  4. Test and refine: Generate a small dictionary first, test the pronunciations, and adjust until they sound natural.


Best Practices

Dictionary Management

  • Keep dictionaries focused: Create separate dictionaries for different domains (e.g., one for technical terms, another for product names).
  • Combine multiple dictionaries: Use the array format to apply multiple pronunciation dictionaries in a single TTS request.
  • Update regularly: Add or refine pronunciations as your vocabulary grows.

Pronunciation Quality

  • Verify pronunciations: Listen to the output to confirm it matches expectations.
  • Consider context: Some words may have multiple valid pronunciations-pick the one that makes sense for your use case.
  • Language consistency: Ensure pronunciations match the language setting of your TTS requests.

Performance Considerations

  • Cache dictionary IDs: Store dictionary IDs in your application to avoid repeated API calls.
  • Batch updates: When possible, update multiple pronunciations in a single API call.
  • Monitor usage: Track which dictionaries are actively used in production.

Troubleshooting

Common Issues

Dictionary not found

  • Make sure you’re using the correct dictionary ID and that the dictionary hasn’t been deleted.

Pronunciations not applied

  • Verify that the dictionary ID is included in your TTS request.
  • Ensure the words in your text match exactly (case-sensitive) with your dictionary entries.
  • Confirm the pronunciation is written in plain text (not IPA).

Unexpected pronunciations

  • Simplify your spelling.
  • Test with shorter words first and adjust gradually.

Error Responses

The API will return specific error messages for common issues:

{
"error": "Invalid request body",
"details": [
{
"code": "invalid_type",
"expected": "string",
"received": "undefined",
"path": ["items", 0, "pronunciation"],
"message": "Required"
}
]
}

Next Steps