1Why it matters
Mandarin is a tonal language: the tone is part of the meaning. The same sound ma becomes a different word depending on how the pitch moves. A wrong tone teaches the wrong word.
We do not rely on a phone’s built-in text-to-speech. On many devices it is silent, reads character by character, or distorts the tone, so what a child hears would depend on their phone. Instead, KAVI’s approach is that every Mandarin syllable is a pre-recorded, loudness-normalized clip (−16 LUFS), delivered as .ogg plus .mp3, so the same sound plays every time, on every device. That bank is being built now.
2How we verify
We judge tone objectively, from the voice’s pitch (F0) contour, measured with Praat, a standard tool for speech analysis. A tone is a shape: level, rising, dipping then rising, or falling. We measure that shape directly instead of guessing by ear.
We measure the tone over the body of the syllable, excluding the first ~10% and last ~20%, so onset and offset artifacts do not distort the result.
3The qualification criteria
A voice is held to the standard below. Section 5 publishes the measured results for every block on the candidate voice, including what is still in progress.
| Block | What it tests | Items |
|---|---|---|
| A | The four tones + neutral tone | 妈 mā · 麻 má · 马 mǎ · 骂 mà · 吗 ma |
| B | Tone-3 integrity (a clean low dip, no stutter) | 你 · 好 · 我 · 水 |
| C | Hard initials: zh / ch / sh / r vs z / c / s | 知 · 吃 · 师 · 日 · 字 · 词 · 四 |
| D | ü finals | 女 · 绿 · 鱼 · 去 |
| E | Tricky finals | 天 · 红 · 风 · 二 |
| F | Tone-change (sandhi) words | 你好 ní hǎo · 不是 bú shì · 一个 yí gè |
Pass rule
- The pitch contour matches the expected tone shape.
- No vocal-fry collapse below 100 Hz inside the syllable.
- No gap splitting the syllable.
- Tone 2 and Tone 3 are separated by at least 2 semitones.
- Sandhi words (Block F): the first syllable must rise.
4Why Achernar: we tested five voices
All five voices produce audio. We screened them on the same three items (妈, 马, 你好) with the same instruction, and measured each with the method above. None was flawless; Achernar is the voice we took forward to the full benchmark. “Character” is Google’s own descriptor for each voice.
| Voice | Character | What we measured | Verdict |
|---|---|---|---|
| Gacrux | Mature | ASR heard 妈 as the neutral-tone 嘛 and 马 as two syllables (妈妈). 马 has a 229 ms gap and sinks to 77 Hz inside the syllable. | Set aside |
| Sulafat | Warm | Segments read correctly by ASR (tone not verifiable that way). The end of 妈 falls to about 75 Hz, and 马 and 你好 break into separate voiced stretches (190–260 ms gaps) with troughs near 80 Hz. | Set aside |
| Vindemiatrix | Gentle | Weakly voiced: 你好 has only about 280 ms of voiced sound (others 890–1,050 ms), too little to measure its tones. 马 has a 300 ms gap. | Set aside |
| Kore | Firm | Our earlier pilot voice, kept as the baseline. 妈 is very short (about 300 ms voiced), and 你好 sinks to about 77 Hz for 14 consecutive frames inside the syllable. | Baseline only |
| Achernar | Soft | Full-length level 妈 (about 650 ms voiced, 195–213 Hz) and no segment anomalies. In this short screen its 马 showed a 190 ms gap and a trough near 83 Hz, which led us to tighten the instructions and verify takes (sections 5 and 6). | Chosen |
Screen result only. Only Achernar went through the full benchmark below, so the other voices have no like-for-like Block A to F scores.
5Benchmark results: voice “Achernar”
Achernar is a female voice from Google’s Gemini text-to-speech. Below are the measured results for the four tones, the neutral tone, the hardest contrast in Mandarin, and then the full A to F scorecard. Each curve is the real measured pitch of the clip shown (syllable body only, on a shared scale from 100 to 350 Hz), not a drawing.
The four tones
The 马 shown is the take generated with a “clearly low dip” instruction: the plain benchmark 马 passes only marginally (a shallow dip). The 麻 shown is a Tone 2 take that passes the rime-only test; the plain benchmark 麻 is borderline (see the scorecard).
The neutral tone
The hard test: Tone 2 vs Tone 3
Tone 2 and Tone 3 are the most confusable pair for learners: both rise at the end, but Tone 3 first dips low. For a learner to hear the difference, the third tone has to sit clearly below the second. We require at least 2 semitones as the bar for “clearly distinguishable.” All three minimal pairs passed, with the third tone sitting 3.9 to 5.5 semitones below the second.
| Tone 2 | Tone 3 | Gap (trough to trough) | Result |
|---|---|---|---|
| 麻 má | 马 mǎ | 3.9 semitones lower | PASS |
| 姨 yí | 椅 yǐ | 5.5 semitones lower | PASS |
| 无 wú | 五 wǔ | 5.2 semitones lower | PASS |
Gap = how far the lowest point of the Tone 3 clip sits below the lowest point of the Tone 2 clip (12 semitones = one octave). Listen side by side, Tone 2 on the left and Tone 3 on the right:
Full benchmark: Blocks A to F
Every item below was generated once with the same instruction and scored on pitch only, using the rime-only method (first ~10% and last ~20% excluded). ✓ Pass meets the shape test. ≈ Borderline fails the rime-only test but matches over the whole syllable, because the defining part of the shape (usually the final rise of a third tone) sits in the excluded edge. In progress means not yet passing. “Minor” notes are low troughs, gaps or loudness that we expect generate-and-verify to remove.
| Item | Expected tone | Measured pitch (start → low → end) | Tone | Notes |
|---|---|---|---|---|
| Block A · four tones + neutral — 4 of 5 clear pass, 1 borderline | ||||
| 妈 mā | high & level | 225 → 217 → 220 Hz | ✓ Pass | |
| 麻 má | rising | 160 → 146 → 165 Hz | ≈ Borderline | Matches over the whole syllable (160 → 146 → 266 Hz); the key part of the shape (the final rise) falls in the excluded edge. The 麻 played above is a different Tone 2 take that passes. |
| 马 mǎ | low dip, then rise | 177 → 159 → 179 Hz | ✓ Pass | Shallow dip (marginal). The 马 played above is the forced-low take. |
| 骂 mà | falling | 284 → 148 → 157 Hz | ✓ Pass | Watch: the very end of the clip dips to 88 Hz, outside the measured syllable body. |
| 吗 ma | short & light | 225 → 220 → 265 Hz | ✓ Pass | Minor: 3.6 dB louder than the tone 1–4 average. To clean up. |
| Block B · tone-3 integrity — 2 of 4 clear pass, 2 borderline | ||||
| 你 nǐ | low dip, then rise | 185 → 125 → 140 Hz | ≈ Borderline | Matches over the whole syllable (188 → 125 → 189 Hz); the key part of the shape (the final rise) falls in the excluded edge. |
| 好 hǎo | low dip, then rise | 143 → 125 → 151 Hz | ✓ Pass | |
| 我 wǒ | low dip, then rise | 162 → 142 → 148 Hz | ≈ Borderline | Matches over the whole syllable (163 → 142 → 180 Hz); the key part of the shape (the final rise) falls in the excluded edge. |
| 水 shuǐ | low dip, then rise | 153 → 87 → 138 Hz | ✓ Pass | Minor: low trough, dips to 87 Hz inside the syllable. To clean up via generate-and-verify. |
| Block C · hard initials — 6 of 7 clear pass, 1 borderline | ||||
| 知 zhī | high & level | 227 → 226 → 229 Hz | ✓ Pass | |
| 吃 chī | high & level | 250 → 246 → 252 Hz | ✓ Pass | |
| 师 shī | high & level | 272 → 269 → 279 Hz | ✓ Pass | |
| 日 rì | falling | 293 → 211 → 222 Hz | ✓ Pass | |
| 字 zì | falling | 244 → 133 → 141 Hz | ✓ Pass | |
| 词 cí | rising | 159 → 150 → 179 Hz | ≈ Borderline | Matches over the whole syllable (172 → 150 → 232 Hz); the key part of the shape (the final rise) falls in the excluded edge. |
| 四 sì | falling | 271 → 146 → 155 Hz | ✓ Pass | |
| Block D · ü finals — 3 of 4 clear pass, 1 borderline | ||||
| 女 nǚ | low dip, then rise | 189 → 127 → 137 Hz | ≈ Borderline | Matches over the whole syllable (189 → 127 → 161 Hz); the key part of the shape (the final rise) falls in the excluded edge. |
| 绿 lǜ | falling | 299 → 170 → 178 Hz | ✓ Pass | |
| 鱼 yú | rising | 159 → 159 → 196 Hz | ✓ Pass | |
| 去 qù | falling | 306 → 191 → 206 Hz | ✓ Pass | |
| Block E · tricky finals — 4 of 4 clear pass | ||||
| 天 tiān | high & level | 234 → 216 → 216 Hz | ✓ Pass | |
| 红 hóng | rising | 152 → 134 → 213 Hz | ✓ Pass | |
| 风 fēng | high & level | 235 → 221 → 227 Hz | ✓ Pass | |
| 二 èr | falling | 268 → 141 → 153 Hz | ✓ Pass | |
| Block F · sandhi words — 1 of 3 clear pass, 2 in progress | ||||
| 你好 ní hǎo | 1st syllable rising | syllable 1: 208 → 188 → 212 Hz (180 ms voiced) | In progress | First syllable does not rise cleanly: it dips slightly and then recovers. |
| 不是 bú shì | 1st syllable rising | syllable 1: 171 → 169 → 190 Hz (70 ms voiced) | In progress | First syllable is too short (about 70 ms voiced) to measure. |
| 一个 yí gè | 1st syllable rising | syllable 1: 168 → 155 → 213 Hz (230 ms voiced) | ✓ Pass | First syllable rises, after a small initial dip. |
About consonants and vowels. An earlier automated check of the sounds themselves flagged several items. We then found that the speech-recognition tool misreads isolated syllables even on a known-good reference voice, so those results are unverified and are excluded here. This report scores tone only.
6Our standard: generate and verify
Text-to-speech is not perfectly repeatable: the same syllable generated twice can come out differently. So we never accept a single attempt. For every syllable we generate several takes and keep only the take that objectively passes the pitch-contour test. Takes with vocal fry, or a wrong or ambiguous tone, are rejected and regenerated.
- Generate several takes of the syllable
- Measure each take’s pitch contour (Praat)
- Reject fry, gaps, and wrong or ambiguous tones
- Keep only a take that passes
No clip is released to a child unless it passes. That is the standard the bank will be held to as it is built. The Tone 3 test above shows why this matters: 2 of 3 takes per pair passed the tone test, and only 1 of 3 was also free of fry or gaps for 麻/马 and 姨/椅 (2 of 3 for 无/五). The clips played in the four-tone and Tone 2 / Tone 3 sections are takes that passed; the scorecard shows plain first-run results, including the items still to clean up.