Guides

    Your TTS mispronounces brand names

    Invented and non-English names are the TTS failure case. Phonetic respelling that works across engines, and which providers take pronunciation markup.

    Versely Team9 min read

    Stock English words are not the failure case. "Quarterly revenue" and "tap the button" come out fine on every engine you will actually ship. The failure case is the thing your script cannot avoid: the product name you made up, the founder’s name that is not English, the SKU that looks like a password, the brand that is spelled one way and said another. Text-to-speech reads graphemes, then guesses a pronunciation from patterns in training data. Invented strings have no pattern. Non-English names have the wrong pattern. The model will pick a reading, confidently, and it will be wrong on the one word the client will notice.

    Do not wait for a better voice. Change the spelling the model sees, or, on engines that actually honour it, attach pronunciation markup. Phonetic respelling is the method that travels. Markup is the method that is precise, and it is not universal.

    Why invented names fail

    A TTS front-end maps letters to sounds using a grapheme-to-phoneme model plus a dictionary of known words. Dictionary hits are stable. Everything else is a guess. Brand names fail in predictable ways:

    • Stress lands on the wrong syllable. "Cabanah" becomes ca-BAN-ah instead of CAB-ah-nah.
    • A letter is read in the wrong language. "Huawei" gets an English "hua-way-ee" instead of something closer to "WAH-way".
    • Silent letters get voiced. "Porsche" gains a second syllable that should not be there, or loses the one that should.
    • Internal capitals and camel case get treated as new words. "QuickBooks" becomes "quick books" or "quickb-ooks".
    • You get a different reading every take. With no dictionary entry, sampling variation shows up on the one token you needed to be identical across a series.

    Named catalog voices and cloned voices do not fix this. They change timbre. The front-end still has to decide how to say the string. Picking a better voice from the text-to-speech catalog, or from the best text-to-speech models ranking, is worth doing for delivery. It is not a pronunciation dictionary.

    Phonetic respelling that travels

    Respelling works on every engine because it never asks the engine for a special feature. You replace the grapheme with a string whose ordinary English (or target-language) reading is the pronunciation you want. The model then does what it already knows how to do.

    Tactics that actually land, in order of how often they work:

    1. Hyphenate syllables and put the stress where a reader would put it. Nguyennwin or NGWin. XiaomiSHAU-mee. Write the stressed chunk in a form that English already knows.
    2. Substitute a familiar word. ElevenLabs documents this as an alias: the grapheme Claughton mapped to the alias Cloffton. You can do the same inline: if the model keeps saying "GIF" as "jif" and you wanted the hard G, write ghif or Giff. If you wanted "jif", write jiff.
    3. Force letter-by-letter reading with spaces or hyphens. SQL as a word becomes "sequel"; as a name you may want S Q L. FAQF A Q. iOSeye-oh-ess if the model swallows it.
    4. Use capitals and doubled letters only as a nudge, not a system. ElevenLabs notes tricks such as trapezIi to push the ending of "trapezii". These are brittle. Prefer hyphens and aliases when you care.
    5. Keep the on-screen caption in the real spelling. Captions should show Nguyen, Xiaomi, QuickBooks. Only the spoken script is respelled. If you generate captions from the TTS script, swap the display form back before burn-in.

    A working spoken line versus the caption:

    Spoken script: "SHAU-mee shipped the new redmi note with a bigger battery." Caption: "Xiaomi shipped the new Redmi Note with a bigger battery."

    Do not respell the whole sentence. One bad name is a one-token problem. Over-phonetic copy ("pleez klik teh buttun") makes the rest of the take sound drunk.

    Test three generations of the same sentence after you respell. If two of three match, you have a stable form. If they still wander, the spelling is still ambiguous: add a hyphen, change the vowel, or move to markup on an engine that supports it.

    Markup that some engines actually honour

    Phonetic respelling is the portable path. Explicit pronunciation markup is not. On Versely, that split is already in the product: some speech models take inline tags in the script, and others take clean text plus a separate style field. Putting XML or IPA in a clean-text engine means the voice reads the markup out loud.

    What is actually documented, and where:

    Mechanism Who honours it What you write
    Inline phonetic respelling Every engine SHAU-mee, S Q L, Cloffton
    IPA wrapped in slashes ElevenLabs eleven_v3, per their TTS best-practices. Not a Multilingual v2 feature "/ˌsænfrənˈsɪskoʊ/" for a word that needs a precise reading. They state 80–90% consistency, not perfect lock
    SSML-style <phoneme> tags ElevenLabs eleven_flash_v2 (CMU Arpabet or IPA). W3C SSML 1.1 defines <phoneme> and <sub> for engines that implement the spec <phoneme alphabet="ipa" ph="ˈæktʃuəli">actually</phoneme>
    Pronunciation dictionary (alias or phoneme rules) ElevenLabs Creative Studio, Dubbing Studio, and their API dictionaries. Case-sensitive, first match wins. Phoneme rules are not for Multilingual v2; use alias rules there A .pls lexicon: grapheme UN → alias United Nations
    Delivery tags in the script ElevenLabs, Grok, Inworld, Chatterbox, on Versely Performance only. Syntax differs per engine; none of them is a pronunciation dictionary
    Clean text plus a style field Cartesia, Gemini, Qwen 3, MiniMax on Versely No IPA slashes, no SSML. Respell the name. Mood goes in emotion / style_instructions

    Practical rule for a Versely text-to-speech pass:

    • On ElevenLabs Multilingual, the catalog description is Multilingual v2. ElevenLabs documents that v2 does not honour phoneme tags. Respell the name, or use an alias-style substitution (ClaughtonCloffton). IPA slash notation is a v3 feature on ElevenLabs' own platform; do not assume this catalog model will parse it.
    • On Cartesia Sonic 3.5, Gemini Flash TTS, or Qwen 3, respell the name in the text field and leave markup out. A /ˈfoʊniːm/ in that field will get spoken as slashes and symbols.
    • Do not put [phonetic: ...] in a Cartesia script. Bracketed text is a delivery cue on tag engines and literal words on param engines.

    If you need the same name said correctly in fifty videos, keep a two-column glossary (display form / spoken form) and paste the spoken form into every generate_speech call. A dictionary file only helps on the engines that accept one. A glossary helps on all of them.

    A brand glossary you keep next to the script

    Build it once, in the order the model will fail:

    1. List every proper noun in the series: brand, product, founder, city, SKU, competitor you will name out loud.
    2. Record yourself saying each one, or agree the official pronunciation with whoever owns the brand.
    3. Write a spoken form using ordinary syllables. Test it in a single sentence on the engine you will ship, three times.
    4. Store display form, spoken form, and engine. If ElevenLabs v3 locked it with IPA, keep that IPA in the ElevenLabs column and still keep a respelling for Cartesia.
    5. Never generate captions from the spoken form without mapping back.

    Example rows:

    Display Spoken (portable) Notes
    Xiaomi SHAU-mee Hyphen optional after it stabilises
    Nguyen nwin Confirm with the person
    SQL S Q L or sequel Pick one and freeze it
    FAQ F A Q Letter-by-letter
    iOS eye-oh-ess Stops "eeos"
    2024 twenty twenty-four Dates and years are a separate normalisation problem

    Then generate the voiceover through adding a voiceover to a video or the voice-over catalog as usual. The glossary is the only new artefact. It is also the artefact a translator can reuse when the same names move into Spanish or Korean: you will often want a different spoken form per language, not the English respelling pasted into a French script.

    If the take is still wrong after a stable respelling, the name may be colliding with a real word in the engine’s dictionary. Change the spoken form until it no longer looks like that word. Do not keep regenerating the original spelling. The original spelling is the bug.

    FAQ

    Will a cloned voice say my brand name correctly?

    Only if the reference recording contains that name, or if you respell it at generation time. Cloning copies timbre and pacing from the sample. It does not install a custom dictionary. A clone of you saying "Xiaomi" correctly is the one case where the original spelling may survive. A clone of you reading other copy will still guess.

    Should I put IPA in every script?

    No. IPA slash notation is an ElevenLabs v3 feature, and even there they quote 80–90% consistency, not a lock. Versely's ElevenLabs catalog model is Multilingual v2, which does not use that notation. Cartesia, Gemini, and Qwen 3 will read the slashes as text. Start with a hyphenated respelling. Add IPA only on an engine that documents it, for the two or three tokens that still wander.

    Why does the name work in one sentence and fail in the next?

    Grapheme-to-phoneme is context-sensitive. A name next to an English verb can pick a different stress than the same name at the start of a title card. Put the spoken form in every occurrence, not only the first. If it still wanders, the spoken form is still too close to another word: change the vowels.

    Can I keep the real spelling for SEO and still get the right audio?

    Yes. Respell only the TTS script. Keep the real spelling on screen, in titles, and in captions. If captions are generated from the spoken script, run a replace from spoken form back to display form before you burn them in.