Ai2LaunchLabs

Speech evaluation

How student work gets scored.

Every submission is scored on five markers, weighted differently by module. Two of those markers are deterministic formulas; the rest are judged by a model working from fixed tables. Nothing here is a summary. Move the inputs and the real arithmetic runs.

Rubric v1 · vendored rubric_engine · values as of 2026-08-12
Values transcribed from the generated scoring guide and pinned by the eight worked examples in test/scoring.spec.ts. The engine itself lives in another repository.

Score Lab

8 modules

Pick a module and a grade band, then move the inputs. The five marker scores and the overall recompute as you go, and every derived number shows the arithmetic that produced it. Each module loads with the worked example from its chapter of the scoring guide, so you can check the engine against a published result.

Step 1

Pick a module

8 modules

How every score is built

The five markers

Each marker is produced by exactly one route, never both. “Code” means a deterministic formula: same input, same number, every time. “Model” means the model listens to the audio and returns a score, guided by fixed rules and examples.

MarkerWhat it judgesRoute
Pronunciation & ArticulationHow clearly the sounds are producedModel
Fluency & FillersSmoothness, filler words, recovery from stumblesModel
Speaking Rate & PausesPace, steadiness, choppy or frozen pausesCode
Volume ControlLoudness level, steadiness, trailing offCode
Task Adherence ("Mastery")Did the student actually do the task?Depends on the module

Grade bands

Every grade-sensitive number on this page is keyed by band, not by exact grade.

BandGrades
Elementary3, 4, 5
Middle6, 7, 8
High9, 10

The 95-point ceiling

Every marker score, from either route, is capped at 95 rather than 100. Real teachers almost never give a flawless 100, so the engine no longer does either. 96–100 cannot appear on a report card, on any marker, for any module.

Turning a quality into a score

The two code markers work in two steps. First a 0–1 quality per sub-marker, measuring how close a measurement is to the ideal. Then the sub-qualities combine by weight into one weighted quality, which becomes a score through the tier table below. The model markers skip all of this and return a whole number directly.

Weighted qualityScore bandLabel
0.90 – 1.0091 – 95Excellent
0.72 – 0.9076 – 90Good
0.48 – 0.7251 – 75Adequate
0.24 – 0.4826 – 50Below Average
0.00 – 0.240 – 25Poor

frac = (quality − tier_low) / (tier_high − tier_low)
score = round(band_low + frac × (band_high − band_low))

The score is interpolated inside the tier, never flat: a quality of 0.80 sits in the Good tier and lands on 82, not on 76.

Combining the five

Each marker score is multiplied by that marker’s weight for the module, the five results are added, and the total is rounded. Every module’s weights sum to 1.00.

overall = round( Σ marker_score × module_weight )

The split differs per module. In broad terms, the more a module is about content (what the student says rather than how), the more weight Task Adherence carries.

Shared tables

These are the same for every module of a given kind. Open tasks are spontaneous speech with no reference text; closed tasks are reading a given text, which is what lets Task Adherence be measured by code rather than judged.

Open tasks: spontaneous speech

Ideal pace, words per minute of speaking time

BandIdeal rangeRamping down outsideZero credit beyond
Elementary90 – 180 wpm65 – 220 wpmbelow 65 / above 220
Middle110 – 190 wpm65 – 230 wpmbelow 65 / above 230
High110 – 190 wpm75 – 230 wpmbelow 75 / above 230

Choppy mid-phrase breaks per minute

BandFull credit at/belowZero credit at/above
Elementary6 / min15 / min
Middle4 / min12 / min
High3 / min10 / min

Long or frozen pauses: a penalty, not a weighted sub-marker

BandPenalty maxes out atMax cut to the score
Elementary12 / min10%
Middle4 / min25%
High5 / min25%

WPM, Consistency and Choppiness combine into the base score at 0.35 / 0.25 / 0.40. Under ten seconds of actual speech, Choppiness is dropped, the remaining two are rescaled to sum to 1, and the hesitation penalty is switched off, too little speech to judge either reliably.

Fluency sub-marker weights: smoothness / filler control / recovery

BandSmoothnessFiller controlRecovery
Elementary0.400.250.35
Middle0.450.250.30
High0.450.300.25

False starts and restarts per ~30 seconds

BandExcellentGoodAdequateBelow AvgPoor
Elementary0–23–45–78–1011+
Middle0–12–34–67–910+
High0–123–56–89+

Disruptive fillers per ~30 seconds (um, uh, like, you-know)

BandExcellentGoodAdequateBelow AvgPoor
Elementary0–34–56–89–1213+
Middle0–12–45–78–1112+
High0–22–34–56–910+

Recovery is never penalised when there was nothing to recover from: a clean delivery with zero stumbles is automatically rated Excellent on that sub-marker.

Closed tasks: reading a given text

Ideal pace, words per minute of speaking time

BandIdeal rangeRamping down outsideZero credit beyond
Elementary100 – 180 wpm65 – 220 wpmbelow 65 / above 220
Middle110 – 190 wpm75 – 230 wpmbelow 75 / above 230
High110 – 190 wpm80 – 230 wpmbelow 80 / above 230

Choppy mid-phrase breaks per minute

BandFull credit at/belowZero credit at/above
Elementary4 / min12 / min
Middle3 / min10 / min
High2 / min8 / min

Long or frozen pauses: a penalty, not a weighted sub-marker

BandPenalty maxes out atMax cut to the score
Elementary8 / min10%
Middle5 / min15%
High3 / min25%

WPM, Consistency and Choppiness combine into the base score at 0.30 / 0.35 / 0.35. Under ten seconds of actual speech, Choppiness is dropped, the remaining two are rescaled to sum to 1, and the hesitation penalty is switched off, too little speech to judge either reliably.

Fluency sub-marker weights: smoothness / filler control / recovery

BandSmoothnessFiller controlRecovery
Elementary0.350.300.35
Middle0.400.350.25
High0.400.400.20

Tongue Twister shifts these, moving 0.10 from smoothness to recovery

BandSmoothnessFiller controlRecovery
Elementary0.250.300.45
Middle0.300.350.35
High0.300.400.30

False starts and restarts per ~30 seconds

BandExcellentGoodAdequateBelow AvgPoor
Elementary0–123–45–78+
Middle012–34–67+
High00–123–56+

Disruptive fillers per ~30 seconds (um, uh, like, you-know)

BandExcellentGoodAdequateBelow AvgPoor
Elementary0–12–34–67–1011+
Middle01–23–56–910+
High00–12–34–78+

Recovery is never penalised when there was nothing to recover from: a clean delivery with zero stumbles is automatically rated Excellent on that sub-marker.

Volume Control

Identical on every module. This marker only looks at the waveform, never the words; the transcript is used solely to find phrase breaks. A student who gets louder toward the end always scores full credit on Fade; finishing strong is never penalised.

Sub-markerQuestionWeight
LevelIs the loudness in a comfortable range?0.50
ConsistencyDoes loudness stay steady, or swing around?0.40
FadeDoes the student trail off toward the end?0.10

Level targets the same range at every grade: full credit anywhere between 4575 dB, ramping to zero below 35 or above 85. That is the engine’s own internal loudness scale, not a physical sound-pressure measurement.

BandSteady up toZero credit atFade: free up toFade: zero credit at
Elementary8 dB16 dB2.5 dB5 dB
Middle6 dB14 dB2 dB5 dB
High5 dB12 dB1.5 dB5 dB

Task Adherence on closed tasks

Every reference word ends up labelled: matched, a substitution, an omission, trailing if the student stopped early, internal if a word was skipped mid-text, or an insertion. Spoken fillers are not stripped out here; they count as insertions against the student, by design.

completion = (reference_words − trailing_omissions) / reference_words
accuracy = matched / (reference_words + insertions)

BandCompletion: full / floorAccuracy: full / floor
Elementary0.92 / 0.450.93 / 0.45
Middle0.96 / 0.550.97 / 0.55
High0.98 / 0.650.99 / 0.65

The two qualities blend 0.40 completion / 0.60 accuracy. Accuracy counts for more than completion: reading the words correctly matters more than merely reaching the end.

Every module

8

Audio Postcard

Chapter 1 · open task

The student responds to a prompt listing several specific things to mention (a place, a feeling, a sound) as if writing a postcard home.

Pronunciation

0.16

Fluency

0.22

Speaking Rate

0.13

Volume Control

0.14

Task Adherence

0.35

Pace steadiness
band 0.12 – 0.28
Fade measured
Phrase by phrase
Task Adherence
Model, against a checklist, with four capping guardrails
75Substance. The answer has no concrete detail only someone who was there would know: a named place, sound, smell, number, or specific thing that happened.
60Groundedness. The answer describes something that cannot physically happen: an object turning into a living thing, a person flying unaided, touching the stars.
90Over-vagueness. Several things are left vague when the prompt only allows leaving one vague.
50Reversal. The student sounds certain about something they only guessed, but unsure about something they actually saw.

Without any rule firing, the answer still needs one real, specific detail to reach 76 at all. A colour, a size, generic praise, or restating the prompt does not count as substance.

Handed to the model, verbatim

pronunciation Conversational delivery; natural articulation, not over-enunciated.

fluency Conversational fillers are common; weigh leniently for natural speech.

  • The four guardrails were added 2026-08-10. Before that, checklist coverage alone could score Excellent on an answer that was empty, impossible, or the opposite of what was asked.
  • Unfamiliar-but-real content (a local custom, an unusual place) is never penalised just for being unfamiliar. A short-but-detailed answer can still reach 91–95.

Short Informative Presentation

Chapter 2 · open task

The student teaches the listener about something, hitting a set of required points from the prompt in a way that is easy to follow.

Pronunciation

0.15

Fluency

0.15

Speaking Rate

0.15

Volume Control

0.20

Task Adherence

0.35

Pace steadiness
band 0.10 – 0.22
Fade measured
Phrase by phrase
Task Adherence
Model, against a checklist plus two order rules (cap 85)
  1. 1The point marked "end with" in the prompt must genuinely come last.
  2. 2Nothing may be referenced before it is introduced. A term used before it is defined, or an example analysed before it is given, means a listener cannot follow along.

Handed to the model, verbatim

pronunciation Audience-facing; key terms should be clearly intelligible.

fluency Prepared, smooth delivery is the aim; frequent fillers stand out more here.

  • Breaking either order rule caps Mastery at 85 no matter how many required points were covered. The order of the remaining points is entirely the student’s choice and is never penalised.
  • This is a solo spoken answer, not a talk to a live audience: no greeting, sign-off, or "I am going to explain…" preamble is required or rewarded. The first point is the opening, the last is the closing.
  • Targets the tightest pace-steadiness band of any module (0.10–0.22), because a prepared talk is expected to be more evenly paced than casual conversation.

Story Building w/ Keywords

Chapter 3 · open task

The student is given a list of required keywords and asked to weave them into one coherent story.

Pronunciation

0.16

Fluency

0.17

Speaking Rate

0.15

Volume Control

0.14

Task Adherence

0.38

Pace steadiness
band 0.12 – 0.30
Fade measured
Phrase by phrase
Task Adherence
Code counts keywords, the model judges the story, blended 50/50

coverage = round(present / required × 100)

blended = round(coverage × 0.50 + story × 0.50)

if story ≤ 25 → final = min(blended, 30)

Handed to the model, verbatim

pronunciation Spontaneous narration; judge articulation of words produced, not idea flow.

fluency Improvised storytelling; planning pauses and minor fillers are natural.

  • The only module where Task Adherence is not scored by one route alone: code counts keyword coverage, the model judges the story, and the two are blended 50/50.
  • Keyword matching is tolerant by stem, so "library" matches "libraries", without crediting an unrelated word that merely starts the same way. "clue" does not match "clueless".
  • The model is explicitly told not to count keywords; that is the code’s job.
  • Carries the heaviest Mastery weight of any module (0.38), and the widest pace-steadiness band of the three open modules (0.12–0.30).

Poem Recitation

Chapter 4 · closed task

The student recites a given poem. A fixed reference text exists, so Mastery is measured, not judged.

Pronunciation

0.21

Fluency

0.16

Speaking Rate

0.16

Volume Control

0.21

Task Adherence

0.26

Pace steadiness
band 0.15 – 0.30
Fade measured
Whole clip (on the exclusion list)
Task Adherence
Code, aligning the transcript against the reference text

Handed to the model, verbatim

pronunciation Articulation may bend for expression; minor stylistic elongation is fine.

fluency Pauses may be deliberate and rhythmic; do not penalize intentional phrasing breaks.

  • Pace steadiness is a band, not a ceiling (0.15–0.30): reciting in a perfectly flat rhythm is unnatural for a poem, so a too-steady delivery is gently penalised too.
  • Not part of the 2026-08-10 rebalance, which touched only the three open-response modules.

Paragraph Reading

Chapter 5 · closed task

The student reads a given paragraph aloud. Same code-based Mastery mechanism as Poem Recitation.

Pronunciation

0.25

Fluency

0.15

Speaking Rate

0.15

Volume Control

0.20

Task Adherence

0.25

Pace steadiness
ceiling ≤ 0.18
Fade measured
Phrase by phrase
Task Adherence
Code, aligning the transcript against the reference text

Handed to the model, verbatim

pronunciation Connected reading; expect clear articulation sustained across sentences.

fluency Reading should flow smoothly; few hesitations expected on familiar text.

  • Scored on a simple pace-steadiness ceiling (0.18) rather than a band, so there is no penalty for being unusually steady, unlike Poem Recitation.
  • Also untouched by the 2026-08-10 weight rebalance.

Tongue Twister Challenge

Chapter 6 · closed task

The student repeats a short tongue twister three times, is never penalised for pace, and gets credit for speeding up as they go.

Pronunciation

0.27

Fluency

0.09

Speaking Rate

0.23

Volume Control

0.18

Task Adherence

0.23

Pace steadiness
ceiling ≤ 0.35
Fade measured
Whole clip (on the exclusion list)
Task Adherence
Code, aligning the transcript against the reference repeated 3×

Handed to the model, verbatim

pronunciation Rapid repeated phonemes; judge sound precision under speed, not word recall.

fluency Stumbles are expected at speed; judge recovery, not isolated trips.

mastery Closed task: completing the exact phrase accurately is the goal.

  • Carries the heaviest Pronunciation weight of any module (0.27), because the task exists to stress-test articulation, and the lightest Fluency weight (0.09), because stumbling at speed is expected.
  • The only module where pace is never penalised: WPM quality is forced to 1.0 however fast or slow the student goes.
  • Adds a fourth Speaking Rate sub-marker, Acceleration, worth 0.30: full credit if the pace measurably rises across the clip, 0.3 otherwise.
  • The twister is shown once but must be said three times. The engine repeats the reference text 3× internally before aligning, so a 6-word twister becomes an 18-word reference.
  • Shifts the Fluency sub-weights, moving 0.10 from smoothness to recovery. The only module that does.

Rapid-Fire Q&A

Chapter 7 · open task

The student answers a quick series of questions on the spot. No fixed reference text.

Pronunciation

0.14

Fluency

0.23

Speaking Rate

0.23

Volume Control

0.17

Task Adherence

0.23

Pace steadiness
ceiling ≤ 0.30
Fade measured
Whole clip (on the exclusion list)
Task Adherence
Model, against the shared band anchors

Handed to the model, verbatim

pronunciation Short bursts under time pressure; some clipping is acceptable if core sounds stay clear.

mastery Open task: each answer should be on-topic and responsive to its prompt.

  • Carries the lightest Pronunciation weight of any module (0.14), because short quick-fire answers are judged more on pace, flow and being on-topic than on polish.
  • The most forgiving pace-steadiness ceiling of any open task (0.30), since answers are naturally short and varied.
  • The engine has a dormant "answer over 10 seconds" check (RAPID_FIRE_LIMIT_S) built for this module, but it is not wired into an active sub-marker. A long-winded answer is not currently penalised for its length. A known gap, not a rule in effect.

Silly Topics Debate

Chapter 8 · open task

The student takes a side on a lighthearted topic and defends it. No fixed reference text.

Pronunciation

0.20

Fluency

0.15

Speaking Rate

0.20

Volume Control

0.20

Task Adherence

0.25

Pace steadiness
ceiling ≤ 0.30
Fade measured
Whole clip (on the exclusion list)
Task Adherence
Model, against the shared band anchors

Handed to the model, verbatim

pronunciation Animated, fast speech; allow expressive distortion but sounds must stay recognizable.

fluency Spontaneous and fast; some disfluency is expected from improvisation.

  • The most evenly split weight table of any module: no single marker dominates.
  • Shares Rapid-Fire’s forgiving pace-steadiness ceiling of 0.30: fast, animated, back-and-forth delivery is expected.

Where the weight goes

Read a row to see what a module cares about; read a column to see which module cares most about a marker. Tongue Twister puts more weight on Pronunciation than anything else does, because that is the point of the task. Rapid-Fire Q&A puts the least on it, because short quick answers are judged on pace and being on-topic instead.

Marker weights for each module. Every row sums to 1.00.
ModulePronunciationFluencySpeaking RateVolumeMastery
Audio Postcardopen0.160.220.130.140.35
Short Informative Presentationopen0.150.150.150.200.35
Story Building w/ Keywordsopen0.160.170.150.140.38
Poem Recitationclosed0.210.160.160.210.26
Paragraph Readingclosed0.250.150.150.200.25
Tongue Twister Challengeclosed0.270.090.230.180.23
Rapid-Fire Q&Aopen0.140.230.230.170.23
Silly Topics Debateopen0.200.150.200.200.25

What the student is told

Scoring and feedback are two separate steps. Feedback runs after all five scores are final, in one text-only model call per submission, and never changes a score; it only explains it.

  • Every marker gets exactly two sentences. The first names the one thing that held the attempt back, or, if it was genuinely strong, the one specific thing done well. The second gives one small, doable next step.
  • The model may never quote a raw number back to the student. No words per minute, no counts, no decibels, no percentages, no scores. “A few pauses broke up the flow,” not “about 12 filler words.”
  • It may not compare the student to anyone else, and may not suggest a different practice activity, only how to speak better on this same kind of attempt.
  • Tone shifts by grade band, softest and most playful at Elementary, most direct at High. Which weakness gets named, and which score produced it, never changes with grade.

What changed, and when

8

A hesitation is any frozen pause of 1.2 seconds or longer, worth knowing before reading the entry about dead air below.

The 95-point ceiling

2026-07-26

Every marker score, LLM or code, is capped at 95 rather than 100. Real teachers almost never give a flawless 100, so the engine no longer does either. "Excellent" now means 91–95, and 96–100 can never appear on a report card, on any marker, for any module.

every module

Weight rebalance on the three open-response modules

2026-08-10

Audio Postcard, Short Informative Presentation and Story Building had their five marker weights re-cut. The five reading modules were not touched.

Audio Postcard · Short Informative Presentation · Story Building w/ Keywords

Four guardrails added to Audio Postcard Mastery

2026-08-10

Checklist coverage alone let an answer that technically touched every ask still score Excellent when the content was empty, impossible, or the opposite of what was asked. Substance caps at 75, Groundedness at 60, Over-vagueness at 90, Reversal at 50. Each rule targets one failure shape and nothing else.

Audio Postcard

Two concrete order rules on Short Informative Presentation

2026-08-10

A vague "clear opening/closing" instruction became two checkable rules: the point marked "end with" must genuinely come last, and nothing may be referenced before it is introduced. Breaking either caps Mastery at 85.

Short Informative Presentation

Middle-grade filler tolerance tightened on open tasks

2026-08-10

A student used to need 0–2 disruptive fillers to be rated Excellent; now it is 0–1. "Good" widened to 2–4 so a handful of fillers lands mid-band instead of dropping straight to Adequate. Closed (reading) tasks were not touched.

Audio Postcard · Short Informative Presentation · Story Building w/ Keywords · Rapid-Fire Q&A · Silly Topics Debate

Middle-grade hesitation penalty tightened on open tasks

2026-08-10

The penalty used to max out at 8 long pauses per minute and cut only 15%. Since a hesitation is any frozen pause of 1.2 seconds or longer, that let roughly ten seconds of dead air per minute still score Excellent. It now takes 4 per minute to hit a 25% cut.

Audio Postcard · Short Informative Presentation · Story Building w/ Keywords · Rapid-Fire Q&A · Silly Topics Debate

Number words no longer count as wrong words

undated

On closed tasks, "7th" and "seventh" no longer count as a substitution against each other, the engine treats both as "a number", so a transcription quirk is not marked as a real mistake. Saying a genuinely different number is still not caught: the rule forgives the wording, not the value.

Poem Recitation · Paragraph Reading · Tongue Twister Challenge

Fade measured phrase by phrase

undated

The primary fade method splits the clip at real pauses and checks each phrase ending separately, rather than comparing the first quarter of the recording to the last. Four modules use it; the other four remain on the whole-clip method via an exclusion list.

Audio Postcard · Short Informative Presentation · Story Building w/ Keywords · Paragraph Reading

Where the sources disagree

6

Internal. These are the places where the scoring guide contradicts itself, or where it contradicts something else we publish. They are listed rather than quietly resolved, because a page that picks a side without saying so is worth less than one that shows the conflict.

Four different answers to "how many markers are there?"

The marketing site says 21 SEL voice markers. The lesson generator names 6. The résumé app’s rubrics define 4 dimensions each. This engine has 5. None of these are the same list, and no document reconciles them.

This page documents the speech scoring engine and its 5 markers. It does not claim the other three counts are wrong, only that they describe different things. Reconciling them is a positioning decision, not a writing task.

The Excellent tier interpolates against 1.01, not 1.00

The guide states the Excellent tier as "0.90 – 1.00". Every worked example in it only reproduces its published score when the span is 0.11, a weighted quality of 0.9625 gives the guide’s published frac of 0.568 against 1.01, but 0.625 against 1.00, which is the difference between 93 and 94.

Implemented as 1.01, matching the engine’s observed behaviour rather than the prose. This slightly compresses the Excellent band; a perfect 1.0 quality still lands on 95. Worth confirming against the real code.

Tongue Twister’s WPM weight is given as both 0 and 0.25

The sub-marker table lists WPM at weight 0, while the prose says the weights become 0.25 / 0.25 / 0.20 / 0.30 to make room for Acceleration. Only the prose sums to 1.00, the table’s reading leaves the other three at 0.75.

Implemented as 0.25 with WPM quality forced to 1.0, which is what "pace is never penalised" means in practice and what the module’s worked example reproduces.

Silly Topics Debate is on both sides of the fade exclusion list

Chapters 6 and 7 both enumerate the per-phrase modules as exactly four, Paragraph Reading, Audio Postcard, Short Informative Presentation, Story Building, which excludes Silly Topics Debate. But Chapter 8’s own worked example is labelled "per-phrase fade".

Recorded as whole-clip, following the explicit exclusion list over a single label. This does not change the worked example, which supplies a fade quality directly.

The open-task filler band overlaps at High

A count of 2 disruptive fillers falls in both Excellent (0–2) and Good (2–3).

Transcribed exactly as published. Which side 2 lands on is undefined by the guide.

A time-limit check exists but is not wired up

The engine carries a dormant "answer over 10 seconds" check (RAPID_FIRE_LIMIT_S) built for Rapid-Fire Q&A. It is not connected to an active sub-marker, so a long-winded answer is not currently penalised for its length.

Documented as a known gap rather than a rule in effect, which is how the guide itself flags it.