Overall score
A 0–100 grade for the recording plus the dimensions the language supports: pronunciation, completeness, fluency, rhythm — or initials, finals and tones for Mandarin.
scores.overall · scores.toneNot just a score. Send a recording and the sentence the learner read: TonePerfect returns a 0–100 grade for the sentence and every word, plus what it expected and what it actually heard, sound by sound — down to the tone in Mandarin. 10 languages, one JSON response.
By the team behind the TonePerfect app, used by 30,000+ Mandarin learners.
| Part | Expected | Heard | Score | |
|---|---|---|---|---|
| Initial | sh | s | 78 | Uncertain |
| Final | i | i | 83 | OK |
| Tone | Tone 4 | Tone 2 | 62 | Review |
Tone 4 was heard as tone 2 — the kind of slip a Mandarin learner needs pointed out.
No speech pipeline to build. Your app records, TonePerfect listens, and you decide what to show.
Any sentence you choose, in Mandarin Chinese, English, French, Spanish, German, Italian, Portuguese, Russian, Korean and Japanese. Up to 30 seconds of audio from a browser, phone or desktop app.
One multipart/form-data request to POST /v1/assess with your secret key. Add an Idempotency-Key to retry safely.
Colour the words, highlight the sound to fix, play back the exact segment. Every number you need is in the same JSON.
curl https://api.toneperfect.app/v1/assess \ -H "Authorization: Bearer $TONEPERFECT_API_KEY" \ -H "Idempotency-Key: lesson-42-attempt-1" \ -F "audio=@hello.wav" \ -F "text=你好" \ -F "language=zh-CN"
5-minute quickstart: cURL, Python, Node.js ↗Python and Node.js SDKs ↗API reference ↗
Three levels of detail, already linked, so a learner can go from “86/100” to “your 4th tone came out as a 2nd” in one tap.
A 0–100 grade for the recording plus the dimensions the language supports: pronunciation, completeness, fluency, rhythm — or initials, finals and tones for Mandarin.
scores.overall · scores.toneEach word or Mandarin character with its own score and start/end milliseconds, so you can highlight it and replay it.
words[].score · start_ms · end_msFor every phoneme — or Mandarin initial, final and tone — the expected sound, the sound we estimate was said, and a score. Decisions on whether to correct come per word, and per component for Mandarin.
words[].phones[] · heard · decisionEverything we needed for our own learning app, exposed as an API.
Sentence, word and sound scores come back together, already linked. No second request, no stitching.
Every syllable is scored on its initial, final and tone separately. Third-tone sandhi is taken into account, so a correctly applied 2-3 is not marked as an error.
Every word — and every Mandarin initial, final and tone — carries a decision: review, uncertain or no correction. Designed to keep unnecessary corrections rare.
start_ms and end_ms on every word let you play back the exact segment a learner needs to hear again.
Recordings are assessed and deleted. Nothing is retained or used for training. Results expire within 24 hours.
Send an Idempotency-Key and retry freely. Failed or unassessable requests cost nothing.
How scoring and decisions work ↗All comparisons ↗SpeechSuper alternative ↗Speechace alternative ↗Azure pronunciation assessment alternative ↗
Score every speaking exercise and show learners exactly which word or sound to fix — in the same request.
Give tutors objective, per-sound evidence and let students practise between lessons with instant feedback.
Turn read-aloud sessions into word-level feedback with timestamps, so children can replay and retry the exact word.
Add speaking practice to corporate training or test-prep products without building a speech team.
Every language returns sentence, word and sound scores. Some add fluency and rhythm; Mandarin adds tones. Coverage and limits ↗
pronunciation · initials · finals · tones
Coverage & example →EnglishEnglishen-USpronunciation · completeness · fluency · rhythm
Coverage & example →FrançaisFrenchfr-FRpronunciation · completeness · fluency · rhythm
Coverage & example →EspañolSpanishes-419pronunciation · completeness
Coverage & example →DeutschGermande-DEpronunciation · completeness
Coverage & example →ItalianoItalianit-ITpronunciation · completeness
Coverage & example →PortuguêsPortuguesept-BRpronunciation · completeness
Coverage & example →РусскийRussianru-RUpronunciation · completeness
Coverage & example →한국어Koreanko-KRpronunciation · completeness
Coverage & example →日本語Japaneseja-JPpronunciation · completeness
Coverage & example →Building for Mandarin? See the Chinese pronunciation API, Mandarin tone scoring and pinyin input guides, each with a real response.
More languages are added as their native-speaker calibration is complete. Need one that is not listed? Tell us ↗
One credit scores a recording up to 15 seconds; two credits up to 30. Failed or unassessable requests are free.
2,500 credits every month
15,000 credits every month
50,000 credits every month
Every account starts with 50 free credits — no card needed. Plan credits arrive after each payment and roll over while you subscribe. Extra packs available anytime. Cancel whenever you like. Full pricing details ↗ · Free pronunciation assessment APIs compared ↗
Something else? nik@toneperfect.app
Read more: What is a pronunciation assessment API? · Integration tutorial · Tone sandhi in scoring · How pronunciation scoring works · Free pronunciation assessment APIs
A pronunciation assessment API takes a recording of someone reading a known sentence and returns scores that describe how close the speech is to a native speaker. TonePerfect returns a 0–100 score for the whole recording, for every word and for every sound, plus timestamps and an explicit recommendation on whether each sound needs correction.
10 languages today: Mandarin Chinese, English, French, Spanish, German, Italian, Portuguese, Russian, Korean, Japanese. Every language returns sentence, word and sound scores. Mandarin additionally scores the initial, final and tone of every syllable; English and French add fluency and rhythm. Call GET /v1/capabilities for the live list.
Each syllable is split into its initial, final and tone, and each part gets its own score and heard value, so your app can say “this was a 2nd tone, not a 4th” rather than “try again”. Send Chinese characters or numbered pinyin. Tone sandhi is taken into account, so a 3rd tone that correctly surfaces as a 2nd tone before another 3rd tone is not marked as an error.
Scores are calibrated per language against native-speaker recordings, and every sound carries a feedback decision — review, uncertain or no correction — so you can choose to only surface the errors the model is confident about. Language packs are labelled experimental where calibration data is still small; the capabilities endpoint states each pack’s limits honestly.
A recording of up to 30 seconds (10 MB) of someone reading the text you supply: WAV, MP3, M4A, OGG or WebM from a browser, phone or desktop app. The API assesses scripted speech; it is not a general speech-to-text or grammar service.
No. Audio is decoded, assessed and deleted. It is never retained or used to train models. The JSON result is kept for up to 24 hours only so a retried request with the same Idempotency-Key returns the same answer.
Every account starts with 50 free credits. Plans start at $10/month for 2,500 credits. One credit covers a recording up to 15 seconds; two credits cover up to 30 seconds. Failed or unassessable requests are free. Unused credits roll over, and you can add one-off credit packs at any time — 10% cheaper on Builder and 20% cheaper on Scale.
Yes, twice over. Record yourself in the demo at the top of this page — no account needed. Then every new account gets 50 free credits (up to 50 recordings of 15 seconds) that work through the real API with your own key, no card and no subscription. Plans start when you need more.
Create an account, generate a key, send your first recording. Your first 50 credits are free.