Skip to content
Innovialabs

Uzbek Speech Recognition: Options, Accuracy and Pitfalls

Practice3 min

In short

Uzbek speech is handled by cloud APIs, open models and local providers; choose by WER on your own call recordings, and test mixed Russian-Uzbek speech separately.

The short answer

There are three groups of options for Uzbek:

  • Cloud APIs from major platforms — Google Speech-to-Text, Azure Speech and others that list Uzbek among supported languages.
  • Open models — for example OpenAI Whisper and multilingual wav2vec2/MMS models, which you can run on your own server and fine-tune.
  • Local providers that specialize in Uzbek and train models on local data.

Do not choose any of them from a feature page. Quality depends heavily on your recordings: phone line, noise, accent, language mixing. Only a test on real data settles it.

The main pitfalls

Code-switching. Speakers in Uzbekistan constantly switch between Uzbek and Russian within one sentence. A model locked to one language distorts words from the other or "translates" them.

Two scripts. The model may output Latin, Cyrillic or a mix. That breaks search and analytics, so agree on a target script and normalize the output.

Dialects and casual speech. Tashkent, Fergana and Khorezm speech differ noticeably. Models trained on read speech handle live conversation worse.

Telephone audio. Compressed 8 kHz recordings are very different from studio audio. Test on calls, not podcasts.

Names, brands, numbers. Product names, addresses and amounts are where ASR errs most, and they matter most to the business.

How to measure quality

  1. Pick 1-3 hours of real calls with different agents, customers, regions and noise levels.
  2. Create a reference transcript by hand with consistent rules: which script, how to write numbers, how to mark inaudible parts.
  3. Compute WER (word error rate) for each candidate.
  4. Break results down by segment: pure Uzbek, pure Russian, mixed, noisy recordings.
  5. Check business entities separately: are product names, amounts and order numbers recognized correctly.

Before computing WER, normalize reference and hypothesis the same way — case, punctuation, apostrophes:

import re

def normalize(text: str) -> str:
    text = text.lower()
    text = re.sub(r"[ʻʼ`'‘’]", "’", text)
    text = re.sub(r"[^\w\s’]", " ", text)
    return " ".join(text.split())

WER itself can be computed with an existing library such as jiwer.

How to improve results

  • Vocabulary hints (phrase hints, custom vocabulary) with your product names, if the API supports it.
  • Channel separation: if your PBX records agent and customer on separate channels, transcribe them separately.
  • Fine-tuning an open model on a few dozen hours of your labeled calls.
  • LLM post-processing: fixing obvious errors and converting to a single script. Make sure the model does not invent content.

How to choose

CriterionCloud APIOpen modelLocal provider
Getting startedFastNeeds infrastructure and GPUsFast
DataGoes to the providerStays with youDepends on the contract
Fine-tuningLimitedFull controlBy agreement

FAQ

Uzbek is among Whisper's supported languages, but quality on phone calls and mixed speech must be checked on your recordings. Fine-tuning on your own data usually helps noticeably.

We can help with this

If you'd rather get the result than figure it all out yourself — this is what we do every day.

Discuss a project

Read next

Have an idea or a task? Tell us about it

We'll reply within one business day and propose a solution. The consultation is free.