Speech Recognition — nədir, texnologiyalar və iş prinsipi

Müəllif: IT Sectr Dərc olunub: 2026-07-19 Oxuma vaxtı: 10 dəq

Speech Recognition (ASR) — audio siqnalı mətn ardıcıllığına çevirən avtomatik nitq tanıma texnologiyası. Müasir sistemlər deep learning-dən istifadə edir: enkoder (Conformer, Whisper, BiLSTM + CTC) audio spektroqrammasını gizli vəziyyətlər ardıcıllığına çevirir, dekoder (CTC greedy decoding, Beam Search, Transformer decoder) mətn formalaşdırır. Mobil tətbiqlərdə Speech Recognition səs daxil etmə, səs köməkçiləri, zənglərin avtomatik transkripsiyası və motor məhdudiyyəti olan şəxslər üçün accessibility funksiyaları üçün istifadə olunur. Google Cloud Speech-to-Text, 2025 məlumatlarına görə, bulud ASR-si SNR > 15 dB olduqda ingilis dilində 7% WER və rus dilində 12% WER əldə edir.

Əsas məqamlar

  • Speech Recognition — neyron şəbəkələr vasitəsilə nitqin mətnə çevrilməsi (ASR)
  • Android SpeechRecognizer — on-device + cloud ASR, 60+ dil, 7–12% WER
  • SFSpeechRecognizer — iOS yerli tanıma, iOS 17-dən on-device
  • Vosk — offline ASR, 20+ dil, real vaxt 0.5–1.5x latency, 13% WER rus
  • Whisper — OpenAI ASR-si, Core ML / TFLite vasitəsilə on-device, çoxdillidir

Speech Recognition nədir: ASR prinsipləri

Automatic Speech Recognition (ASR) — pipeline: audio → əvvəlcədən emal (16 kHz mono, səs-küyün azaldılması, VAD — nitq aktivliyi) → xüsusiyyət çıxarılması (MFCC, LogMel FilterBank) → akustik model (neyron şəbəkə: CTC / RNNT / Transducer) → dil modeli (LM) → dekodlaşdırma (mətn). Müasir end-to-end modellər (Whisper, Google USM, Conformer CTC) akustik və dil modellərini bir Transformer-də birləşdirir, bu da pipeline-nı sadələşdirir və dəqiqliyi artırır.

Mobil cihazlar üçün ASR arxitekturaları: CTC (Connectionist Temporal Classification) — sürətli, audio və mətnin uyğullaşdırılmasını tələb etmir, Vosk və Android native-də istifadə olunur. RNNT (Recurrent Neural Network Transducer) — axın ASR, aşağı gecikmə (Google USM). Conformer — CNN + Transformer hibridi, ən yaxşı dəqiqlik, lakin daha ağır: Whisper Medium (769M parametr) — 30–60x latency. On-device üçün CTC üstünlük təşkil edir: Vosk CTC modelləri 50–100 MB yer tutur, latency 0.3–0.8x real vaxt.

ASR metrikaları: WER (Word Error Rate) — etalonla müqayisədə əvəz edilmiş, silinmiş, əlavə edilmiş sözlərin faizi. Google Cloud ASR — 7% WER (EN), 12% (RU). Vosk — 13% (RU), 9% (EN). Whisper Small — 6% (EN), 10% (RU). CER (Character Error Rate) — oxşar, simvol səviyyəsində. Real-Time Factor (RTF) — emal vaxtı / audio müddəti. RTF < 1 — real vaxtdan sürətli. RTF < 0.3 — real vaxt ASR-si. Səs daxil etmə üçün RTF < 1, transkripsiya üçün RTF < 3 tələb olunur.

ASR HəlliWER (EN)WER (RU)RTFOn-device
Google Cloud ASR7%12%0.3Xeyr
Android SpeechRecognizer8%13%0.5–1Bəli (qarışıq)
SFSpeechRecognizer7%12%0.3–0.8Bəli (iOS 17-dən)
Vosk (vosk-model-small-ru)9%13%0.3–0.8Bəli
Whisper Small6%10%2–6Bəli

VAD (Voice Activity Detection) — nitqi səssizlikdən və səs-küydən ayıran nitq aktivliyinin aşkar edilməsi. WebRTC VAD — mobil ASR üçün standart: 30 ms çərçivə, üç rejim (0, 1, 2 — konservativdən aqressivə qədər). VAD RTF-ni 1.5–3x azaldır (nitq olmayan hissələri buraxır). Silero VAD (MIT) — neyron şəbəkəyə əsaslanan VAD, WebRTC-dən daha dəqiq (94% vs 85% ROC AUC), 5–10 ms latency, TFLite və Core ML. İstehsal ASR üçün VAD → ASR kaskadından istifadə edin: bu, yalanış aşkarlamaları azaldır və emalı sürətləndirir.

Android SpeechRecognizer API

Android SpeechRecognizer — Android SDK-da nitq tanıma üçün qurulmuş sinif. İki rejimdə işləyir: bulud (Google server) — yüksək dəqiqlik, internet tələb edir; on-device (Android 10+-dan) — GBoard qurulmuş ASR modeli, 20+ dil, WER 15–18%. SpeechRecognizer danışma zamanı aralıq nəticələr (partial results) və son mətn qaytarır. RecognizerIntent.EXTRA_LANGUAGE vasitəsilə 60+ dili dəstəkləyir. Səs daxil etmə üçün tövsiyə olunur — sürətli inteqrasiya, pulsuz.

SpeechRecognizer API: SpeechRecognizer.createSpeechRecognizer(context) vasitəsilə yaradılır. RecognizerIntent.ACTION_RECOGNIZE_SPEECH ilə Intent, extra: LANGUAGE_MODEL_FREE_FORM (sərbəst mətn) və ya LANGUAGE_MODEL_WEB_SEARCH (axtarış sorğuları). RecognitionListener vasitəsilə nəticə: onReadyForSpeech → onBeginningOfSpeech → onRmsChanged → onPartialResults → onResults. Davamlı tanıma („həmişə dinlə“ rejimi) üçün onResults-dan sonra recognizer-i yenidən başladın. Batareyaya qənaət etmək üçün onDeviceOnly = true istifadə edin.

kotlin
// Android SpeechRecognizer səs tanıma
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)

Android-də On-device vs Cloud: on-device internet olmadan işləyir (Android 10+, Pixel 4+, Samsung S20+). Bulud daha dəqiqdir (Google Neural Network ASM Model), lakin gecikmə daha yüksəkdir (şəbəkə ilə 300–800 ms). Səs daxil etmə üçün hibrid istifadə edin: şəbəkə olmadıqda on-device üzərinə düşmə ilə bulud. Android SpeechRecognizer RecognizerIntent.EXTRA_PREFER_OFFLINE-dən asılı olaraq rejimi avtomatik seçir. Maksimum məxfilik üçün onDeviceOnly = true təyin edin (lakin rus dili üçün dəqiqlik 15–18% WER).

iOS SFSpeechRecognizer və Speech Framework

SFSpeechRecognizer — Apple-ın iOS, macOS, watchOS-da nitq tanıma üçün çərçivəsi. iOS 10-dan mövcuddur. On-device rejimi — iOS 17-dən (yerli model, internet olmadan). 60+ dili dəstəkləyir. Dəqiqlik: WER 7–12% (on-device — 12–15%). SFSpeechRecognizer Speech.framework vasitəsilə mövcuddur — əlavə SDK tələb etmir. İcazə sorğusu SFSpeechRecognizer.requestAuthorization vasitəsilə.

SFSpeechRecognizer API: SFSpeechRecognizer(locale: Locale(identifier: "ru_RU")) → SFSpeechAudioBufferRecognitionRequest (canlı audio) və ya SFSpeechURLRecognitionRequest (audio fayl). SFSpeechRecognitionTaskDelegate ilə recognitionTask(with:delegate:) vasitəsilə streaming (didHypothesizeTranscription — aralıq, didFinishRecognition — son). On-device rejimi: request.requiresOnDeviceRecognition = true. iOS 15+ üçün: request.shouldReportPartialResults = true (aşağı gecikmə ilə axın nəticəsi).

swift
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 yenidən başlatma olmadan yerli streaming-ə malikdir (Android təkrari startListening tələb edir). iOS-da on-device iOS 17-dən (Android — Android 10-dan) mövcuddur. Hər ikisi istifadəçi icazəsi tələb edir (iOS üçün NSMicrophoneUsageDescription + NSSpeechRecognitionUsageDescription, Android üçün RECORD_AUDIO). SFSpeechRecognizer ingilis dilində daha dəqiqdir (on-device), Android SpeechRecognizer rus dilində daha dəqiqdir (bulud). iOS 17-dən əvvəl on-device mövcud deyil — internet tələb olunur. iOS 17+ üçün on-device rus dilində 12–14% WER verir.

Vosk: 20+ dildə offline tanıma

Vosk — Alpha Cephei tərəfindən offline nitq tanıma üçün açıq mənbəli ASR kitabxanası. Kaldi ASR toolkit + CTC modellərinə əsaslanır. 20+ dili dəstəkləyir: rus, ingilis, alman, fransız, ispan, çin, ərəb. Modellər 50 MB-dan (small — 50 MB, ru) 1.2 GB-dək (large — 1.2 GB, en). Vosk Android (JNI), iOS (C++ wrapper), Linux, Windows, Raspberry Pi-də işləyir. RTF: flagman cihazlarda 0.3–0.8. Vosk tam offline ASR üçün ən yaxşı seçimdir.

Vosk API: VoskWaveformModelLoader (model yükləmə) → VoskWaveformRecognizer (tanıyıcının yaradılması) → recognizer.createGrammar(list) və ya recognizer.getResult() / recognizer.getPartialResult(). Qrammatikaların dəstəyi (sonlu əmr çoxluğu) — GrammarRecogniser — RTF 0.1–0.3 verir (3x daha sürətli). Səs daxil etmə üçün sərbəst tanımadan (getResult) istifadə edin. Səs əmrləri üçün — GrammarRecogniser (əmrlər üçün 99% dəqiqlik). Vosk həmçinin danışanın identifikasiyasını (səsin vektor təhlili) dəstəkləyir.

kotlin
// Vosk offline 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) // 100 ms 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 tamamilə offline-dır — məxfilik, sıfır gecikmə, pulsuz. Bulud (Google, Yandex) çətin səhnələrdə (səs-küç, aksent) daha dəqiqdir — WER 3–5% aşağı. Vosk aşağıdakılar üçün idealdır: internet olmadan səs daxil etmə, accessibility tətbiqləri, zəng transkripsiyası (məxfilik). Cloud ASR — dəqiqliyin məxfiliyə nisbətən daha vacib olduğu səs köməkçiləri üçün. Tövsiyə: offline üçün Vosk, online üçün SFSpeechRecognizer (iOS) / SpeechRecognizer (Android) — müxtəlif ssenarilər üçün yanaşmaları birləşdirin.

Whisper OpenAI mobil cihazlarda

Whisper — OpenAI tərəfindən 680 000 saat audio (çoxdilli, 99 dil) üzərində təlim edilmiş nitq tanıma modeli. Ölçülərdə mövcuddur: tiny (39M, 10% WER EN, 15% RU), small (244M, 6% WER EN, 10% RU), medium (769M, 4.5% WER EN, 8% RU). Whisper Core ML (iOS, ANE) və TFLite (Android, GPU) vasitəsilə mobil cihazlarda işləyir. 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, yalnız qeyri-real-vaxt üçün.

iOS-da Whisper (Core ML): Apple MLX Whisper — Core ML və MLX (Apple Neural Engine) üçün Whisper tətbiqi. iPhone 15 Pro-da Whisper tiny Core ML: RTF 0.3–0.8 (real vaxtdan sürətli!). Whisper small Core ML: RTF 1–3. Whisper Core ML A17 Pro-da ANE-dən istifadə edir (Neural Engine 35 TOPS). Hugging Face Transformers → coremltools-whisper vasitəsilə Core ML-ə ixrac. Streaming üçün WhisperStitcher (chunking + stitching) istifadə edin. iOS-da Whisper — ən dəqiq on-device ASR (6% WER EN, 10% RU).

swift
// iOS-da Whisper Core ML
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) // vaxt damğaları ilə son mətn
}

Whisper vs Vosk: Whisper daha dəqiqdir (6% vs 9% WER EN), 99 dili dəstəkləyir, dil aşkarlama, durğu işaretləri, emosiya tanıma daxildir. Whisper daha ağırdır (39M–769M vs 50M Vosk), real vaxtda daha yavaşdır (RTF 0.5–6 vs 0.3–0.8). Whisper tiny — sürət baxımından Vosk ilə müqayisə edilə bilər (GPU-da RTF 0.5–2). Vosk daha yüngül, daha sürətli, real vaxt streaming üçün daha yaxşıdır. Whisper — dəqiqliyin sürətdən üstün olduğu birdəfəlik transkripsiya üçün. Vosk — real vaxt səs daxil etmə üçün. Son mətn üçün Whisper, interaktiv üçün Vosk istifadə edin.

Speech Recognition-un mobil tətbiqlərdə tətbiqi

Mətnin səs daxil edilməsi — ASR-nin ən kütləvi tətbiqi: mesajların, axtarış sorğularının, qeydlərin diktə edilməsi. Tələb: RTF < 1 (real vaxt), aralıq nəticələr (tələffüz edildikcə mətni görmək). Android Gboard və iOS Keyboard daxili ASR-yə malikdir (on-device, WER 12–18%). Xüsusi tətbiq üçün Android SpeechRecognizer / SFSpeechRecognizer istifadə edin. Maksimum dəqiqlik üçün — Cloud ASR + Vosk fallback. Rus dilində 98% dəqiqliklə səs daxil etmə üçün — Vosk (offline) + Yandex SpeechKit (online) kombinasiyası.

Zənglərin və görüşlərin transkripsiyası — avtomatik stenoqram yaratmaq üçün ASR. Tələblər: gecikmə tələbi yoxdur, WER < 10%, danışanın diarizasiyası (kim danışır). Whisper Small (offline) + pyannote-audio (diarization) — transkripsiya üçün standart yığın. iOS-da — Whisper Core ML (RTF 1–3, WER 6–10%). Android-də — Whisper TFLite (RTF 2–6, WER 8–12%) və ya Google Cloud ASR + diarization. Məxfilik üçün (zənglər serverə getmir) — cihazda Whisper. Diarization dəqiqliyi: 80–90% DER.

Səs köməkçiləri — Siri (SFSpeechRecognizer), Google Assistant (Android SpeechRecognizer), Alexa (on-device ASR). Xüsusi köməkçi: ASR → NLU (Təbii Dilin Anlaşılması) → Fəaliyyət → TTS. ASR — ilk mərhələ — bütün zəncirin dəqiqliyini müyyənləşdirir. NLU üçün RASA, Snips NLU (on-device) və ya Cloud NLU (Dialogflow, Amazon Lex) istifadə edin. TTS üçün: Android TTS / iOS AVSpeechSynthesizer. On-device səs köməkçisi (Vosk + RASA + TTS) — tamamilə özəl, internet olmadan işləyir, sorğu üzrə gecikmə < 2 saniyə.

kotlin
// Android SpeechRecognizer + TTS ilə səs köməkçisi
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)
    }
})

Motor məhdudiyyəti olan şəxslər üçün Accessibility — Speech Recognition tətbiqi səslə idarə etməyə imkan verir: kontaktları açmaq, mesaj göndərmək, nömrə yığmaq. Android Voice Access və iOS Switch Control + VoiceOver — qurulmuş həllərdir. Xüsusi tətbiq üçün: sabit əmr dəsti ilə GrammarRecogniser (Vosk) (50–100 ifadə) — RTF 0.1–0.3, 99% dəqiqlik. Vosk Grammar qrammatikanı BNF formatında təyin etməyə imkan verir. Accessibility üçün sürət kritikdir — Vosk Grammar sərbəst tanımadan 5x daha sürətlidir və daha az batareya sərf edir.

Tez-tez verilən suallar

Səs-külüklü mühitdə nitq tanıma dəqiqliyini necə yaxşılaşdırmaq olar?

Səs-küyün baskılanmasından (WebRTC NS — Android-də qurulmuş, iOS AVAudioSession) istifadə edin. Nitq olmayan hissələri kəsmək üçün VAD tətbiq edin. Beamforming (istiqamətli yazı) və ya çox mikrofonlu massiv vasitəsilə mikrofonla SNR-ni artırın. Whisper səs-küyə daha davamlıdır (səs-külüklə 680K saat üzrə təlim edilmişdir). WebRTC vasitəsilə səs-küyün azaldılması ilə Vosk 50 dB səs-küdə +5% WER verir. İstehsal üçün tətbiqinizin səs-küç şəraitində test edilməsindən istifadə edin.

iOS-da internet olmadan nitq tanımaq mümkündür?

Bəli, iOS 17-dən SFSpeechRecognizer on-device rejimini dəstəkləyir (requiresOnDeviceRecognition = true). iOS 16 və daha köhnədə on-device mövcud deyil — Siri/Gboard ASR üçün internet tələb olunur. Alternativlər: C++ wrapper vasitəsilə Vosk (offline, WER 12–15%), Whisper Core ML (offline, WER 6–10%, latency 2–6x). iOS 16- üçün səs daxil etmə üçün Vosk istifadə edin. Whisper Core ML — audio faylların transkripsiyası üçün (real vaxt deyil). Bütün həllər tamamilə özəldir və internet olmadan işləyir.

Android SpeechRecognizer hansı dilləri dəstəkləyir?

Android SpeechRecognizer RecognizerIntent.EXTRA_LANGUAGE vasitəsilə 60+ dili dəstəkləyir. Tam siyahı cihazda Locale.getAvailableLocales() ilə müyyənləşdirilir. Rus, ingilis, alman, fransız, ispan, italyan — həmişə mövcuddur. Çin, yapon, koreya — modeldən asılıdır. On-device rejimi (Android 10+) — 20+ dil. Vosk (20 dil) və SFSpeechRecognizer-dən (60 dil) fərqli olaraq, Android SpeechRecognizer Google Play Services versiyasından asılıdır.

Müəyyən bir sahə (tibb, hüquq) üçün nitq tanımanı necə qurmaq olar?

Model adaptation istifadə edin: 100+ saat sahə audio üzərində Whisper fine-tuning (Hugging Face Trainer). Vosk — Dil Modelinin (ARPA formatı) sahə mətn korpusu (100K+ cümle) ilə əvəz edilməsi. Google Cloud ASR — phrase hints (sahə sözləri, DL=0/1/2). SFSpeechRecognizer — contextualStrings (ipucu sözlər massivi) ilə SFSpeechRecognitionTaskDelegate. Domain adaptation spesifik terminologiya üçün WER-i 15–30% artırır. Minimum: transkripsiyalarla 500 sahə audio faylı.

ASR üçün WER (Word Error Rate) necə hesablanır?

WER = (S + D + I) / N, burada S — substitutions (əvəzləmələr), D — deletions (silinmələr), I — insertions (əlavələr), N — istinad mətnindəki sözlərin sayı. Nümunə: istinad = „salam necəsən“, proqnoz = „salam nə edirsən“ → S=1 (necəsən→edirsən), D=1 (necə silindi?), I=0 → WER = 2/3 = 66%. Hesablama üçün jiwer (Python) və ya WER Calculator (JavaScript) kitabxanasından istifadə edin. CER — oxşar, simvol səviyyəsində. Rus dili üçün CER WER-dən 20–30% aşağıdır, sözlərin uzunluğu səbəbindən.

Xülasə

  • Speech Recognition (ASR) — CTC/RNNT/Transformer modelləri vasitəsilə audionun mətnə çevrilməsi
  • Android SpeechRecognizer — 60+ dil, cloud + on-device (Android 10+), WER 8–15%
  • SFSpeechRecognizer (iOS) — 60+ dil, iOS 17-dən on-device, WER 7–14%
  • Vosk — offline ASR, 20+ dil, RTF 0.3–0.8, WER 9–13%
  • Whisper — ən dəqiq ASR (WER 6% EN), 99 dil, lakin real vaxt üçün ağır
  • On-device — məxfilik, internet olmadan, Vosk/Whisper Core ML
  • Tətbiq — səs daxil etmə, transkripsiya, köməkçilər, accessibility

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun