An AI speaking coach scores each speaking turn on volume, pace, clarity and persuasion. Every score is plain arithmetic on the transcript and four audio measurements, so a speaker can trace any number back to what produced it. That traceability is the part I find most worth building.
Volume is the only composite metric, 100 points over four terms
Four audio features, each scaled 0 to 1, add up to 100 points.
- Mean loudness: 40 points, on a symmetric penalty around a target of 0.65.
- Time below threshold 25, consistency 20, clipping 15.
- The clipping ratio is multiplied by four before the penalty, because a clipped sample is distorted.
- The split tells a turn that fades from one that is quiet throughout.
Pace flags at 80 and 180 words per minute, clarity at 16 fillers per 100
Both are linear penalties, flagged when the score drops below 60.
- Pace:
100 - |wpm - 130| * 0.8, centred on 130 words per minute. - The symmetry is an assumption: 50 too slow counts the same as 50 too fast.
- Clarity:
100 - filler_rate * 2.5, from a fixed list of fillers. - Turns under twenty words lose a flat 10 points.
Persuasion detects function words and reports them as argument structure
It starts at 45 and adds points when marker words appear anywhere in the transcript.
- Claim +20 (
i,think,believe,my), reason +20 (because,since,therefore), example +15 (for,example,instance). - One
for, in any role, scores 60 and clears the flag. Addingigives 80. - A real argument without those eleven words scores 45.
- Detecting a claim, a reason and an example is a language task that word matching cannot do.
Any metric below 60 raises flags, and a turn gets at most two corrections
The flags decide what the coach says, and the cap decides how much.
- Volume raises
volumeandtonality, pacepacing, clarityclarity, persuasionstructureandpersuasion. - The overall score is the unweighted mean of the four, so each counts 25 percent.
Documenting the metrics surfaced two defects
Writing the definitions out against the code found two faults, both confirmed by running the scorer.
you knowcan never match, because matching is per word. Five of the six fillers work.- With no audio, the scorer fills in defaults that score 74.65 on volume.
Scoring runs locally, transcription and coaching text in the cloud
Scoring is pure Python on the transcript and four audio measurements.
- The offline version of this loop is timed in a voice assistant for patient portal support.
- When the coach speaks at all is the other half of this project.
- No score depends on which model produced the transcript.
