Pronunciation & SSML
Text-to-speech voices stumble on acronyms, names, numbers, and borrowed words. Usually the fix is to change how you write the text, not what the card says. This page starts with techniques that work with every voice, then covers SSML markup and where it applies.
Techniques that work with every voice
Whatever you type is exactly what the voice reads, so you can steer it with ordinary text. Generate, listen, adjust, and Regenerate Audio until it sounds right.
| Problem | Try | Example |
|---|---|---|
| A pause is too short | Add a full stop, comma, or line break. An ellipsis gives a longer pause. | Photosynthesis... the process that makes glucose. |
| An acronym is read as a word | Separate the letters with spaces or full stops. | A P I or A.P.I. |
| A word is read as letters | Write it in lower case. | nasa instead of NASA |
| A name or foreign word is mangled | Respell it phonetically. The card text is for the ear, not the eye. | Siobhan → Shiv-awn |
| A number or date is read wrongly | Write it out the way it should sound. | the nineteen-eighties, first of May |
| A symbol is skipped or misread | Replace it with a word. | 5 percent, A and B |
| The voice has the wrong accent | Choose a voice for the card's language, not your own. | A French voice for French text. |
If a voice keeps getting a word wrong in a language you are learning, record that side in your own voice or a native speaker's instead. Pronunciation is the lesson there.
What SSML is
SSML (Speech Synthesis Markup Language) is an XML format for giving a speech engine instructions: pauses, emphasis, speaking rate, spelling out characters, and phonetic pronunciations.
<speak>
<say-as interpret-as="characters">API</say-as> stands for
<break time="300ms"/>
Application Programming Interface.
</speak>
Where SSML works
Audio Flashcards does not process SSML itself. It sends the text you type to the voice, and the voice decides what to do with any markup.
- iPhone and iPad — every voice source (System Voice, Kokoro, Amazon Polly, and OpenAI) receives your text as plain text, so SSML tags are not interpreted. Use the techniques above instead.
- Android — system voices from engines that understand SSML, such as Google's, may honour simple tags when the text is wrapped in
<speak>. Support varies by engine and voice, and unsupported tags are ignored or read aloud.
If you try SSML on Android, generate the audio and listen before relying on it. Because audio is generated once and saved with the card, a side that sounds right keeps sounding right — even on devices where the markup would not work.
SSML tags worth trying on Android
| Tag | What it does | Typical support |
|---|---|---|
<break time="500ms"/> | Inserts a pause. | Most likely to work. |
<say-as interpret-as="characters"> | Spells out letters. | Varies. |
<say-as interpret-as="ordinal"> | Reads 1 as first. | Varies. |
<prosody rate="slow" pitch="+10%"> | Changes speed, pitch, or volume. | Partial. |
<phoneme alphabet="ipa" ph="…"> | Gives an exact pronunciation. | Often ignored. |
Related
- Voices & Text-to-Speech — choosing a voice that suits the language.
- Writing Good Cards — writing text that reads well aloud.