Developer API · Limited early access
✦ Launched Fall 2026

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.

Request
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"
Response — a child saying “rabbit” as “wabbit”
{
  "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.

A rough number changes what we can quote, not whether we reply.

ArticScore is in limited early access, rolled out case by case. We reply to every request.

ArticScore — frequently asked questions

What is ArticScore?
ArticScore is a pronunciation scoring API for children's speech. You send a recording plus the word or phrase the child was asked to say, and it returns a score from 0 to 100 for each individual phoneme, along with what the engine heard instead when a sound was wrong, an error type, and timing information for each sound.
How is ArticScore different from other pronunciation scoring APIs?
Mostly in what it is built and tuned for, rather than in being more accurate. The acoustic model is fine-tuned on children's speech, which lowered false flags on correct productions relative to our own pre-fine-tuning baseline. Every flagged sound comes back with a candidate for what was produced instead and a clinical error type. Other APIs in this category return candidate phones and error labels too, so that part is not ours alone — what differs is that the labels are written in the vocabulary of a clinical note rather than a language-proficiency rubric. And we publish our accuracy measurements against human expert judgements — including the results that go against us — instead of a single headline number. We do not publish measurements of other companies' products, so we cannot tell you we are more accurate than any of them and will not imply it. Most established options in this category are mature, well engineered, and built for adult language learning; test several on your own audio before you decide.
Is ArticScore accurate enough to use without a speech-language pathologist?
No. Our own evaluation found that at the precision levels current systems achieve, most flags are false positives, and that on recordings of children with speech sound disorders the productions our engine scored as clean still included real errors a clinician caught. ArticScore is built for practice support and clinician triage — ranking which recordings to listen to first — not for unsupervised assessment.
Can ArticScore detect a lisp?
Only some kinds. An interdental lisp, where /s/ moves toward "th", sometimes surfaces as a substitution the engine can name. A lateral lisp is a distortion — the production is still an /s/ attempt and is not any other phoneme — and phoneme-based scoring cannot represent it. This limitation applies to general phoneme-scoring APIs, not only ours, and we state it plainly rather than leaving it to be discovered in production. Distortions need a different tool: a classifier trained on one sound. Those exist for /r/ (the PERCEPT-R research classifier and the PERCY AI product); they judge that one sound rather than any word you send.
What does ArticScore cost?
ArticScore is in limited early access and we do not publish pricing yet. Access is arranged directly so that we can understand your use case, your volume, and your child-privacy requirements before turning anything on. Request access and we will reply with specifics.
What languages and accents does ArticScore support?
English only. American English is the default, and the dialect we have evaluated on children. British English is supported with dialect=en-gb, which scores against a British, non-rhotic reference; it has been evaluated on adult British speech only, because no British child speech exists under a licence we can use. Under either reference, patterns like th-fronting or dark-/l/ vocalisation are scored as mismatches, although they are standard in some varieties. If you serve another variety of English, tell us — it affects whether the default flags are meaningful for your users.