Speech Recognition (ASR) — nutqni avtomatik tanish texnologiyasi bo'lib, audio signalni matn ketma-ketligiga aylantiradi. Zamonaviy tizimlar deep learning'dan foydalanadi: enkoder (Conformer, Whisper, BiLSTM + CTC) audio spektrogrammasini yashirin holatlar ketma-ketligiga aylantiradi, dekoder (CTC greedy decoding, Beam Search, Transformer decoder) matnni shakllantiradi. Mobil ilovalarda Speech Recognition ovozli kiritish, ovozli yordamchilar, qo'ng'iroqlarni avtomatik transkripsiya qilish va motorikasi cheklangan odamlar uchun accessibility funksiyalar uchun qo'llaniladi. Google Cloud Speech-to-Text, 2025 ma'lumotlariga ko'ra, bulutli ASR ingliz tilida WER 7% va rus tilida 12% ga erishadi, SNR > 15 dB bo'lganda.
Asosiy
Automatic Speech Recognition (ASR) — pipeline: audio → dastlabki ishlov (16 kHz mono, noise reduction, VAD — ovoz faolligi) → feature extraction (MFCC, LogMel FilterBank) → acoustic model (neyron tarmoq: CTC / RNNT / Transducer) → language model (LM) → dekodlash (matn). Zamonaviy end-to-end modellar (Whisper, Google USM, Conformer CTC) acoustic + language model'ni bitta Transformer'ga birlashtiradi, bu pipeline'ni soddalashtiradi va aniqlikni oshiradi.
Mobil qurilmalar uchun ASR arxitekturalari: CTC (Connectionist Temporal Classification) — tezkor, audio va matnni moslashtirishni talab qilmaydi, Vosk, Android native'da ishlatiladi. RNNT (Recurrent Neural Network Transducer) — streaming ASR, past latency (Google USM). Conformer — CNN + Transformer gibridi, eng yaxshi aniqlik, lekin og'irroq: Whisper Medium (769M params) — 30–60x latency. On-device uchun CTC afzal: Vosk CTC modellari 50–100 MB joy egallaydi, latency 0.3–0.8x real-time.
ASR metrikalari: WER (Word Error Rate) — etalon bilan solishtirganda almashtirilgan, o'chirilgan, qo'shilgan so'zlar foizi. Google Cloud ASR — 7% WER (EN), 12% (RU). Vosk — 13% (RU), 9% (EN). Whisper Small — 6% (EN), 10% (RU). CER (Character Error Rate) — xuddi shunday, belgilar darajasida. Real-Time Factor (RTF) — ishlov berish vaqti / audio davomiyligi. RTF < 1 — real vaqtdan tezroq. RTF < 0.3 — real-time ASR. Ovozli kiritish uchun RTF < 1 kerak, transkripsiya uchun — RTF < 3.
| ASR yechimi | WER (EN) | WER (RU) | RTF | On-device |
|---|---|---|---|---|
| Google Cloud ASR | 7% | 12% | 0.3 | Yo'q |
| Android SpeechRecognizer | 8% | 13% | 0.5–1 | Ha (aralash) |
| SFSpeechRecognizer | 7% | 12% | 0.3–0.8 | Ha (iOS 17 dan) |
| Vosk (vosk-model-small-ru) | 9% | 13% | 0.3–0.8 | Ha |
| Whisper Small | 6% | 10% | 2–6 | Ha |
VAD (Voice Activity Detection) — nutqni sukunat va shovqindan ajratuvchi ovoz faolligi detektori. WebRTC VAD — mobil ASR uchun standart: 30 ms freymlar, uchta rejim (0, 1, 2 — konservativdan agressivgacha). VAD RTF'ni 1.5–3x kamaytiradi (nutqsiz qismlarni o'tkazib yuboradi). Silero VAD (MIT) — neyron tarmoq asosidagi VAD, WebRTC'dan aniqroq (94% vs 85% ROC AUC), 5–10 ms latency, TFLite va Core ML. Production ASR uchun VAD → ASR kaskadini qo'llang: bu noto'g'ri ishga tushirishlarni kamaytiradi va ishlovni tezlashtiradi.
Android SpeechRecognizer — Android SDK'ga o'rnatilgan nutqni tanib olish klassi. Ikki rejimda ishlaydi: cloud (Google server) — yuqori aniqlik, internet talab qiladi; on-device (Android 10+ dan) — GBoard embedded ASR modeli, 20+ til, WER 15–18%. SpeechRecognizer nutq paytida oraliq natijalarni (partial results) va yakuniy matnni qaytaradi. RecognizerIntent.EXTRA_LANGUAGE orqali 60+ tilni qo'llab-quvvatlaydi. Ovozli kiritish uchun tavsiya etiladi — tezkor integratsiya, bepul.
SpeechRecognizer API: SpeechRecognizer.createSpeechRecognizer(context) orqali yaratish. RecognizerIntent.ACTION_RECOGNIZE_SPEECH bilan Intent, extra: LANGUAGE_MODEL_FREE_FORM (erkin matn) yoki LANGUAGE_MODEL_WEB_SEARCH (qidiruv so'rovlari). Natija RecognitionListener orqali: onReadyForSpeech → onBeginningOfSpeech → onRmsChanged → onPartialResults → onResults. Continuous recognition ("har doim tinglash" rejimi) uchun — onResults'dan keyin recognizer'ni qayta ishga tushiring. Batareyani tejash uchun onDeviceOnly = true dan foydalaning.
// Android SpeechRecognizer
val recognizer = SpeechRecognizer.createSpeechRecognizer(context)
recognizer.setRecognitionListener(object : RecognitionListener {
override fun onResults(results: Bundle) {
val text = results
.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
?.firstOrNull() ?: ""
showResult(text)
}
override fun onPartialResults(partialResults: Bundle) {
val partial = partialResults
.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION)
?.firstOrNull() ?: ""
showPartial(partial)
}
})
val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH).apply {
putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ru-RU")
}
recognizer.startListening(intent)
On-device vs Cloud Android'da: on-device internetsiz ishlaydi (Android 10+, Pixel 4+, Samsung S20+). Cloud — aniqroq (Google Neural Network ASM Model), lekin latency yuqoriroq (tarmoq bilan 300–800 ms). Ovozli kiritish uchun gibriddan foydalaning: tarmoq yo'q bo'lganda on-device'ga fallback qiladigan cloud. Android SpeechRecognizer rejimni RecognizerIntent.EXTRA_PREFER_OFFLINE ga qarab avtomatik tanlaydi. Maksimal maxfiylik uchun — onDeviceOnly = true qo'ying (lekin aniqlik rus tilida 15–18% WER).
SFSpeechRecognizer — Apple'ning iOS, macOS, watchOS uchun nutqni tanib olish frameworki. iOS 10 dan mavjud. On-device rejim — iOS 17 dan (mahalliy model, internetsiz). 60+ tilni qo'llab-quvvatlaydi. Aniqlik: WER 7–12% (on-device — 12–15%). SFSpeechRecognizer Speech.framework orqali mavjud — qo'shimcha SDK talab qilmaydi. Ruxsat so'rash SFSpeechRecognizer.requestAuthorization orqali.
SFSpeechRecognizer API: SFSpeechRecognizer(locale: Locale(identifier: "ru_RU")) → SFSpeechAudioBufferRecognitionRequest (live audio) yoki SFSpeechURLRecognitionRequest (audio fayl). Streaming recognitionTask(with:delegate:) orqali SFSpeechRecognitionTaskDelegate bilan (didHypothesizeTranscription — partial, didFinishRecognition — final). On-device rejim: request.requiresOnDeviceRecognition = true. iOS 15+ uchun: request.shouldReportPartialResults = true (past kechikishli streaming natija).
let recognizer = SFSpeechRecognizer(locale: Locale(identifier: "ru_RU"))
guard recognizer.isAvailable else { return }
let request = SFSpeechAudioBufferRecognitionRequest()
request.requiresOnDeviceRecognition = true
request.shouldReportPartialResults = true
recognitionTask = recognizer.recognitionTask(with: request) { result, error in
if let result = result {
let text = result.bestTranscription.formattedString
let isFinal = result.isFinal
DispatchQueue.main.async {
textView.text = text
}
}
}
audioEngine.inputNode.installTap(config: bufferConfig) { buffer, _ in
request.append(buffer)
}
audioEngine.prepare()
try audioEngine.start()
SFSpeechRecognizer vs Android SpeechRecognizer: SFSpeechRecognizer qayta ishga tushirmasdan mahalliy streaming'ga ega (Android qayta startListening talab qiladi). iOS'da on-device iOS 17 dan mavjud (Android — Android 10 dan). Ikkalasi ham foydalanuvchi ruxsatini talab qiladi (iOS uchun NSMicrophoneUsageDescription + NSSpeechRecognitionUsageDescription, Android uchun RECORD_AUDIO). SFSpeechRecognizer ingliz tilida aniqroq (on-device), Android SpeechRecognizer rus tilida aniqroq (cloud). iOS 17 dan oldingi versiyalarda on-device mavjud emas — internet talab qilinadi. iOS 17+ uchun on-device rus tilida WER 12–14% beradi.
Vosk — Alpha Cephei kompaniyasining offline nutqni tanib olish uchun open-source ASR kutubxonasi. Kaldi ASR toolkit + CTC modellari asosida qurilgan. 20+ tilni qo'llab-quvvatlaydi: rus, ingliz, nemis, fransuz, ispan, xitoy, arab. Modellar 50 MB (small — 50 MB, ru) dan 1.2 GB (large — 1.2 GB, en) gacha. Vosk Android (JNI), iOS (C++ wrapper), Linux, Windows, Raspberry Pi'da ishlaydi. RTF: 0.3–0.8 flagman qurilmalarda. Vosk — to'liq offline ASR uchun eng yaxshi tanlov.
Vosk API: VoskWaveformModelLoader (model yuklash) → VoskWaveformRecognizer (tanib oluvchini yaratish) → recognizer.createGrammar(list) yoki recognizer.getResult() / recognizer.getPartialResult(). Grammatikalarni qo'llab-quvvatlash (cheklangan buyruqlar to'plami) — GrammarRecogniser — RTF 0.1–0.3 beradi (3x tezroq). Ovozli kiritish uchun erkin tanib olishdan (getResult) foydalaning. Ovozli buyruqlar uchun — GrammarRecogniser (buyruqlarda 99% aniqlik). Vosk shuningdek Speaker Identification'ni (ovozni vektorli tahlil) qo'llab-quvvatlaydi.
// Vosk oflayn ASR
val model = VoskModel("model/vosk-model-small-ru-0.22")
model.load()
val recognizer = VoskRecognizer(model, 16000.0f)
recognizer.setWords(true)
audioRecord.startRecording()
while (isListening) {
val buffer = ByteArray(3200) // 100ms audio
audioRecord.read(buffer, 0, buffer.size)
if (recognizer.acceptWaveform(buffer)) {
val result = recognizer.result // JSON
text += JSONObject(result).getString("text")
}
}
Vosk vs Cloud ASR: Vosk butunlay oflayn — maxfiylik, zero latency, bepul. Cloud (Google, Yandex) murakkab sahnalarda (shovqin, aksent) aniqroq — WER 3–5% past. Vosk quyidagilar uchun idealdir: internetsiz ovozli kiritish, accessibility ilovalari, qo'ng'iroqlarni transkripsiya qilish (maxfiylik). Cloud ASR — ovozli yordamchilar uchun, bu yerda aniqlik maxfiylikdan muhimroq. Tavsiya: offline uchun Vosk, online uchun SFSpeechRecognizer (iOS) / SpeechRecognizer (Android) — turli stsenariylar uchun yondashuvlarni kombinatsiya qiling.
Whisper — OpenAI'ning nutqni tanib olish modeli, 680,000 soat audio bilan o'qitilgan (ko'p tilli, 99 til). O'lchamlari: tiny (39M, WER 10% EN, 15% RU), small (244M, WER 6% EN, 10% RU), medium (769M, WER 4.5% EN, 8% RU). Whisper mobil qurilmalarda Core ML (iOS, ANE) va TFLite (Android, GPU) orqali ishlaydi. Whisper tiny: CPU'da RTF 4–10, GPU'da RTF 0.5–2 (Android). Whisper small: GPU'da RTF 2–6. Whisper medium — RTF 8–15, faqat non-real-time uchun.
Whisper iOS'da (Core ML): Apple MLX Whisper — Whisper'ning Core ML va MLX (Apple Neural Engine) uchun implementatsiyasi. Whisper tiny Core ML iPhone 15 Pro'da: RTF 0.3–0.8 (real-time'dan tezroq!). Whisper small Core ML: RTF 1–3. Whisper Core ML A17 Pro'da ANE'dan foydalanadi (Neural Engine 35 TOPS). Hugging Face Transformers → Export to Core ML coremltools-whisper orqali. Streaming uchun WhisperStitcher (chunking + stitching) dan foydalaning. Whisper iOS'da — eng aniq on-device ASR (WER 6% EN, 10% RU).
// Whisper Core ML iOS'da
import MLXWhisper
let model = try WhisperModel(from: "whisper-tiny")
let audio = try AudioUtils.loadAudio(url: audioURL)
let segments = try model.transcribe(audio: Audio, options: TranscribeOptions(
language: "ru",
wordTimestamps: true,
temperature: 0.0
))
for segment in segments {
print(segment.text) // vaqt belgilari bilan yakuniy matn
}
Whisper vs Vosk: Whisper aniqroq (6% vs 9% WER EN), 99 tilni qo'llab-quvvatlaydi, language detection, punctuation, emotion recognition'ni o'z ichiga oladi. Whisper og'irroq (39M–769M vs 50M Vosk), real-time'da sekinroq (RTF 0.5–6 vs 0.3–0.8). Whisper tiny — tezligi bo'yicha Vosk bilan taqqoslanadi (RTF 0.5–2 GPU). Vosk yengilroq, tezroq, streaming real-time uchun yaxshiroq. Whisper — bir martalik transkripsiya uchun, bu yerda aniqlik tezlikdan ustun. Vosk — real-time ovozli kiritish uchun. Yakuniy matn uchun Whisper, interaktiv uchun — Vosk foydalaning.
Ovozli matn kiritish — ASR'ning eng ommaviy qo'llanishi: xabarlar, qidiruv so'rovlari, eslatmalarni dikta qilish. Talab: RTF < 1 (real vaqt), partial results (matnni aytilayotganda ko'rish). Android Gboard va iOS Keyboard o'rnatilgan ASR'ga ega (on-device, WER 12–18%). Maxsus implementatsiya uchun Android SpeechRecognizer / SFSpeechRecognizer'dan foydalaning. Maksimal aniqlik uchun — Cloud ASR + Vosk fallback. Rus tilida 98% aniqlik bilan ovozli kiritish uchun — Vosk (offline) + Yandex SpeechKit (online) kombinatsiyasi.
Qo'ng'iroqlar va uchrashuvlar transkripsiyasi — stenogrammalarni avtomatik yaratish uchun ASR. Talablar: no latency requirement, WER < 10%, speaker diarization (kim gapirayotgani). Whisper Small (offline) + pyannote-audio (diarization) — transkripsiya uchun standart stack. iOS'da — Whisper Core ML (RTF 1–3, WER 6–10%). Android'da — Whisper TFLite (RTF 2–6, WER 8–12%) yoki Google Cloud ASR + diarization. Maxfiylik uchun (qo'ng'iroqlar serverga bormasligi kerak) — Whisper qurilmada. Diarization aniqligi: 80–90% DER.
Ovozli yordamchilar — Siri (SFSpeechRecognizer), Google Assistant (Android SpeechRecognizer), Alexa (on-device ASR). Maxsus yordamchi: ASR → NLU (Natural Language Understanding) → Action → TTS. ASR — birinchi bosqich — butun zanjirning aniqligini belgilaydi. NLU uchun RASA, Snips NLU (on-device) yoki Cloud NLU (Dialogflow, Amazon Lex) dan foydalaning. TTS uchun: Android TTS / iOS AVSpeechSynthesizer. On-device ovozli yordamchi (Vosk + RASA + TTS) — to'liq maxfiy, internetsiz ishlaydi, so'rovga latency < 2 soniya.
// Android SpeechRecognizer + TTS bilan ovozli yordamchi
recognizer.setRecognitionListener(object : RecognitionListener {
override fun onResults(results: Bundle) {
val query = results.getStringArrayList(
SpeechRecognizer.RESULTS_RECOGNITION
)?.firstOrNull() ?: return
val intentResult = nluService.classify(query)
textToSpeech.speak(intentResult.response)
executeAction(intentResult.action)
}
})
Motorikasi cheklangan odamlar uchun Accessibility — Speech Recognition ilovani ovoz bilan boshqarish imkonini beradi: kontaktlarni ochish, xabar yuborish, raqam terish. Android Voice Access va iOS Switch Control + VoiceOver — o'rnatilgan yechimlar. Maxsus implementatsiya uchun: fixed buyruqlar to'plami bilan GrammarRecogniser (Vosk) (50–100 ibora) — RTF 0.1–0.3, 99% aniqlik. Vosk Grammar grammatikani BNF formatida aniqlash imkonini beradi. Accessibility uchun tezlik muhim — Vosk Grammar erkin tanib olishdan 5x tezroq va kamroq batareya sarflaydi.
Ko'p beriladigan savollar
Noise suppression (WebRTC NS — Android'ga o'rnatilgan, iOS AVAudioSession) dan foydalaning. Nutqsiz fragmentlarni kesish uchun VAD qo'llang. Beamforming (yo'naltirilgan yozuv) yoki multi-microphone array bilan mikrofon orqali SNR'ni oshiring. Whisper shovqinga chidamliroq (680K soat shovqin bilan o'qitilgan). WebRTC orqali shovqinni bostirish bilan Vosk 50 dB shovqinda +5% WER beradi. Production uchun ilovangizning shovqinli sharoitlari bilan testdan foydalaning.
Ha, iOS 17 dan SFSpeechRecognizer on-device rejimni qo'llab-quvvatlaydi (requiresOnDeviceRecognition = true). iOS 16 va undan eski versiyalarda on-device mavjud emas — Siri/Gboard ASR uchun internet talab qilinadi. Alternativalar: C++ wrapper orqali Vosk (offline, WER 12–15%), Whisper Core ML (offline, WER 6–10%, latency 2–6x). iOS 16- da ovozli kiritish uchun Vosk'dan foydalaning. Whisper Core ML — audio fayllarni transkripsiya qilish uchun (real-time emas). Barcha yechimlar to'liq maxfiy va internetsiz ishlaydi.
Android SpeechRecognizer RecognizerIntent.EXTRA_LANGUAGE orqali 60+ tilni qo'llab-quvvatlaydi. To'liq ro'yxat qurilmadagi Locale.getAvailableLocales() orqali aniqlanadi. Rus, ingliz, nemis, fransuz, ispan, italyan — har doim mavjud. Xitoy, yapon, koreys — modelga bog'liq. On-device rejim (Android 10+) — 20+ til. Vosk'dan (20 til) va SFSpeechRecognizer'dan (60 til) farqli o'laroq, Android SpeechRecognizer Google Play Services versiyasiga bog'liq.
Model adaptation'dan foydalaning: 100+ soat soha audiosida Whisper fine-tuning (Hugging Face Trainer). Vosk — Language Model'ni (ARPA format) soha matn korpusi bilan almashtirish (100K+ jumla). Google Cloud ASR — phrase hints (soha so'zlari, DL=0/1/2). SFSpeechRecognizer — contextualStrings bilan SFSpeechRecognitionTaskDelegate (maslahat-so'zlar massivi). Domain adaptation maxsus terminologiya uchun aniqlikni 15–30% WER'ga oshiradi. Minimum: transkripsiyalar bilan 500 ta soha audio fayli.
WER = (S + D + I) / N, bu yerda S — substitutions (almashtirishlar), D — deletions (o'chirishlar), I — insertions (qo'shishlar), N — etalon matndagi so'zlar soni. Misol: etalon = "salom qalaysan", bashorat = "salom nima qilyapsan" → S=1 (qalaysan→nima), D=1 („qalaysan" o'chirildi?), I=0 → WER = 2/3 = 66%. Hisoblash uchun jiwer kutubxonasidan (Python) yoki WER Calculator (JavaScript) dan foydalaning. CER — xuddi shunday, belgilar darajasida. Rus tili uchun CER so'zlarning uzunligi tufayli WER'dan 20–30% past.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.