Research · September 2026
No model on the shelf hears Latvian on a phone line. We trained one.
A customer says "labdien" and the speech models on the shelf hear English. We trained a model that hears Latvian, then discovered the model was only half the win. Judged one fragment at a time, it matches the tier it replaces at 35× the speed. Judged the way a call actually happens, caller by caller, it catches 82% of Russian-speaking callers where the standard build catches 67%, at the same wrongful-switch rate, on a replay of real calls.
Our model is about 90% sure it hears Latvian; every model on the shelf is under 3% sure
Internal test · real Latvian telephony speech · native-speaker ground truth · median confidence in the correct language, same input for every model.
Vitālijs Silins-Ozerson LinkedIn
CTO & co-founder · 8 September 2026
This is the second of two Convershake research articles. Part one measured the shelf. This one measures what we trained.
What we trained
We trained our own Latvian↔Russian detection model on real telephony audio, at the bandwidth and codec a phone line actually delivers, with ground truth labelled by native speakers. Part one showed what happens to models trained on anything cleaner. This one heard the line from the first example.
Latvian becomes an answer the model can actually give. On real Latvian speech our model is about 90% sure it is hearing Latvian; whisper-small is under 0.1% sure. It labels roughly nine fragments in ten of Latvian speech Latvian, and when it is wrong it says Russian, the other language actually on the call. It is the only model we measured that weighs Latvian against Russian. Every off-the-shelf model only scores how Russian the audio sounds; their Latvian scores are measurably above zero and nowhere near the scale a decision needs, and the bigger Whisper tiers get better at spotting Russian without recognising Latvian any more often.
It is also fast: about 21 milliseconds per fragment, against about 0.7 seconds for the Whisper tier a live call can afford and 5.3 seconds for the most accurate one.
Time to answer per fragment: our model 21 ms, the deployable Whisper tier 0.7 s, the most accurate one 5.3 s
Internal test · per-fragment inference on the same MacBook Pro (M5 Max); production serving is slower for every model. AiLab models absent: different serving stack, latency not comparable.
What we tested
Every number in this piece comes from one test. Recorded real calls, Latvian and Russian speakers, are replayed through each build exactly as they arrived on the line, and every decision is scored against what native speakers say was spoken.
Two units appear. Per fragment, a second or so of speech is scored on its own, as in part one. Per caller, a whole call is scored on whether a Russian-speaking caller would have been switched at any point. Both are held to a strict ceiling on Latvian-speaking callers wrongly switched, every decision rule was set on calls the reported rates never saw, and where two builds are compared they run under the same switch rule. The two error rates are not the same number: a fragment wrongly flagged does not mean a caller wrongly switched, so fragment error rates run higher than caller ones for every build.
The Latvian specialists, named
Latvia has its own speech models, and the obvious objection to part one is that we should have used them. The Institute of Mathematics and Computer Science at the University of Latvia, AiLab, publishes openly licensed Latvian speech models: AiLab-IMCS-UL/whisper-large-v3-lv-late-cv17 and AiLab-IMCS-UL/whisper-large-v3-lv-phono.
The specialist does the hard part well. It is the only third-party model in this work that recognises accented Latvian as Latvian, and measured per call, that recognition covers roughly seven in ten of the wrongful switches on this line. The result held when we widened from a small sample to full coverage.
Scored as bilingual detectors, on clean synthetic audio they can tell the two languages apart: the stronger one catches two Russian speakers in five. On real telephony audio both answer "Latvian" to almost everything, Russian speech included. The stronger catches about one Russian speaker in 75, the other about one in 100. A synthetic benchmark overstates the general models by 2× to 4.6×. It overstates these two by 23× and 31×.
The Latvian specialists: 40% on clean synthetic audio, 1% on real calls, 31× overstated
Internal test · Russian speech caught at a matched wrongful-switch ceiling, decision rules set on calls the reported rates never saw; synthetic slice cut to the same fragment lengths. Dashed: the AiLab Latvian transcribers, measured at a job they never claimed.
These models were built to transcribe Latvian, and they are good at it; a Latvian transcriber that answers "Latvian" on a Latvian line is behaving correctly. Measuring them as bilingual detectors measures them at a job they never claimed. We do it because someone evaluating voice AI for this market will be told to repurpose them into one, and the benchmark will say it works while the phone line says otherwise. The ability is still in the models; clean audio proves it. The telephony channel is what removes it.
Same catch rate as the tier it replaces, at 21 milliseconds
Put our model through exactly part one's test, the same real telephony audio, the same native-speaker ground truth, the same strict ceiling on wrongful switches, and per fragment it catches 37% of Russian speech, the same as whisper-small, the Whisper tier a live call can afford. It does that in 21 milliseconds against 0.7 seconds, and with about 90% confidence in Latvian where whisper-small has under 0.1%. Whisper's larger tiers catch more per fragment and cannot answer inside a live turn.
Part one's scorecard, re-ranked for a live call: our model first, 37% per fragment at 21 ms, the only Latvian-confident row
| Model | Catches real Russian | Latvian wrongly flagged (unseen calls) | Latency | Verdict |
|---|---|---|---|---|
| Answers inside a live turn | ||||
| Convershake (ours) | 37% |
3.2% | 21 ms | best deployable · hears Latvian |
| Whisper · small | 37% |
3.0% | 0.7 s | same catch rate · 35× slower |
| MMS-LID · 1B | 22% |
4.7% | 0.4 s | 1 in 5 |
| VoxLingua107 · spoken-LID | 20% |
2.4% | 22 ms | 1 in 5 |
| CommonLanguage · spoken-LID | 20% |
1.5% | 26 ms | 1 in 5 |
| Cannot answer inside a live turn | ||||
| Whisper · large-v3 | 52% |
1.5% | 5.3 s | most accurate · undeployable |
| Whisper · medium | 51% |
2.4% | 2.9 s | too slow |
Internal test · real telephony audio · native-speaker ground truth · recall at a strict wrongful-switch ceiling, error rates from calls the decision rules never saw; latency per fragment, local hardware. Our model and whisper-small are statistically indistinguishable at every ceiling.
Per-fragment accuracy is where every model on this channel tops out, ours included. That number was the ceiling for the model. It was not the ceiling for the system, and the speed is what let us move past it.
A fragment is not a caller
A caller is not a second of audio. A caller is half a minute of stops, starts, background noise and half-words, and the decision that matters is about the person.
At 21 milliseconds a fragment there is room to score every fragment a caller produces and still answer inside a live turn. The Whisper tier a live call can afford keeps up on a typical fragment and stalled for nearly thirty seconds on its worst one. So we moved the decision from the fragment to the caller.
82% of callers, at the same wrongful-switch rate
Every bar below comes from the same replay of recorded real calls, with native-speaker ground truth and the wrongful-switch rate on Latvian callers stated per bar.
82% of Russian-speaking callers caught, against 67% off the shelf, at the same wrongful-switch rate
Internal test · replay over recorded real calls · native-speaker ground truth · every build under the same switch rule, wrongful-switch rate shown per bar. Recorded-audio replay, not live outcomes.
Our model alone, judged fragment by fragment, catches 57% of Russian-speaking callers at a wrongful-switch rate of about one Latvian caller in 140. The off-the-shelf Whisper build catches 67% at about one in 70, so those two bars sit at different error rates and the gap between them is not a like-for-like result. Our detector, deciding per caller, catches 82% at the off-the-shelf build's own rate of about one in 70. That recovers roughly half of the callers the off-the-shelf build leaves in the wrong language, without one extra wrongful switch.
When a vendor says "tuned for your market"
Part one sharpened the questions buyers already ask. This measurement adds the ones specific to adaptation claims, because "tuned for your language, your channel, your industry" is now a standard line, and it is measurable.
- Trained on what audio?
- Real calls from your market and channel, or clean speech degraded to sound like a phone? On our board the second kind of evidence overstated performance by 2× to 4.6×, and by 23× to 31× for language-specialised models.
- Show me the comparison at a matched error rate.
- An accuracy number quoted at whatever error rate flatters each model is not a comparison. Our model ties an off-the-shelf model per fragment; our detector beats the off-the-shelf build by about 15 points per caller at the same error rate. Neither shows up in a headline number.
- Is the improvement big enough to matter?
- Ask for the size of the effect against the scale at which the system acts. Six off-the-shelf models gave us Latvian scores that were measurably above zero and useless.
A vendor with real measurements answers these in the meeting.
What we're not claiming
These are measurements on a replay of recorded calls: one line, one window. A live field rate is a different number and is not claimed here. Per-caller and per-fragment numbers are different units and stay labelled as such throughout. The off-the-shelf comparison is one configuration of one Whisper tier under our switch rule; the larger tiers were not run per caller because they cannot answer inside a live turn. Nothing here says our model is a better speech model in general: whisper-large-v3 remains the most accurate model we measured per fragment, undeployable on a live call. Our model and our detector appear here as measured outcomes only. And nothing here covers commercial cloud APIs, which neither piece in this series publishes.
This closes the two-part series. Part one: what the off-the-shelf models actually hear on a real phone line, and why the evaluation you'll be shown inverts the answer.
Evaluating voice AI for a bilingual market?
In a proof of concept we measure your line before we change anything: your callers, your channel, your ground truth. Then we adapt the detection to that line. The numbers above are what that produced on ours.