Finding 05
Finding 5 — One bilingual model, or one per language?
In one sentence: The pre-chosen option was right — a one bilingual model + language flag works best overall, and the differences between the three options are small.
Why this question exists
The system has to score both English and Filipino. Two reasonable designs: build one correction for each language, or build a single one that is told which language it is hearing. Separate models can specialise; a shared model gets more data to learn from. With only ~100 recordings per language, that trade matters.
Speech model: medium. Recordings: 167 (83 English, 84 Filipino).
All three options were scored on exactly the same held-out recordings.
Results — reading speed (words per minute)
| Configuration | English | Filipino | Both | Offset (both) |
|---|---|---|---|---|
| (none — raw measurement) | 9.447 | 20.561 | 15.037 | -13.60 |
| A — separate model per language | 8.006 | 12.395 | 10.214 | +0.07 |
| B — learn on the other language, re-centre | 8.742 | 12.326 | 10.544 | +0.36 |
| C — one bilingual model + language flag ← primary | 7.862 | 12.198 | 10.043 | +0.15 |
Numbers are the average miss in WCPM — lower is better.
How much does the choice matter?
The best and second-best configurations differ by 0.17 WCPM on a measure where two teachers already disagree by around ±9.6 WCPM (Finding 01). That is far inside the noise. The configuration choice is not important — pick the simplest one to build and maintain, which is the single bilingual model. Reporting this as a meaningful win would be overstating it.
Filipino is still the harder language
Even under the best configuration, the correction misses by 7.862 WCPM in English and 12.198 WCPM in Filipino — about 1.6× worse.
This is inherited, not caused by the configuration: Finding 02 showed the speech model itself is worse at Filipino at every size. Sharing a model does not fix that, and neither does separating them. Any deployment must report the two languages separately rather than quoting a single blended figure that hides it.
Honest limitations
- ~83 recordings in the smaller language. Small differences between configurations are not reliable at this size.
- Configuration B is the simple form of transfer — borrow the relationship from the other language, then correct the offset locally. Richer transfer methods exist and were not tried.
- Ridge was held fixed across all three so this compares configurations, not algorithms.
Generated by pipeline/language_configs.py.