Model deep dive

Child-speech ASR, Urdu models, phone/GOP stacks, prosody, audio LLMs, maths ITN, vision; the eval shortlist

07 — Model deep dive: what fits better for scoring 6–11-year-old Pakistani children (Urdu + English reading, spoken maths), Sep 2026

Written: 2026-09-15 · Builds on: 02_model_landscape.md (vendor/API tables — not repeated here). Method: primary sources fetched today (arXiv, ISCA archive, ACL Anthology, Hugging Face model cards and the HF model API, vendor docs, GitHub). Every claim carries a URL; anything I could not confirm against a primary page is marked unverified. Cost arithmetic ("≈") is mine, based on 206 recordings × 20 min = 68.7 h of audio.

Input constraints assumed throughout: WhatsApp voice notes (16 kHz Opus) and SurveyCTO audio audits (8 kHz AAC, ~12 kbps); ~5-min child battery inside a ~20-min enumerator recording; a coach corrects the pre-score (HITL), so the target is high-recall flagging with calibrated confidence, not autonomous scoring.


0. What changed since the first report (the six findings that move the plan)

# Finding Why it matters
1 An open, MIT-licensed, EGRA-specific child ASR model now exists — AI-for-Education/sw-tz-child-egra-fastconformer-ctc-110m (Kiswahili, Tanzania, FastConformer-CTC, val WER 13.0 / test WER 16.8, letters 3–18 % WER, syllables 19–23 %, "as little as 50 hours of child-speech data" made the difference) (model card). Built by Zevo Tech / Fab Inc / Laterite / Stellenbosch for the Digitisation-of-EGRA project. It is the recipe we should copy for Urdu (and reuse directly for TZ): a small CTC model fine-tuned on real child EGRA audio, per-subtask WER reported. It also gives us a public yardstick: ~13–17 % WER on child EGRA speech is the realistic bar.
2 Meta Omnilingual ASR (Nov 2025) is Apache-2.0 and lists urd_Arab, urd_Latn, pnb_Arab, hin_Deva, swh_Latn (lang_ids.py, repo, HF card). CTC sizes 300 M / 1 B / 3 B / 7 B; 7B-LLM needs ~17 GiB VRAM; inputs must be < 40 s. Replaces MMS-1b-all (CC-BY-NC, a production blocker flagged in §B of the first report) as the permissive Urdu CTC backbone for forced alignment and CTC-GOP. Per-language Urdu CER is in the repo's CSV but I could not read it today — unverified.
3 Two 2026 Urdu Whisper fine-tunes beat every number in the first report: emads/whisper-large-v3-urdu-v2 (Aug 2026, Apache-2.0): FLEURS-ur 16.65 WER, Common Voice 15.98, Roman-Urdu CER 14.7, code-switch benchmark 35.4 WER, three output registers (Urdu script / Roman / mixed) via control tokens, trained only on CC-0/CC-BY data (Common Voice, IndicVoices, Kathbath, PRUS, MUCS Hinglish) (card); awaaz-se-alfaaz/whisper-turbo-v3-urdu (LoRA on large-v3-turbo, LaTeLL 2026, Apache-2.0): FLEURS 24.07→16.86, CSaLT 27.51→20.77, CV-23 37.23→25.78, real-world YouTube 25.33→24.20 (→21.75 with Gemma3-12B post-edit) (card). The "WER ~26 on CV" baseline from the first report is stale; open Urdu ASR is now ~16–17 WER on read adult speech, on a par with Scribe's 14.4 FLEURS claim, and self-hostable. The 35 % code-switch figure is the number to worry about for maths items.
4 Common Voice 26.0 (June 2026) Urdu = 95.5 h total / 88.5 h validated / 1,127 speakers / 40,385 clips; 10.2 % of clips from "teens", 0 % under-13 (cv-corpus-26.0 JSON). Hindi 436 h, Swahili 157 h in the same file. Confirms there is no public Urdu child speech at all; our 206 recordings are the only Urdu child-EGRA audio anyone has.
5 Gemini timestamp drift is a documented, unanswered bug, not our artefact. Google forum thread (opened 7 Mar 2026, still open 13 Aug 2026): Gemini 3 Flash compresses an 11:49 file into 0:00–9:14 (clock ~22 % fast, −157 s at the end); 3.1 Pro drifts −16 s non-linearly; only the Flash-Lite variants stay < 9 s; workarounds = 5-min chunks, two-pass (Lite for time, Pro for text), disable thinking (thread). The 2026 temporal-grounding literature says the same of every LALM (TAG-Bench best mIoU 31.2, recall@IoU≥0.7 only 21.5 %) (TAG-Bench, TEMPO). No audio LLM returns trustworthy word timestamps natively in Sep 2026. Timestamps must come from a CTC/attention aligner; the LLM only ever sees ≤5-min segments.
6 The hard case is exactly ours, and it is much harder than the MyST numbers suggest. Dutch grade-3 readers recorded "in diverse, noisier environments" (DART) gave 70.4 % WER for the best fine-tuned Whisper-medium vs 5.5 % on clean JASMIN; the authors' fix is utterance-level prompt matching — where ASR output equals the read prompt exactly, precision is 98.3–99.3 %, covering 18–42 % of utterances (Lathouwers et al. 2026). Design the HITL around this: auto-accept only exact matches, route everything else to the coach with the aligner's evidence. Expect the Urdu struggling-reader tail to look like DART, not MyST.

1. Children's speech ASR — state of the art, 2025–2026

1.1 What the benchmarks now say

Study (venue) Setup Result Source
ESPnet child-ASR benchmark (2025) MyST, OGI Kids (scripted/spontaneous), CMU Kids; Whisper, wav2vec2, OWSM, flat-start E-Branchformer Whisper-small (244 M) fine-tuned wins 6/8 splits; OGI-Script 1.8 %, OGI-Spon 11.6 %; OWSM-1B 12.8 % MyST; performance plateaus or degrades beyond ~1 B params; multi-corpus training lifts OGI-Spon 59.3→24.2 %; WER by age band 4–7 ≫ 8–10 ≫ 11–15 arXiv 2508.16576
Age-aware adapter tuning (2026) Whisper backbone + per-age adapters on the "On Top of Pasketti" 14-corpus challenge set Frozen backbone 23.8 % → shared child adapter 12.5 % → age-routed adapters 12.3 %; per age: 3–4 y 36.9 %, 5–7 y 14.7 %, 8–11 y 8.3 %, 12+ 4.3 %; code released, no checkpoints arXiv 2606.05440, code
Transcribing children's speech (2026) 9 systems: Whisper-L-v2 (± prompting, FT small/medium/large), wav2vec2 Dutch, Parakeet-TDT-0.6b-v3 (± FT); JASMIN 7–11 y; DART grade-3 noisy JASMIN best 5.5 % (whisper-medium-FT); DART best 70.4 %; exact-prompt-match filter 98–99 % precision arXiv 2605.28833
Kid-Whisper checkpoint whisper-small FT on MyST-train 125 h MyST test 11.8, but CSLU scripted 55.5 / spontaneous 28.5 — child fine-tunes do not transfer across corpora aadel4/kid-whisper-small-myst
AURA activation editing (SLT 2026) whisper-medium.en, cross-attention head edits, uncertainty-routed checkpoint public, WER not on card balaji1312/whisper-medium-myst-aura
Why is children's ASR hard? (Interspeech 2025) SSL phoneme recognisers on K–grade-10 English WavLM-based recogniser best; children's mispronunciations "persist longer than previously reported", esp. certain manners of articulation — i.e. many "errors" are developmental, not reading errors Horii et al.
Reasoning beyond transcription (Sep 2026) 7 audio-LLMs (AudioFlamingo 2/3, Kimi-Audio, Qwen2.5-Omni, Qwen2-Audio, SALMONN, GAMA, LTU) on 22 stuttering children, 5–10-min reading + interview clips "Reasoning degrades significantly with increased disfluency and speaker interference"; systematic contradiction-avoidance (< 0.29 acc) arXiv 2609.07968
Bandwidth as the dominant audio factor (2026, Indic) SOTA ASR on Indic languages under simulated GSM/8 kHz, 3.4 kHz LPF "bandwidth limitation being the most critical audio factor" for WER arXiv 2606.09335

Reading of this for us. (a) Small models fine-tuned on in-domain child audio beat big zero-shot models; whisper-small/medium or a 110 M FastConformer is the right size, not large-v3. (b) Age 6–8 will run ~2× the WER of age 9–11 whatever we do — report by grade. (c) Cross-corpus transfer is poor, so a MyST-trained English model will not save us; we need our own audio in the training mix. (d) The 8 kHz SurveyCTO channel is a first-order problem: run the eval separately on WhatsApp-16 kHz vs SurveyCTO-8 kHz.

1.2 Public child-speech fine-tunes on Hugging Face (Sep 2026)

From the HF model API (search=child, ASR pipeline): the useful ones are the Kiswahili EGRA FastConformer (above), AlexXu811/child-adult-joint-asr-diarization (Whisper, Jan 2026 — joint child/adult ASR + diarization, relevant for enumerator/child separation), dysata/Wav2Vec2-Ru-Child, tartuNLP/xls-r-300m-et-children, kawchar85/ASR_Bangla_Child_Voice (the only South-Asian child ASR checkpoint on the hub; no card metrics), Korean/Estonian/Dutch/Icelandic child Whisper fine-tunes (HF API listing). No Urdu or Hindi child ASR checkpoint exists on the hub. bookbot/wav2vec2-adult-child-cls is a ready adult/child classifier useful for segmenting enumerator vs child turns (card).

1.3 South-Asian child-speech work

1.4 What we would fine-tune, on what, for how much

Target Base model Data Compute Notes
Urdu child EGRA ASR emads/whisper-large-v3-urdu-v2 (best open Urdu WER, Apache) or whisper-small from scratch on Urdu (ESPnet finding: small wins on child data) or omniASR_CTC_300M/1B (urd_Arab) FastConformer-style Child turns from our 206 recordings (≈ 30–40 h after enumerator removal — my estimate), with verbatim transcripts derived by forced-aligning the item text and applying the coach corrections (correct→item word, error→what the coach heard) Pashto precedent: whisper-large-v3-turbo full FT on 113 h ran ~5.5 k steps on one A40; LoRA on whisper-base failed (54.6 vs 21.2 WER) — do full FT (arXiv 2604.06507). On Modal an A10G is ~$1.10/h, L4 ~$0.80/h (Modal pricing, comparison) → ≈ $10–30 per training run. The Kiswahili EGRA card says ~50 h of real child audio was the lever; we have ~two-thirds of that. Hold out by school and by grade.
English child ORF (PK accent) whisper-small/medium (Kid-Whisper recipe) seeded from MyST checkpoint, then our English segments Same recordings, English block Same Do not expect MyST transfer (CSLU 55 % WER above).
Urdu phone recogniser anyspeech/zipa-large-crctc-500k (MIT) Not initially — use zero-shot; ZIPA saw 10 h 19 min of Urdu in IPAPack++ (ZIPA §3) Inference only Fine-tune later on coach-labelled letter-sound rows if PFER on Urdu letters is poor.
Kiswahili (TZ later) AI-for-Education/sw-tz-child-egra-fastconformer-ctc-110m as-is — CPU-feasible (110 M CTC) Already EGRA-shaped.

2. Urdu speech, 2024–2026: models, datasets, licences

2.1 Datasets

Dataset Size Speakers / domain Licence Source
Common Voice 26.0 ur 95.5 h / 88.5 h validated, 40,385 clips 1,127 adults + teens; read sentences CC-0 JSON
Kathbath ur 86.7 h clean + 77.0 h noisy 36 M / 31 F, read CC-BY-4.0 (unverified today) survey
FLEURS ur ~12 h (1.4 h test) read news CC-BY Vistaar
IndicVoices (ur share) part of 11.2 k transcribed h; per-language ≈ median 122 h read / extempore / conversational, adults CC-BY-4.0 HF
IndicVoices-R ur TTS-grade subset (first open Urdu TTS data) — CC-BY-4.0 NeurIPS 2024
CSaLT, PRUS (CLE/LUMS) small read corpora adults mixed WER-We-Stand
UrduSpeech (2026) 156 h + 12-dim paralinguistic labels adults see paper arXiv 2605.17846
Omnilingual ASR corpus 348 under-served langs, CC-BY-4.0 adults CC-BY-4.0 HF card
Child Urdu none public — — —

2.2 Models with Urdu — WER and licence

Model Urdu WER (test set) Licence Timestamps Nastaliq / diacritics / numerals / code-switch
emads/whisper-large-v3-urdu-v2 (Aug 2026) FLEURS 16.65, CV 15.98, Roman CER 14.7, code-switch 35.4 Apache-2.0 via aligner Emits Urdu script, Roman, or mixed with English islands by control token — the only model that treats code-switch output as a first-class register (card)
awaaz-se-alfaaz/whisper-turbo-v3-urdu (Aug 2026) FLEURS 16.86, CSaLT 20.77, CV-23 25.78, YouTube 24.2 Apache-2.0 via aligner Notes "inconsistent Urdu spellings" as a target; SLM post-edit for spelling (card)
kingabzpro/whisper-large-v3(-turbo)-urdu (2025) CV-17 WER ~26, CER ~9 Apache-2.0 via aligner (first report)
Omnilingual ASR CTC/LLM 300 M–7 B (Nov 2025) Urdu CER unverified (per-language CSV in repo); 78 % of 1,600 langs < 10 CER; FLEURS-102 avg < 6 CER (7B-LLM) Apache-2.0 none native; CTC emissions alignable urd_Arab and urd_Latn ids; 40-s input cap (repo)
AI4Bharat IndicConformer-600M (ur, CTC+RNNT) Urdu WER not on card (only hi 13.2 on Vaani) MIT CTC alignable Nastaliq output; trained on IndicVoices (card)
Whisper large-v3 zero-shot 24–26 (read), 18 (conv.) MIT whisper-1 API only (first report; COLING 2025)
CHiPSAL 2025 few-shot Whisper (Pashto/Punjabi/Urdu) "significant WER reductions" — numbers not extractable from PDF today (unverified) — — ACL
Qwen3-Omni (ur one of 19 speech langs) FLEURS 19-lang avg 5.33; Urdu row not published Apache-2.0 none report
Qwen3.5-Omni FLEURS top-60 avg 6.55 vs Gemini 3.1 Pro 7.32; Urdu in the 60 but no per-language row Apache-2.0 none (160 ms internal temporal ids only) report
Deepgram Nova-3 ur WER only in an image on the launch post — unverified API yes keyterm prompting (post)
Gemini 3.5 Transcribe Urdu not in the 85+ list (Hindi, Punjabi are) API word-level, "degrades accuracy", 30-min cap with timestamps model page
Gemini Live API (3.1 Flash Live) Urdu in the 97-language list API none audio-to-audio dialogue, not a scorer (capabilities)
gpt-transcribe / gpt-4o-transcribe / gpt-realtime-whisper Urdu not tabulated (unverified); only whisper-1 gives word timestamps API whisper-1 only STT guide, gpt-realtime-whisper $0.017/min
Voxtral Transcribe 2, Qwen3-ASR, Parakeet/Canary, Kyutai no Urdu — — (first report; Voxtral 13 langs)

Evaluation gotchas specific to Urdu. (1) Script/romanisation inflation: SN-WER transliterates reference and hypothesis to one canonical script before scoring and removes up to 12 % of "model gap" on FLEURS and 67 % of artificial romanisation-induced WER — adopt it, because children and enumerators mix scripts and the ASR may emit Roman islands (arXiv 2606.02548). (2) Diacritics: Urdu text omits short vowels; normalise by stripping U+064B–U+0652 on both sides before alignment (standard practice in the Urdu survey, arXiv 2411.14493). (3) Numerals: Urdu digits are U+06F0–U+06F9 (۰–۹), not Arabic U+0660–U+0669 (٠–٩); the glyphs for 4/5/6/7 differ by locale, and the Urdu forms "are not encoded separately from the Persian variants" (Wikipedia). Map both ranges to ASCII before scoring maths. (4) Code-switching: 35 % WER on the emads code-switch benchmark and seamless-class models that translate instead of transliterate (WER-We-Stand) mean English numbers inside Urdu answers are the single biggest transcript risk — keyterm/hotword biasing (Deepgram, Soniox) and the emads mixed-register token are the two mitigations to test.


3. Phone recognition, forced alignment and GOP for Urdu

3.1 Phone recognisers

Tool Urdu How to run Output Evidence Licence
ZIPA (ACL 2025) — anyspeech/zipa-{small,large}-{crctc,transducer}-{300k…800k} trained on 10 h 19 min Urdu (CV+FLEURS) pip install onnxruntime soundfile librosa lhotse torch; python inference/inference.py audio.wav --model-path checkpoints/zipa-cr-small-300k/exp/model.onnx --model-type ctc; also zipa_ctc_inference.py Python API with batch padding; 16 kHz in IPA string over a 127-symbol simplified inventory PFER seen-lang avg 2.71 (large, noisy-student) / 3.22 (small); unseen 3.20 / 3.24; smooths sociophonetic variation toward dictionary forms; vowels hardest; length marks and glottal stops most deleted — i.e. it under-detects exactly the vowel errors children make MIT (repo, paper)
PhoneticXEUS (Interspeech 2026) via IPAPack++ (unverified) GitHub README IPA 17.7 % PFER multilingual open (repo)
Allosaurus universal, 2,000+ langs incl. Urdu inventory (inventory content unverified) pip install allosaurus phones ICASSP 2020 open (repo)
allophant zero-shot with a supplied PHOIBLE Urdu inventory HF phones + articulatory attributes +17 % on unseen langs open (first report)
facebook/wav2vec2-xlsr-53-espeak-cv-ft / wav2vec2-lv-60-espeak-cv-ft (Wav2Vec2Phoneme) not in training set; zero-shot via articulatory mapping Wav2Vec2PhonemeCTCTokenizer espeak phones Xu et al. 2021 Apache-2.0 (docs)
"Whisper-phoneme" community recipe only (fine-tune Whisper to emit IPA); no Urdu checkpoint Medium tutorial IPA none — (tutorial)

3.2 Forced aligners for Urdu

Aligner Urdu Licence Notes
IndicMFA (MFA acoustic models, 22 langs) yes — 101.79 h Urdu (IndicTTS + IndicVoices-R); grapheme-to-grapheme dictionary, no G2P repo licence not stated (unverified; MFA itself MIT) CPU; run per inference.md (repo)
torchaudio MMS_FA language-agnostic (uroman) CC-BY-NC 4.0 — confirmed on the pipeline page (docs) not for production
Omnilingual ASR CTC emissions + CTC forced alignment urd_Arab Apache-2.0 the permissive replacement for MMS_FA; 40-s chunks
Charsiu (wav2vec2-FC, text-independent) English-trained; multilingual variants unverified for Urdu MIT phone + boundary (repo)
SSL + learned-DP word aligner (2026) trained TIMIT/Buckeye, tested nl/de/he; claims MMS-scale transfer untested code unverified beats MFA and MMS-alignment on TIMIT/Buckeye (arXiv 2606.10675)
WhisperX with kingabzpro/wav2vec2-large-xls-r-300m-Urdu (1.45 M downloads) yes BSD + Apache word timestamps for Urdu Whisper output (HF API)
CrisperWhisper / whisper-timestamped (DTW on cross-attention) works on any Whisper incl. the Urdu fine-tunes CrisperWhisper: repo licence — check; whisper-timestamped AGPL-3.0 ~30 ms mean boundary error on read speech (CrisperWhisper, whisper-timestamped)

3.3 GOP variants and their child-speech evidence

Method Idea Child evidence Source
Classic GOP-DNN (Kaldi speechocean762 recipe) log-posterior ratio per aligned phone speechocean762 is 50 % children (125/250 speakers, Mandarin L1) speechocean762
GOPT (ICASSP 2022) transformer over GOP features, multi-aspect phone PCC 0.612 / word 0.549 / utt 0.742 on speechocean762 repo
Substitution-aware alignment-free CTC-GOP (Interspeech 2025) restrict substitutions to phoneme clusters + learner-error priors, no alignment evaluated on MPC (child speech) and speechocean762; improves over baseline GOP on child data Parikh et al.
GOP-SA / GOP-SF (segmentation-free) sum over all segmentations of canonical transcript SOTA phone-level on speechocean762 (rev. Feb 2026) arXiv 2507.16838
GOP-CTC feature model won NOCASA 2025 (children learning Norwegian L2, word-level) direct child-speech win arXiv 2509.03256
Prompt-free CTC MDD (2026) remove canonical-prior bias F1 71.8 L2-ARCTIC (adults) arXiv 2604.22133
ATP-LLM (2026, CSL) audio+text prompts to an LLM PER 8.56 / F1 82.0 on CU-CHLOE (adult L2) CSL
Speech-representation models vs multimodal LLMs for paediatric SSD (2026) "SRMs consistently outperform the LLM-based SOTA across all tasks by a large margin" arXiv 2604.26568

Practical recipe (Urdu letter sounds, phoneme awareness, nonwords) and hardware. 1. Segment the enumerator recording into child turns with bookbot/wav2vec2-adult-child-cls + Silero VAD (CPU). 2. For each 10-letter row: (a) ZIPA-large-CR-CTC → IPA hypothesis; (b) Omnilingual omniASR_CTC_1B (urd_Arab) → CTC posteriors → alignment-free CTC-GOP against the expected letter-sound sequence with substitution clusters (Parikh 2025). Score = per-item GOP + IPA edit distance; flag when the two disagree. 3. Reference phones: espeak-ng ur via phonemizer for letter names; hand-written table for letter sounds (short vowels are unrecoverable from text — the table must list allowed variants, e.g. /ə/ vs /a/). 4. Hardware: ZIPA-large (300 M) and omniASR-CTC-1B are single-forward CTC models; on a Modal L4 ($0.80/h) a 5-min clip should take well under a minute — RTF not published for either; benchmark before committing. The whole 206-recording set ≈ 69 h audio ≈ 3–7 GPU-hours ≈ $3–6 of L4 time per model pass (my estimate). 5. Keep MMS_FA only for offline research (CC-BY-NC).


4. Prosody, fluency and disfluency — what is reusable on children

System / paper What it measures Result Reuse
Frontiers/SMU prosody scoring (2024) 9 openSMILE ComParE features (F0, RMS energy, ZCR, spectral bands 250–650 Hz / 1–4 kHz, centroid, sharpness) → NAEP 4-pt; 5,841 recordings, 1,811 grade-2–4 children, 30 passages; no ASR alignment cross-domain 62.5 % micro-acc / QWK 0.38; 76 % with all features in-domain Feature set is cheap and language-agnostic — use as a coarse prosody prior only (paper)
Harmsen et al., Interspeech 2025 15 ASR-derived phrasing/smoothness/pacing measures; 244 recordings, 131 Dutch children 6–13 12/15 correlate strongly with human-transcript measures Directly portable: pause count/duration, repetition rate, mean words per phrase, WCPM — needs word timestamps, i.e. the aligner (ISCA)
Speech-enabled reading fluency validation (IJAIED 2025) ASR ORF instrument, Dutch MCC 0.43 word decoding / 0.55 passage (first report) (Springer)
Hannah et al., Language Testing 2025 construct representativeness + linguistic equity of automated ORF with prosody flags EL/L2 equity issues in prosody scoring Read before we report prosody for a bilingual cohort (SAGE)
CrisperWhisper (Interspeech 2024) verbatim Whisper (fillers, pauses, stutters, false starts) + DTW timestamps ~30 ms boundary error read / 41 ms conversational The English verbatim transcriber for miscue and pause work; retokenisation detects pauses reliably (paper, repo)
whisper-timestamped detect_disfluencies=True emits [*] markers where Whisper skipped a hesitation; Silero/Auditok VAD — Works with the Urdu fine-tunes; AGPL-3.0 — fine for the eval harness, check before shipping (repo)
Prompting Whisper for verbatim + end-to-end miscue detection (2025) reading text injected as prompt; trained jointly for verbatim ASR and miscue labels; case study on children's read-aloud "improves … compared to current SOTA" (numbers in PDF) The architecture to copy for English ORF miscues — ties the reference text into decoding instead of post-hoc diffing (arXiv 2505.23627)
FluencyBank Timestamped (JSLHR 2024) disfluency-annotated, timestamped dataset; benchmarks text- and audio-based detection and "intended speech" ASR page 403'd today — numbers unverified English adult stuttering; use for method, not data (ASHA)
Amira ORF, miscue types, prosody; "97 % agreement with human scorers" (Renaissance validation) product claim none reusable (Amira research)
SoapBox Labs (now Curriculum Associates) phoneme-level fluency API for children shut to third parties after 2023 acquisition; being folded into i-Ready none (THE Journal)
Microsoft Reading Progress omission/insertion/mispronunciation + "Expression" (monotone, long pauses, missing breaks) — it is Azure PA underneath independent study found false positives on acceptable pronunciations Confirms Azure PA's prosody error types are the same ones we get from the API (Lodz study, MS support)

What to build: reading rate (WCPM) and pause statistics from aligner timestamps (Harmsen's 15 measures), repetition/false-start counts from a verbatim transcript (CrisperWhisper for English; whisper-timestamped [*] on the Urdu fine-tune), and a NAEP-style prosody label trained on coach labels with the 9-feature openSMILE set as input. Do not ship an LLM-judged prosody score.


5. English pronunciation for South-Asian-accented children — vendors re-checked today

Vendor Dialect / accent options Max audio per call Price (fetched) Bias / child evidence
Azure PA Locales include en-IN (plus en-US/GB/AU…); hi-IN and ta-IN exist, ur-* does not 30 s single-shot with miscues; continuous mode beyond Real-time STT $1.00/h + $0.30/h PA add-on (batch: add-on free, $0.18/h) — from an MS Q&A answer and a secondary pricing analysis; the public page shows "$-" placeholders (Q&A, secondary, pricing page) No published bias study by L1; MS says only ">0.5 Pearson" and to loosen thresholds for children; BYJU'S (India) is a cited child customer (GA post). Whether en-IN changes phoneme scores vs en-US is untested in any paper I found — we must A/B it ourselves.
SpeechAce en-us, en-gb only (+ fr-fr/fr-ca/es-es/es-mx); no en-IN / Pakistani option despite the search snippet suggesting otherwise (supported languages) 45 s for Score Text passages (Score Text); Score Phone List (ARPABET g|ao|ch|ah, en-us/en-gb) scores non-words and returns per-phone quality_score, sound_most_like, extent ms (Score Phone List) plans $40/$80/$125 per month; overage $0.008 per 15 s (first report) Vendor kids study (350 children, F1 0.86); accent policy: "mere presence of accent is not a criterion for penalising" (SpeechAce); one EFL classroom study (CALL-EJ)
Language Confidence "standard US or UK accents" as reference only (docs) not stated Pronunciation $0.008 / Scripted $0.010 / Unscripted $0.0125 per 15 s (Startup $100/mo), 10 rps (pricing) none
ELSA API English; metered "per time or characters"; REST recommended only for ≤ ~30 s, websocket beyond (General API info) ~30 s REST on request none
SpeechSuper has an Indian-English variant (first report) — $0.004–0.008/request none

Bottom line: the only vendor with an Indian-English locale is Azure (en-IN). No vendor has a Pakistani-English option and no published bias analysis for South-Asian children exists — our 206-recording comparison of Azure en-IN vs en-US vs SpeechAce en-us on the same clips would be a first. For nonwords, SpeechAce Score Phone List is the only API that scores an arbitrary phone string.


6. Audio LLMs, Sep 2026 — status, Urdu, timestamps, evidence

Model Audio in Urdu Native word timestamps Per-word scoring / MDD / ORF evidence Source
GPT-Realtime-2 (May 2026; text+audio+image in, text+audio out; 128 k ctx) yes not stated (unverified) no none published model page, secondary
gpt-realtime-whisper ($0.017/min streaming STT), gpt-transcribe, gpt-4o-transcribe STT Urdu not tabulated no (only whisper-1) — STT guide
Gemini 3.1 Pro / 3.5 Flash / 3.8 Flash (audio understanding: 32 tok/s, 9.5 h/prompt, MM:SS references) yes Gemini text/Live lists Urdu (97 langs); audio-understanding language list not published no — MM:SS by prompting; drift bug open since Mar 2026 (3 Flash −157 s on 12 min; 3.1 Pro −16 s; Flash-Lite < 9 s) ChildVox: Gemini Flash "substantially worse" than specialised models on child speech (first report) audio docs, drift thread, Live languages
Gemini 3.5 Transcribe (Aug 2026) STT no Urdu yes, but "degrades accuracy", 30-min cap model card gives no WER (card) model page
Claude (Fable 5.1 / Opus 4.7) no audio content type in the Messages API; open SDK feature request #1198 — — vision + text judge only issue, ParseJet (secondary)
Qwen3-Omni / Qwen3.5-Omni (Apache-2.0) yes, 40 min yes (19 speech langs; 60 on FLEURS) no (160 ms internal ids only) Qwen2-Audio lenient on poor speech (SLaTE 2025, first report) 3-Omni, 3.5-Omni
Ultravox v0.7 (GLM-4.6 + whisper-large-v3-turbo encoder, MIT) yes 42 languages; a search snippet lists Urdu, the card text I could read does not — unverified no LibriSpeech 2.28 WER; no MDD card
Kimi-Audio, Step-Audio 2 / R1.5 yes zh/en-centric; Urdu not claimed (unverified) no Kimi-Audio evaluated on child stuttering: best BERTScore but reasoning collapses with disfluency Kimi, Step-Audio 2, child stuttering eval
Voxtral yes no Urdu word timestamps in Transcribe 2 — Voxtral
Temporal grounding of LALMs (2026) — — — TAG-Bench best mIoU 31.2, recall@0.7 = 21.5 %; TEMPO/TimeAudio exist only because timing is a "persistent weakness" TAG-Bench, TEMPO, TimeAudio

Answer to "is there a model that returns trustworthy word timestamps natively?" Among audio LLMs, no. The only native word timestamps come from ASR models (Gemini 3.5 Transcribe — no Urdu; Voxtral/Qwen3-ASR — no Urdu; whisper-1 API; Soniox/Deepgram/Scribe/AssemblyAI-U2 — Urdu yes) or from CTC/DTW alignment on a self-hosted model (CrisperWhisper 30 ms; Omnilingual/IndicMFA). Our 20–75 s drift on a 17-min file with Gemini 2.5 Pro is consistent with the public bug on 3.x. Rule for the harness: any LLM audio call gets a ≤ 5-min segment plus reference text, and its time references are ignored in favour of aligner timestamps.


7. Maths from speech — number normalisation and digit accuracy

Need What exists Gap
Urdu ITN (spoken → digits) None. NeMo-text-processing and EkStep indic-punct ship WFST ITN for 11 Indic languages — Hindi, Tamil, Telugu, Kannada, Gujarati, Marathi, Odia, Bengali, Assamese, Malayalam, Punjabi — no Urdu (indic-punct, paper, NeMo) Write our own: Urdu cardinals 0–100 are irregular lexical items (ایک…سو), plus ہزار/لاکھ/کروڑ; ~150-entry table + a 3-rule combiner covers EGMA (numbers ≤ 999). Accept Hindi-Urdu homophones and Roman spellings.
Urdu num2words (digits → words, for building the table and TTS prompts) num2words has no ur; indic-num2words "planning to add" Urdu (repo); num2fawords (Persian) is the closest (PyPI) Hand-write; Persian grammar is not Urdu.
English ITN NeMo en ITN, word2number (PyPI) fine
Code-switch ("twenty-eight" inside Urdu) emads mixed-register token; Deepgram/Soniox keyterms; Whisper initial_prompt with the 8 target numbers Test all three on the maths block; the 35 % code-switch WER is the risk
Child digit ASR evidence Old but clean: speaker adaptation on a single digit cut child WER 9.6 → 4.2 %, seven digits → 3.5 % (ResearchGate review); Kaldi-NL scored a digits-in-noise test at 5 % WER (ScienceDirect 2025); HiACC gives 1,858 Hinglish child segments for a code-switch probe (HiACC) No Urdu child digit study. Constrained decoding (grammar of allowed answers) is the cheap win: number-identification and addition items have a finite answer set.

Recipe: ASR (Urdu fine-tune with mixed-register token, or Soniox) → strip diacritics, map ۰–۹/٠–٩→0–9 → Urdu+English number-word grammar → take the last numeric token in the child turn (children count aloud) → compare to key. Keep the raw transcript for the coach.


8. Vision for written maths and photographed EGMA answer pages

Evidence Numbers Source
17-model handwritten-forms benchmark (Apr 2026) — Claude Haiku 4.5/Sonnet 4.6/Opus 4.6, GPT-4.1/5-Mini/5-Nano/5.2/5.2-Pro/5.4, Gemini 2.5 Flash/Pro, 3.1 Flash-Lite/Pro, Qwen2-VL-2B/2.5-VL-3B, Grok 4.1, Dots.ocr; 49 real health forms with illegible and out-of-box writing Gemini 3.1 Pro best overall (85 % accuracy, F1 0.91 discrete fields, WER 0.50 free text); Claude Sonnet 4.6 best on formatted numeric/date fields (77 % median); GPT-5.4 lowest hallucination (6 %) and 100 % on noisy dates in one section; Gemini 3.1 ~8 % hallucination arXiv 2604.16504
Handwriting leaderboards (secondary) GPT-5 IAM CER ≈ 1.22 %, Claude Opus 4.7 ≈ 1.31 %, Gemini 3 ≈ 1.44 %; Gemini 3.5 Flash 98.2 %, 3.1 Flash-Lite 98.4 % on a hint-prompted HTR set CodeSOTA, AIMultiple
Exam-grading VLM on handwritten answers (2026) 98.4 % on 3,141 answer cells; FN 0.58 % (first report) arXiv 2606.11477
Urdu handwritten numerals (specialised CNNs) 98–99 % on isolated ۰–۹; datasets: 9,800-image numeral set (200 writers, both hands), HUCD 106 k samples incl. 10 numerals MDPI 2023, UrduDigitsCNN
Urdu Nastaliq OCR with VLMs Gemini-2.5-Pro WER 0.133 on newspaper Nastaliq; 500-sample GPT-4o FT −6.1 % WER (first report) LREC 2026
Children's handwriting × VLM no benchmark found (searches on "children's handwriting" + VLM returned only adult HTR sets) —
Urdu numerals × VLM no benchmark found; note the ۴/۵/۶/۷ glyph variation across locales and the U+06Fx vs U+066x encoding split Wikipedia

Recipe for a photographed EGMA answer page under classroom light: (1) photograph with the answer key's layout known; (2) ask the VLM for per-cell {expected, read, confidence, crossed_out?} with the key in the prompt (FN-first framing from the exam-grading paper); (3) run two models (Gemini 3.1 Pro + Claude Sonnet 4.6 — the two field-level leaders) and route disagreements to the coach; (4) normalise digits from both Unicode ranges; (5) log lighting/blur so we can report accuracy by photo quality. Children's digits and Urdu numerals are unbenchmarked — the 50-page probe from the first report remains the gate.


9. Concrete shortlist for the eval harness (206 recordings, per-item human ground truth)

Cost basis: 206 × 20 min = 68.7 h. Where a stack only touches one block (e.g. English ≈ 5 min per recording ≈ 17 h), the block-scoped cost is given. GPU costs assume Modal L4 $0.80/h and my RTF guesses (marked ≈). Metrics: per-item correct/incorrect F1 vs coach (primary), WCPM MAE, letter-sound accuracy, timestamp error vs 30 hand-anchored words, exact-match auto-accept precision/coverage (DART method), all reported separately for WhatsApp-16 kHz vs SurveyCTO-8 kHz and by grade.

Block A — English decoding + ORF (letters, nonwords, words, passage)

Rank Stack Endpoint / model id Cost (English ≈ 17 h) Judged on
1 Azure PA en-IN scripted (≤ 30 s rows) + continuous for the passage, our diff for miscues Speech SDK PronunciationAssessmentConfig, locale en-IN; run en-US as the A/B arm ≈ $1.30/h → $22 (real-time) or $0.18/h batch → $3 word F1, phoneme NBest usefulness (en-US only), en-IN vs en-US delta
2 SpeechAce Score Text (45-s chunks) + Score Phone List for nonwords https://api.speechace.co/api/scoring/text/v9/json?dialect=en-us, .../phone_list/... 17 h = 4,080 × 15 s → ≈ $33 + $80/mo Pro word F1, nonword F1, sound_most_like agreement with coach
3 Self-hosted whisper-small/medium child fine-tune (Kid-Whisper recipe + our English) with CrisperWhisper verbatim decoding + DTW timestamps, reference-text diff aadel4/kid-whisper-small-myst → FT; nyrahealth/CrisperWhisper ≈ $5 GPU + ≈ $20 fine-tune WER, miscue F1, pause/repetition counts vs coach, timestamp error
4 Commercial ASR + alignment: whisper-1 (word timestamps) and gpt-transcribe OpenAI Transcriptions API $0.006/min → $6 ; $0.0045/min → $5 WER, WCPM MAE
5 Language Confidence Scripted REST ≈ $41 + $100/mo word F1 (control arm)

Block B — Urdu word reading + passage (per-word + WCPM)

Rank Stack Model id Cost (Urdu ≈ 17 h; full 69 h in brackets) Judged on
1 emads/whisper-large-v3-urdu-v2 (mixed-register token) + word timestamps from WhisperX/kingabzpro/wav2vec2-large-xls-r-300m-Urdu or whisper-timestamped; SN-WER + diacritic strip; exact-match auto-accept HF ids above ≈ $2 [$6] GPU SN-WER, per-word F1, WCPM MAE, auto-accept precision
2 Omnilingual omniASR_CTC_1B / LLM_1B_v2 (urd_Arab) in 30-s windows, CTC forced alignment of the reference for omission/mispronunciation confidence facebook/omniASR-CTC-1B (Apache) ≈ $3 [$10] GPU same + alignment quality; Urdu CER on our data
3 Soniox stt-async-v5 (word timestamps, code-switch) Soniox API $0.10/h → $2 [$7] same (current production baseline)
4 Deepgram Nova-3 ur + keyterms (item words) model=nova-3&language=ur&keyterm=… $0.0043/min → $4 [$18] same; keyterm gain
5 awaaz-se-alfaaz/whisper-turbo-v3-urdu (LoRA turbo, fastest) HF id ≈ $1 [$3] GPU WER vs #1 for a speed/accuracy trade
— After the zero-shot round: fine-tune #1 or #2 on our child turns (train/dev by school) and re-run — ≈ $10–30 WER delta on held-out children

Block C — Urdu letter sounds, phoneme awareness, nonword-style decoding

Rank Stack Model id Cost Judged on
1 ZIPA-large-CR-CTC IPA + confusion-tolerant matcher anyspeech/zipa-large-crctc-500k (MIT) ≈ $2 GPU letter-sound accuracy vs coach; PFER on 200 hand-labelled rows
2 CTC-GOP (substitution-aware, alignment-free) on Omnilingual CTC posteriors facebook/omniASR-CTC-1B, Parikh-2025 recipe ≈ $3 GPU AUC of GOP for correct/incorrect letters; agreement with #1
3 allophant with a PHOIBLE Urdu inventory kgnlp/allophant ≈ $1 same
4 IndicMFA forced alignment of letter names → per-letter alignment score IndicMFA ur (CPU) ≈ $0 same; CPU throughput
5 Qwen3-Omni asked "which sound did the child say?" on the 10-s row (eval-only control) self-host Qwen3-Omni-30B-A3B ≈ $5–10 GPU agreement; prior-over-evidence rate

Block D — Fluency / prosody (both languages)

Rank Stack Cost Judged on
1 Harmsen's 15 measures from Block A/B timestamps + CrisperWhisper/whisper-timestamped verbatim marks ≈ $0 extra correlation with coach fluency rating; pause/repetition count MAE
2 openSMILE 9-feature NAEP classifier trained on coach prosody labels (5-fold) CPU QWK vs coach (target > 0.38 of the SMU cross-domain result)
3 Azure PA prosody score (en-US only) in Block A correlation with coach (English only)

Block E — Spoken maths (number ID, addition/subtraction, word problems)

Rank Stack Cost Judged on
1 Block B #1 transcript (mixed register) → own Urdu/English number grammar → last-number rule ≈ $0 extra item accuracy vs coach; code-switch failure rate
2 Soniox / Deepgram-keyterm transcripts → same grammar in Block B same
3 Grammar-constrained decoding (answer-set lexicon) on the Urdu fine-tune ≈ $1 same (expect the win)
4 Text LLM judge (GPT-5.4 / Claude) over transcript for word problems ≈ $0.005/item → < $5 rubric agreement

Block F — Written EGMA / photographed answer pages

Rank Stack Model Cost (206 pages) Judged on
1 Gemini 3.1 Pro, key-in-prompt, per-cell JSON gemini-3.1-pro-preview ≈ $3–5 per-cell accuracy, FN rate, hallucination rate
2 Claude Sonnet 4.6 (numeric-field leader) claude-sonnet-4-6 ≈ $3–5 same; disagreement routing
3 GPT-5.4 (lowest hallucination) gpt-5.4 ≈ $3–5 same

Block G — Audio-LLM control arm (to measure, not to ship)

Stack Model Cost (69 h) Judged on
Gemini 3.1 Pro on ≤ 5-min segments with reference text, structured diff gemini-3.1-pro-preview: 32 tok/s × 68.7 h ≈ 7.9 M audio tokens × $2/M ≈ $16 + output ≈ $25 per-word F1, prior-over-evidence rate, timestamp drift vs aligner
GPT-Realtime-2 same prompt $32/M audio tokens; token rate unverified → ≈ $80–250 same
Qwen3-Omni (Urdu-capable, open) ≈ $10–20 GPU same

Overall ranking of what to run first (by expected information per dollar): (1) Block B #1 + #2 and Block A #1 — they decide the core architecture; (2) Block C #1 + #2 — the Urdu-only gap; (3) Block A #3 — tells us whether our own fine-tuning is worth it; (4) Blocks D/E on top of those transcripts (near-free); (5) Block F; (6) Block G last, as a control. Total cash for the whole harness ≈ $150–300 plus two vendor monthly plans, dominated by SpeechAce/LC subscriptions and the GPT-Realtime-2 arm; every open-weight arm is single-digit dollars.


Open verification items (new since the first report)

  1. Read the Omnilingual per-language CSV for urd_Arab CER (repo file not readable via fetch today).
  2. Extract the CHiPSAL 2025 Urdu WER table and the Vistaar Urdu rows (PDFs did not parse).
  3. Confirm the IndicMFA licence and the Ultravox v0.7 language list from the raw files.
  4. Benchmark RTF for ZIPA-large, omniASR-CTC-1B and the two Urdu Whisper fine-tunes on an L4 with 8 kHz-upsampled audio.
  5. Obtain the Imagine Worldwide / RTI Tanzania SA-EGRA/SA-EGMA 2025 pilot report (403 today) — it is the only field validation of tablet-administered, speech-scored EGRA/EGMA in Kiswahili and may already contain child-ASR reliability numbers (PDF).
  6. Ask Fab Inc / Zevo Tech whether the Kiswahili EGRA FastConformer recipe (data schema, per-subtask manifests) can be reused for Urdu.