Skip to main content

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.

ProblemTryExample
A pause is too shortAdd 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 wordSeparate the letters with spaces or full stops.A P I or A.P.I.
A word is read as lettersWrite it in lower case.nasa instead of NASA
A name or foreign word is mangledRespell it phonetically. The card text is for the ear, not the eye.Siobhan → Shiv-awn
A number or date is read wronglyWrite it out the way it should sound.the nineteen-eighties, first of May
A symbol is skipped or misreadReplace it with a word.5 percent, A and B
The voice has the wrong accentChoose 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​

TagWhat it doesTypical 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.