Speech and audio
Multilingual, Low-Resource, Accented, and Code-Switched ASR
Design multilingual ASR with balanced data, language identification, shared units, transfer, code-switching, and community-specific evaluation.
By the end you can
- Define multilingual, low-resource, accented, and code-switched asr as an operational problem with explicit inputs, outputs, and boundaries
- Distinguish universal shared model, shared encoder with language-specific heads, and separate or adapted models without treating them as interchangeable
- Trace the workflow from map communities and use through evaluate natively
- Evaluate multilingual, low-resource, accented, and code-switched asr using wer or cer by language, dialect, script, and domain and evidence from difficult deployment slices
Example
Five commercial systems, 0.35 against 0.19
Five commercial speech recognizers were put through the same audio at once: Amazon, Apple, Google, IBM and Microsoft. The material was 19.8 hours of matched interview recordings from 42 white and 73 black speakers. The result was not a wobble in one vendor's product. Koenecke and colleagues published it in PNAS in 2020: “We found that all five ASR systems exhibited substantial racial disparities, with an average word error rate (WER) of 0.35 for black speakers compared with 0.19 for white speakers.”
Read that pair of numbers slowly. Almost every argument in this lesson is in it. Each of those five systems could report a headline error rate it was proud of. None of those five figures would contain the sentence above. An average over both groups is the operation that dissolves a 0.35-against-0.19 split into one number belonging to nobody.
A per-group table is the minimum that makes the gap visible. A table is still only a display. It shows that a group of speakers is being transcribed worse; it does not say why. And the cheapest explanation is sitting there for any team to pick up: those speakers are pronouncing the language wrongly. The PNAS authors closed that distance. The rest of this lesson is about how they closed it, and about who carries the cost when nobody does.
- The decision underneath the case is how to design multilingual ASR at all: balanced data, language identification, shared units, transfer, code-switching, and evaluation built for specific communities.
- The failure it runs into is the one an error table quietly invites — labelling dialectal speech as “incorrect pronunciation”. The PNAS authors instead trace the disparity to the acoustic models.
- The evidence that would have caught it is WER or CER broken out by language, dialect, script and domain. A 0.35-against-0.19 split is only sayable once the score is split by speaker group.
- The practical response is to make the data itself carry dialect, age, device, environment and code-switch patterns, so those things can be measured instead of assumed away.
Comparison
Who pays for the shared capacity
“One shared model” is an architecture choice. It is worth seeing exactly what a team buys with it. A universal shared model maximizes transfer and operational simplicity: one thing to train, one thing to serve, every language able to borrow structure from every other. The bill arrives in the same breath. Languages and varieties then compete for capacity inside it. The ones with the least training audio lose that competition silently, in deletions rather than in complaints. Nothing in a 0.19 average announces that some group inside the mixture is at 0.35.
There are two other ways to divide the same capacity. A shared encoder with language-specific heads keeps the common structure and gives each language somewhere of its own for whatever does not generalize. Separate or adapted models give up most of the sharing in order to end the competition altogether.
None of the three is right in general. A good result from one settles nothing about the other two. Each has to be defended language by language, and variety by variety. That is heavier than it sounds. The case for the shared model has to be made again, on its own, for the speakers who were losing.
Universal shared model
Maximizes transfer and operational simplicity, with capacity competition.
- Decision focus: Map communities and use
- Useful evidence: WER or CER by language, dialect, script, and domain
- Watch for: Labeling dialectal speech as “incorrect pronunciation”
- Best used when its assumptions are documented for multilingual, low-resource, accented, and code-switched asr
Shared encoder with language-specific heads
Shares acoustics while preserving some output specialization.
- Decision focus: Design shared and specific capacity
- Useful evidence: Tokenizer fertility and rare-entity error
- Watch for: Tokenization that expands sequences unequally
- Best used when its assumptions are documented for multilingual, low-resource, accented, and code-switched asr
Separate or adapted models
Supports local optimization at greater maintenance and data cost.
- Decision focus: Balance training
- Useful evidence: Code-switch boundary and language-identification performance
- Watch for: Language identification errors before recognition
- Best used when its assumptions are documented for multilingual, low-resource, accented, and code-switched asr
An accent is not a defect
Competition for capacity is not the only thing deciding who benefits. Multilingual ASR can share acoustic and linguistic structure across languages, and that sharing is real. But capacity, tokenizer design, sampling, script, domain, and language identification determine who benefits. Not one of those six is set by how many languages appear on the list.
The word to be careful with is accent. The PNAS study is why the care is not optional. Its authors did not stop at the 0.35-against-0.19 gap. They compared identical phrases spoken by both groups, and the gap was equally large there. That removes the explanation that black speakers were saying different, harder, or rarer words. Same words, same size of error gap. On that evidence the authors trace the disparity to the acoustic models rather than to the speakers.
That is what it looks like to close the distance between a gap and its cause. It is also why accents and dialects have to be treated as ordinary ways that language varies, not as noise to be normalized away. A system built to normalize variation has already decided that one way of speaking is the language and the rest are departures from it. The error rate it then reports will read like a fact about the speakers. It is a fact about the system.
There is an operational boundary here too, and it is the one crossed in procurement. A broad language list does not demonstrate equal quality, culturally valid text normalization, or support for code-switching. What a vendor reports as coverage may leave out how speech varies by dialect, age, device and domain. Those are precisely the columns a per-language table does not have either. Five vendors could each have claimed English. The disparity was in all five.
Defending against this is a question of ownership rather than technique. A team decides which communities and which uses the system is for. It carries that decision through to evaluating with native speakers of each language. Then it names who owns each end: who chose the communities, and who signs off that the evaluation actually reached them.
Speakers whose dialect never appeared in evaluation will carry an error rate nobody measured.
Case
1,107 languages recognised, 102 evaluated
Coverage numbers in this area are now specific enough to argue with. That is progress, and it is the second place the argument has to be tested. Meta AI's Massively Multilingual Speech project puts its scale plainly: “We built pre-trained wav2vec 2.0 models covering 1,406 languages, a single multilingual automatic speech recognition model for 1,107 languages, speech synthesis models for the same number of languages, as well as a language identification model for 4,017 languages.” The same paper reports more than halving Whisper's word error rate on 54 languages of the FLEURS benchmark. A genuine result, and the kind of number that ends a discussion before it starts.
Two things sit beside it. The first is what those 54 languages were measured on. FLEURS describes itself this way: “FLEURS is an n-way parallel speech dataset in 102 languages built on top of the machine translation FLoRes-101 benchmark, with approximately 12 hours of speech supervision per language.” Its total duration is about 1.4k hours: 987h train, 120h dev, 283h test. Read Wikipedia sentences, roughly 12 hours a language. That is a thin and specific slice. It is not a verdict on how a language is spoken.
The second is that benchmarks lag models. XTREME-S, from 2022, sets out its own scope: “Covering 102 languages from 10+ language families, 3 different domains and 4 task families, XTREME-S aims to simplify multilingual speech representation evaluation.” The four task families are speech recognition, classification, speech-to-text translation and retrieval.
None of this makes 1,107 unimpressive. It makes it a number of the same kind as a headline WER that averages 0.35 and 0.19 together: true, large, and silent about who is doing worse inside it. The distance between 1,107 recognised and 102 evaluated is the same distance as the one between a gap and its cause. It is the space where a language's deletions sit unexamined.
Visual
Native reviewers, or no evaluation at all
Evaluation is the binding constraint, and the path below sets out where it comes from. Communities, tokenizers, models, and native evaluation are four separate decisions in a system that must handle many languages, thin data, accents, and mid-sentence switches. The path refuses to average them into one score. Averaging them is exactly the operation that turns 0.35 and 0.19 into a single figure a team can ship on.
The order matters more than four boxes suggest. The tokenizer is decided early, close to the data, by people thinking about sequence length and compression. Native evaluation is decided last, close to launch, by people thinking about whether to ship. In between, nothing goes back.
That is how a tokenizer that fragments one language's words reaches production untouched, and arrives at the end of the path dressed as a property of the language. It is also why the identical-phrases comparison in the PNAS study had to be run deliberately. Nothing in the pipeline produces it on its own.
1. Map communities and use
Define languages, dialects, scripts, code-switches, speakers, and product contexts.
2. Design shared and specific capacity
Choose tokenizer, language tags, adapters, experts, or separate models.
3. Balance training
Control sampling, loss weighting, augmentation, and data quality by community.
4. Evaluate natively
Use local reviewers, realistic text policy, rare entities, and subgroup error analysis.
Whichever communities and uses you mapped decide what native evaluation even looks at, and nothing later in the path revisits that map.
Key idea
Language identification fails before recognition starts
Four conditions are where recognition goes wrong before it ever reaches the words. The case at the top of this lesson already contains two of them.
Labelling dialectal speech as “incorrect pronunciation” is the first. It is the conclusion a per-group table invites and the identical-phrases comparison forecloses. Tokenization that expands sequences unequally is the second: one language's words are cut into more pieces than another's, so every utterance in it becomes a longer sequence to get right.
The third is language identification errors before recognition, which gives this section its title. A system that has decided which language it is hearing, and decided wrong, leaves nothing downstream able to recover. An utterance that changes language mid-sentence forces that decision twice inside one breath. That language identification is a separate model in the MMS release is not an accident of packaging. It is a separate problem. It covers 4,017 languages against the 1,107 that are recognised.
Code-switching is common enough to have had a public challenge built around it. The ASRU 2019 Mandarin-English code-switching challenge put the data on the table: “500 hours Mandarin speech data and 240 hours Mandarin-English intra-sentencial CS data are released to the participants.” (The spelling of “intra-sentencial” is as in the original.) Three tracks were run on that data. In the end-to-end track the organisers report that the results highlight the importance of language identification and of the choice of modelling units. That is the third failure mode and the second. They were named by the people who watched a field's worth of systems attempt the problem at once.
The fourth condition is synthetic translation replacing native speech and native review. It is the shortcut that makes a language list grow fastest and an evaluation mean least.
Good error rates in every reported language can sit beside a system that treats one group of speakers as making mistakes. All four conditions hide in the columns a language list does not have: dialect, age, device, domain. That is where recognition breaks, before a single word is scored.
Calling a dialect a pronunciation error moves the fault from the system to the speaker, and a long language list will keep looking impressive while that is happening.
Example
Code-switching is behavior, not error
That argument turns on four words, and they are not the same kind of thing as each other.
Token fertility is a count: how many pieces the tokenizer needed. The size that count can reach has been measured. It is not hypothetical. In 2023 Petrov and colleagues put it in one line: “The same text translated into different languages can have drastically different tokenization lengths, with differences up to 15 times in some cases.” They also show that even character- and byte-level models leave over 4 times the encoding-length difference for some language pairs. A change of granularity does not quietly remove the effect.
Negative transfer is a loss — the price of shared capacity, which the three architectures divide up differently. Code-switching is neither a count nor a loss. It is ordinary behavior, and both of the others mishandle it. Underneath all three sits a language tag, which is not a measurement at all but an assumption: that there is one language in this audio, and the system already knows which one.
Which is why the title of this section is a claim rather than a definition. Calling code-switching an error rather than behavior changes what has to be measured, in what unit, and who is allowed to call the system ready.
- Code-switching is alternating languages or language varieties within a conversation or utterance — the ASRU 2019 challenge released 240 hours of it as data to be recognised, not as noise to be excluded.
- Token fertility is the number of model tokens needed to represent a unit of text; across languages the same text can differ in tokenized length by up to 15 times.
- Negative transfer is the performance degradation caused by sharing across tasks or domains.
- A language tag is a token or conditioning signal identifying the intended language.
Example
The average is the wrong statistic here
An evaluation worth running is one that can produce a sentence like “0.35 for black speakers compared with 0.19 for white speakers” before a launch rather than after it. WER or CER broken out by language, dialect, script and domain is the base of that report. Tokenizer fertility belongs beside it, because fertility is the number that explains a gap the per-language table can only display. Rare-entity error belongs there for the same reason. The headline figure averages the worst-served speakers away — that is what an average is for. On its own it will not tell you that a dialect is being scored as a pronunciation error.
The Artie Bias Corpus is a small, concrete instrument built for exactly this: 1,712 expert-validated clips, about 2.4 hours, drawn from Mozilla Common Voice. Meyer and colleagues were blunt about what they found in 2020: “We observe a significant accent bias in our baseline DeepSpeech model, with more accurate transcriptions of US English compared to Indian English.” The numbers behind it are a baseline character error rate of 40.50% on Indian English against 21.50% on US English, at p = 8.54e-32. A gender gap of 2.74% CER was not significant.
Then the part worth pinning to the wall. After fine-tuning on all of Common Voice, they inadvertently created a significant gender gap: 3.55% CER, p = 0.042. Improving the system introduced a disparity that had not been there. Only a matrix with a row for it could have caught that. No averaged headline number ever would.
Every figure also needs four things attached before it means anything. Name the unit it is in. Say which speakers it was measured on. Say how uncertain it is. Say where and how the audio was recorded. That last one is not bookkeeping. 19.8 hours of interview audio and roughly 12 hours a language of read Wikipedia sentences are not the same measurement. The device and the room are part of what was measured.
- For the core task, the evidence is WER or CER by language, dialect, script, and domain — reported per group, as 40.50% against 21.50%, never as their average.
- For how the system behaves, it is tokenizer fertility and rare-entity error.
- The robustness slice is code-switch boundary and language-identification performance, the two steps the ASRU 2019 organisers found decisive and which fail before any word is scored.
- Over the system's working life, the evidence is worst-group quality, correction time, and coverage of native evaluation — the Artie fine-tuning result is what happens when a change is accepted without re-checking every group.
Report wer or cer by language, dialect, script, and domain together with worst-group quality, correction time, and coverage of native evaluation.
Steps
Build a multilingual evaluation matrix
The exercise is the smallest version of all of this. Build a multilingual evaluation matrix, and judge it by one property: it names the languages and the speaker groups the system is not ready for. A matrix that lists only what works is a language list with extra columns.
It is written for someone else to use. Another team should be able to pick it up and push back when a dialect is being written off as a pronunciation error. They should be able to notice a 3.55% gap that appeared because of a fine-tune rather than in spite of it. Give the matrix the rows that make that possible: a group per row, a fertility column, and the recording conditions written down beside each figure.
Three notes are enough. Write down what your mapping of communities and use assumes — which speakers you decided the system is for. Then write one counterexample to it: a speaker or a use the mapping quietly leaves outside. Then write what evaluating with native speakers changes once you have their result. That is the step that either confirms the map or shows you what it was hiding.
1. List deployment communities
Include dialect, age, device, environment, and code-switch patterns.
2. Audit the tokenizer
Measure sequence expansion and unknown behavior by script.
3. Balance slices
Set minimum evidence requirements rather than relying on macro averages.
4. Document unsupported use
Publish languages and contexts that remain experimental or out of scope.
The matrix is only useful once it names, in writing, the languages and contexts still out of scope, where a colleague can hold you to the list.
Key takeaways
- Five commercial ASR systems — Amazon, Apple, Google, IBM and Microsoft — were tested on 19.8 hours of matched interview audio from 42 white and 73 black speakers. The average word error rate was 0.35 for black speakers against 0.19 for white speakers (PNAS, 2020). No averaged headline figure can express that split.
- The same study found the gap equally large on identical phrases spoken by both groups, and traced it to the acoustic models rather than to the speakers. That is the published reason an accent is a property of the system, not a defect in the person talking.
- Meta AI's MMS project covers 1,406 languages in pre-training, 1,107 in one ASR model and 4,017 in language identification, and more than halves Whisper's error rate on 54 FLEURS languages. FLEURS is about 12 hours of read Wikipedia speech per language. XTREME-S evaluates 102 languages across 4 task families. The distance between what is claimed and what is measured is where a language's failures sit unexamined.
- Universal shared model, shared encoder with language-specific heads, and separate or adapted models divide the same capacity differently and answer related but different questions. Each has to be defended language by language, not once for the system.
- Tokenization is a measurable cause, not a hypothesis: tokenized lengths of the same text differ by up to 15 times across languages, and by over 4 times even for character- and byte-level models. Blaming dialectal speech for poor scores hides a cost that can be counted.
- Report WER or CER by language, dialect, script and domain with worst-group quality, correction time and coverage of native evaluation. The Artie Bias Corpus (1,712 clips, 40.50% CER on Indian English against 21.50% on US English, p = 8.54e-32) also shows a fine-tune inadvertently creating a 3.55% gender gap at p = 0.042. Only a per-group matrix catches that.