- Python 96.1%
- Shell 3.9%
| docs | ||
| scripts | ||
| src/mandotone | ||
| tests | ||
| .gitignore | ||
| LICENSE.md | ||
| pyproject.toml | ||
| README.md | ||
Mandotone
Practice your Mandarin pronunciation. You say a word or sentence, and Mandotone tells you how close your tones and sounds are to native speakers.
It scores you against real human recordings (not a synthetic voice), works fully offline on your own computer, and gives feedback per syllable — so you can see exactly which tone or sound to fix.
What you get
- A tone score (are your rising/falling/dipping tones right?)
- A pronunciation score for the individual sounds (initials and finals)
- An overall grade: Good, Keep practicing, or Fail
- Plain-language notes, e.g. "expected T2 rising, you produced T1 high-level"
- Optional pitch-contour pictures comparing you to the reference
Mandotone understands tone changes (sandhi) automatically. For example, two
third tones in a row shift: ni3 hao3 (written nǐ hǎo) is actually said
ní hǎo, and Mandotone scores you against how it's really pronounced.
Basic usage
Score a single word (record 3 seconds from your microphone):
mandotone score-word --pinyin ni3hao3 --record 3
Score a word from an existing audio file instead:
mandotone score-word --pinyin ma1 --wav myrecording.wav
Score a full sentence (give the Chinese characters too):
mandotone score-sentence --pinyin "wo3 hen3 hao3" --hanzi "我很好" --record 4
See which reference recording a syllable uses:
mandotone ref lookup --pinyin ma1
Handy options: --plot OUT/ saves contour pictures, --json prints
machine-readable results, --no-segmental scores tones only (faster).
If a recording is unclear, Mandotone says so and asks you to try again — it never makes up a score.
Setup
Installation and setup instructions are in docs/INSTALL.md.
Upstream
Reference audio is from the audio-cmn project (CC-BY-SA); Mandotone credits the speakers in every report.
License
GPLv3 or any later version. See LICENSE.md.
Copyright © 2026 Jeff Moe