ArticScore — the articulation scoring API for children's speech, by SpeechTherapyMagic
Send a recording and the word a child was asked to say. Get back a score for every individual sound, what the engine heard instead when a sound was wrong, and whether that error was a substitution or an omission — the per-phoneme detail a speech therapy or literacy product needs, from an engine fine-tuned on children's speech.
What ArticScore returns
One request, one response. You post the audio and the target text; the API handles phoneme conversion, alignment, and scoring, and returns a row for every sound in the word.
curl -X POST https://api.speechtherapymagic.com/articscore/v1/score \
-H "Authorization: Bearer $ARTICSCORE_KEY" \
-F "audio=@rabbit.wav" \
-F "text=rabbit" \
-F "dialect=en-us"{
"engine": "articscore",
"model": "ft-epoch3",
"text": "rabbit",
"overall_score": 61.4,
"words": [
{
"word": "rabbit",
"score": 61.4,
"phonemes": [
{
"phone": "R",
"phone_ipa": "ɹ",
"score": 41.2,
"sound_most_like": "W",
"sound_most_like_ipa": "w",
"extent": [120, 260],
"flagged": true,
"error_type": "substitution",
"tier": "flag"
},
{
"phone": "AE",
"phone_ipa": "æ",
"score": 88.1,
"extent": [260, 390],
"flagged": false,
"tier": "clean"
},
{
"phone": "B",
"phone_ipa": "b",
"score": 94.0,
"extent": [390, 455],
"flagged": false,
"tier": "clean"
},
{
"phone": "IH",
"phone_ipa": "ɪ",
"score": 79.6,
"extent": [455, 540],
"flagged": false,
"tier": "clean"
},
{
"phone": "T",
"phone_ipa": "t",
"score": 90.3,
"extent": [540, 620],
"flagged": false,
"tier": "clean"
}
]
}
],
"timing": { "inference_s": 1.12, "total_s": 1.31 }
}The row that matters is the first one. The /ɹ/ scored 41.2, the engine names W as what it heard over that span, and it classifies the error as a substitution— which is gliding, one of the most common patterns in children's speech. An application can turn that into “the R in rabbit came out as a W” rather than “try again”.
In a game
3 of 5 stars
rabbit
R /ɹ/ · 41.2
That R came out as a W. Put your tongue up and back — don’t let your lips round.
Stars are derived from overall_score: one star per 20 points, rounded — 61.4 gives 3 of 5. The coaching sentence is copy the product writes from sound_most_like (W) and error_type (substitution). The API does not return a coaching string.
One way this response could look in your product— the API returns the data, you own the experience. Every phone, score, substitute and tier above is read straight from the sample response for rabbit; the layouts, the star rule, the colour bands and the coaching sentence are things a product decides, not fields the API sends back.
Three things ArticScore is built around
These are design choices, not accuracy claims. Each one is scoped to what we have actually measured, and the sample it was measured on is stated with it.
Fine-tuned on children's speech
Our fine-tuning corpus is 12.5 hours of child speech from 531 child speakers across two languages, Icelandic and English; the checkpoint serving production is tuned on the English child-speech subset. Measured against our own pre-fine-tuning baseline on our internal evaluation set, our best fine-tuned research checkpoint moved the false-flag rate on correctly produced sounds from 8.0% to 6.5% at identical recall. That is our engine compared with an earlier version of itself on one sample — not a comparison with any other product.
The error vocabulary is clinical, not phonetic
Every flagged phoneme comes back with the engine's best candidate for what was actually produced, typed as a substitution or an omission (or marked unclear) — the words a therapy note is written in, rather than a generic mispronunciation flag. Each one carries a confidence tier built around the three decisions a product actually makes with a score, and we publish where the explanation layer gets it wrong: substitutions are the weakest category we measure.
A published benchmark, with its limitations attached
We publish our per-phoneme agreement with five human phoneticians on a named public corpus, with the method, the sample sizes, the confidence intervals and the tables where the result went against us. That includes the uncomfortable ones: at every operating point we measured, most individual flags are false positives, which is why we describe the engine as a ranking and practice-feedback layer rather than an assessment.
What ArticScore cannot do
Three limits apply to every engine in this category, ours included. They decide what you can build, so they belong here rather than in your second sprint.
Request access
ArticScore is in limited early access, rolled out case by case. Fill in your use case and expected volume below and we will come back to you with specifics.
ArticScore — frequently asked questions
What is ArticScore?
How is ArticScore different from other pronunciation scoring APIs?
Is ArticScore accurate enough to use without a speech-language pathologist?
Can ArticScore detect a lisp?
What does ArticScore cost?
What languages and accents does ArticScore support?
Explore ArticScore
What the API returns
Field-by-field reference for the scoring response.
Accuracy benchmark
Our measurements against five human phoneticians, with caveats.
Access and pricing
How early access works and what we need to know.
Children's privacy and COPPA
What COPPA requires when you record a child's voice.
Choosing a pronunciation scoring API
What to test for, and how to run the comparison on your own audio.
For speech therapy apps
What per-phoneme scoring changes in a therapy product.
For reading and literacy apps
Decoding accuracy at the level of individual sounds.
For ESL and English-learning apps
Minimal pairs, named substitutions and quality checks for kids learning English.
Phonological processes
Fronting, gliding, stopping, and how each is detected.
Sound-by-sound scoring notes
How /r/, /s/, /l/ and "th" behave under automatic scoring.
Glossary
GOP, forced alignment, phoneme scoring, and more.