Mandarin Chinese Text to Speech: Tones and Polyphones
Chinese text to speech must get tones and polyphones right. See how Mandarin voices handle tone sandhi, numbers and pronunciation fixes, plus script tips.
Chinese text to speech has to get Mandarin tones right and choose the correct reading of characters that have more than one pronunciation. Standard Chinese has five phonemic tones, four full tones and a neutral tone. Roughly one in five of the 2,400 most common characters has more than one reading.
This guide covers how tones change in running speech, how to fix a wrong reading, how numbers are read and what the main providers offer for Mandarin as of October 2026.
How the five Mandarin tones work
Tone changes the meaning of a syllable. The standard example is ma, which means different things in each tone.
| Tone | Mark | Example | Meaning | |---|---|---|---| | 1 | mā | ma1 | mother | | 2 | má | ma2 | hemp | | 3 | mǎ | ma3 | horse | | 4 | mà | ma4 | curse |
A neutral-tone syllable is short and takes its pitch from the syllable before it (Standard Chinese).
Tone sandhi: the spoken tone is not always the written one
Tone sandhi changes some tones in connected speech. Two rules matter most for audio. When two third tones occur in a row, the first becomes a second tone. The same change applies to 不 and 一, which change tone before certain tones (Tone sandhi).
| Written | Spoken | Rule | |---|---|---| | 你好 nǐ hǎo | ní hǎo | Two third tones in a row: the first becomes second | | 不是 bù shì | bú shì | 不 becomes second tone before a fourth tone | | 一次 yī cì | yí cì | 一 becomes second tone before a fourth tone | | 一般 yī bān | yì bān | 一 becomes fourth tone before other tones | | 第一个 dìyīgè | dìyīgè | Ordinal 一 keeps its first tone |
Azure's phoneme example writes both syllables of 你好 as third tone, which suggests the engine applies sandhi itself. That is an inference from one example, not a stated guarantee, so listen to tricky sentences before you publish.
Polyphones: one character, several readings
A polyphone, or heteronym, is a character with more than one reading. The Wikipedia article on heteronyms uses 行 as its example: háng means "profession" and xíng means "OK". It also estimates that about 20% of the 2,400 most common characters have multiple readings. That is a character statistic from a secondary source, not a measure of how well any engine picks the right reading.
The Table of General Standard Chinese Characters lists 8,105 characters, promulgated on 5 June 2013. Its first tier has 3,500 frequent characters and its second tier has 3,000.
How to fix a wrong reading
Start with the words around the character. Adding context usually makes the intended reading clear, and it works in any tool. If you need exact control, the sources document these routes:
- Azure pinyin phonemes. Set the phoneme tag's alphabet to sapi, not pinyin, and write the pinyin with tone numbers. For 你好, the phone string is ni 3 hao 3. A retroflex "r" marks erhua, so 一会儿 is written yi 2 - hui r 4 (Azure phonetic sets).
- Azure name reading. The say-as element with interpret-as set to name changes how a family name is read. For example, the surname 仇 is read qiú in 仇先生 rather than chóu (Azure's pronunciation markup documentation).
- Google Chirp 3 HD. Chirp 3 HD supports Mandarin and accepts IPA or X-SAMPA custom pronunciation. Its SSML support is partial and in Preview (Google Cloud Chirp 3 HD).
This research found no documented way for pinyin typed as plain text to be read reliably, so test it before you rely on it.
Numbers, years and measure words
Chinese number reading follows rules that a script can get wrong without any error message. Three rules matter most (Chinese numerals).
- Use 两 (liǎng) rather than 二 (èr) before a measure word, as in 两个人 (two people).
- Read years digit by digit. 2001 is 二零零一.
- Read interior zeros aloud. 205 is 二百零五.
Azure supports say-as types such as cardinal, date, currency and telephone for Chinese locales. Use them when a reading must be exact, and check the result by ear.
Mandarin, Cantonese and Taiwanese Mandarin
Mandarin, Cantonese and Taiwanese Mandarin have separate locales, so choose by locale rather than by the word "Chinese." Azure lists regional Mandarin locales such as zh-CN-sichuan, zh-TW for Taiwanese Mandarin, and zh-HK and yue-CN for Cantonese. Amazon Polly offers a Mandarin voice, Zhiyu, and a Cantonese voice, Hiujin.
Chinese text to speech across providers
| Provider | Mandarin voices listed | Pronunciation control documented here | |---|---|---| | Azure | About 60 zh-CN entries across standard, HD, multilingual and MAI-Voice-2 types | Pinyin phonemes with tone numbers, say-as | | Amazon Polly | Zhiyu (neural and standard) | Not checked in this research | | Google Cloud | About 38 cmn-CN voices, including 30 Chirp3-HD (approximate); 6 for cmn-TW | IPA or X-SAMPA custom pronunciation | | ElevenLabs | Chinese on Multilingual v2, Flash v2.5, v3 and v4 | Not documented here |
Counts are as of October 2026. Azure's count was made from table rows and is approximate.
Script tips for natural Mandarin audio
- Write in one character set, either simplified or traditional, and keep it consistent. This guide does not cover how OndaLabs handles either set.
- Spell out numbers when the reading matters, using the rules above.
- Add context words to make a polyphone's reading clear.
- Break long passages into paragraphs, generate them, and listen to the joins.
- Transcribe a test recording with speech to text and compare it with your script. Any gap shows where a reading went wrong.
Making Chinese audio with OndaLabs
- Open the text to speech studio and paste your Chinese script.
- Pick one of the 30 prebuilt voices, which work in every supported language. Chinese has its own page: Chinese text to speech on OndaLabs.
- Choose Onda Lite at 1 credit per character, or Onda Flash at 1.5 credits per character on paid plans.
- Describe the delivery in plain words, generate a sample, and re-word any sentence that reads wrong.
Credits are counted per character. A Chinese character carries more meaning than a Latin letter, so do not compare cost per character with an English script. A 1,000-character script costs 1,000 credits on Onda Lite and 1,500 on Onda Flash.
The speech to text tool transcribes audio at 50 credits per minute, which helps when you check a recording against a script. The Free plan at $0 includes 2,000 credits a month. Starter at $9 a month includes 170,000 credits and commercial use.
For the same kind of workflow in Korean, see Korean text to speech. To translate a video's audio, see AI dubbing explained.
Frequently asked questions
How does text to speech handle Mandarin tones?
Mandarin has five tones, and tone sandhi changes some written tones in speech, such as two third tones in a row. Azure's phoneme example suggests the engine applies sandhi itself, but no source guarantees it. Listen to tricky sentences before you publish.
Can I control Chinese pronunciation with pinyin?
Azure documents pinyin with tone numbers when the phoneme alphabet is set to sapi. Google Chirp 3 HD accepts IPA or X-SAMPA in Preview. This research found no documented way for plain pinyin to be read reliably, so test first.
How are numbers and years read in Chinese text to speech?
Years are read digit by digit, so 2001 is 二零零一, and interior zeros are read aloud. Use 两 rather than 二 before a measure word, as in 两个人. Azure supports say-as types for Chinese locales.
Does Chinese text to speech cover Cantonese and Taiwanese Mandarin?
Providers offer them as separate locales. Azure lists zh-TW for Taiwanese Mandarin and zh-HK and yue-CN for Cantonese, and Amazon Polly offers the Cantonese voice Hiujin. This guide does not say which Chinese variants OndaLabs' voices cover.
Is there a free Chinese text to speech tool?
OndaLabs has a Free plan at $0 with 2,000 credits a month, about 2 minutes of audio. That is enough to test a Chinese script. Check the current terms of other tools before you rely on their free plans.