The one-sentence version
A pronunciation assessment API takes a short audio recording and, usually, the text the speaker was supposed to say, and returns scores describing how close the speech was to a native speaker — for the whole recording, for each word, and for each individual sound.
That is the whole job. Everything else — accents, fluency, exam bands, tone — is a variation on how the scoring is broken down and what the vendor chooses to model.
What goes in
- Audio. A few seconds of speech, typically WAV, MP3, M4A, OGG or WebM, recorded in a browser, phone or desktop app. Most APIs cap a request at 30–60 seconds for scripted tasks.
- Reference text. The sentence the learner was asked to read. This is what makes the task scripted: the engine knows what was intended, so it can align each sound to what it heard.
- Language. A locale code such as
en-US,zh-CNores-419, which selects the acoustic model and the pronunciation dictionary.
Some APIs also accept unscripted speech — the learner talks freely on a topic — and combine transcription with scoring. That is a different, harder problem, and the scores are less precise because the engine has to guess what was intended.
What comes back
The useful mental model is three nested levels:
- Sentence level. An overall score, usually 0–100, plus dimensions such as pronunciation accuracy, completeness (were all the words said?), fluency (pausing and pace) and sometimes rhythm or prosody.
- Word level. A score per word, often with start and end timestamps so you can highlight the word and replay it.
- Sound level. A score per phoneme — or, for Mandarin, per initial, final and tone — with the expected sound and, in the better APIs, the sound the engine estimates was actually produced.
Here is what that looks like in TonePerfect's response for the English sentence "I like sunny days" (abbreviated):
{
"scores": { "overall": 88, "pronunciation": 86, "completeness": 100, "fluency": 91, "rhythm": 87 },
"words": [
{ "word": "sunny", "score": 72, "start_ms": 850, "end_ms": 1450, "decision": "review",
"phones": [
{ "expected": "s", "heard": "s", "score": 93 },
{ "expected": "ʌ", "heard": "ɑ", "score": 61 },
{ "expected": "n", "heard": "n", "score": 89 },
{ "expected": "i", "heard": "i", "score": 90 }
] }
]
}The word "sunny" scored 72 because the vowel drifted towards "ah". Your app can show the word in amber, say why, and play back 0.85–1.45 s of the recording.
Scores are not percentages
A score of 72 does not mean "72% correct". It is a display grade placed on a scale that vendors calibrate differently — some against native speakers, some against expert ratings, some against internal thresholds. Two APIs will give different numbers for the same recording, and both can be internally consistent. What matters is that the scale is stable, that native speakers score high on it, and that the ordering of learners is sensible. When you compare vendors, run the same recordings through both rather than comparing numbers across them.
Scores versus decisions
A subtle but important distinction: a score tells you how close a sound was; a decision tells you whether to correct it. A slightly off-centre vowel might score 78 and still not deserve a correction — no teacher would stop the class for it. Some APIs return only scores and leave the threshold to you (Azure's default is a per-word "mispronunciation" error type; many teams then apply their own 60/70 cut-offs). TonePerfect returns an explicit decision — review, uncertain or no_correction — per word, and per initial, final and tone for Mandarin, so the product decision "should we say something?" is made by the engine, which has seen far more recordings than any threshold you would pick by hand.
Scripted vs unscripted
For most learning products, scripted assessment is what you want: the learner reads a sentence you chose, and the scores are precise because the engine knows the target. Unscripted assessment (free speech on a topic, IELTS-style tasks) is valuable for exam preparation and conversation practice, but the pronunciation scores are noisier and the products cost more per request. Speechace, SpeechSuper, Azure and ELSA offer unscripted modes; TonePerfect is scripted only.
How vendors price it
Four models are common, checked 10 September 2026:
- Per request. SpeechSuper charges per assessment ($0.004–0.008 for scripted tasks) with a $20 monthly minimum.
- Plan plus overage. Speechace bundles requests into $40–125 monthly plans and charges $0.008 per extra 15-second request.
- Per audio hour. Azure bills pronunciation assessment as speech-to-text time (about $1 per hour on the standard tier), plus add-ons for some scores.
- Credits. TonePerfect plans include monthly credits ($10 for 2,500, $150 for 50,000); one credit scores a recording up to 15 seconds, and failed requests are free.
The pricing comparison works through what each model costs at 1,000, 10,000 and 100,000 recordings a month.
Questions to ask before you choose
- Which languages, really? "Supports Mandarin" can mean phoneme scores or it can mean initial/final/tone with sandhi handled. Ask for a sample response.
- What is the unit of feedback? Word-level decisions with phoneme evidence? Phoneme-level decisions? Only numbers?
- How are native speakers treated? Ask what fraction of native recordings the engine flags. An engine that "finds" errors in native speech will frustrate your learners.
- What happens to the audio? Is it stored? For how long? Is it used to train models? Can you opt out?
- How do retries work? Mobile networks drop. An
Idempotency-Keymeans a retried request cannot double-charge you or the learner. - What does it cost at your volume? Including minimums, overages and add-ons.
Where to go next
If you want to see the full response shape, the documentation has every field. If you are comparing vendors, the comparison pages put SpeechSuper, Speechace, Azure and ELSA side by side with TonePerfect. And if you want to build, the integration tutorial goes from recording to feedback UI.