Speech Recognition — wat is het, technologieën en werkingsprincipe

Auteur: IT Sectr Gepubliceerd: 2026-07-19 Leestijd: 10 min

Speech Recognition (ASR) — technologie voor automatische spraakherkenning die een audiosignaal omzet in een tekstreeks. Moderne systemen gebruiken deep learning: een encoder (Conformer, Whisper, BiLSTM + CTC) zet het audiospectrogram om in een reeks verborgen toestanden, een decoder (CTC greedy decoding, Beam Search, Transformer decoder) vormt de tekst. In mobiele apps wordt Speech Recognition gebruikt voor spraakinvoer, spraakassistenten, automatische transcriptie van gesprekken en toegankelijkheidsfuncties voor mensen met motorische beperkingen. Volgens Google Cloud Speech-to-Text, 2025 bereikt cloud-ASR een WER van 7% voor Engels en 12% voor Russisch bij SNR > 15 dB.

Belangrijkste punten

  • Speech Recognition — spraak omzetten in tekst (ASR) met behulp van neurale netwerken
  • Android SpeechRecognizer — on-device + cloud ASR, 60+ talen, 7–12% WER
  • SFSpeechRecognizer — native iOS-herkenning, on-device vanaf iOS 17
  • Vosk — offline ASR, 20+ talen, 0.5–1.5x real-time latency, 13% WER Russisch
  • Whisper — ASR van OpenAI, on-device via Core ML / TFLite, meertalig

Wat is Speech Recognition: principes van ASR

Automatic Speech Recognition (ASR) — pipeline: audio → voorverwerking (16 kHz mono, ruisonderdrukking, VAD — spraakactiviteit) → kenmerkextractie (MFCC, LogMel FilterBank) → akoestisch model (neuraal netwerk: CTC / RNNT / Transducer) → taalmodel (LM) → decodering (tekst). Moderne end-to-end modellen (Whisper, Google USM, Conformer CTC) combineren het akoestische en taalmodel in één Transformer, wat de pipeline vereenvoudigt en de nauwkeurigheid verhoogt.

ASR-architecturen voor mobiele apparaten: CTC (Connectionist Temporal Classification) — snel, vereist geen uitlijning van audio en tekst, gebruikt in Vosk, Android native. RNNT (Recurrent Neural Network Transducer) — streaming ASR, lage latentie (Google USM). Conformer — hybride CNN + Transformer, beste nauwkeurigheid, maar zwaarder: Whisper Medium (769M parameters) — 30–60x latentie. Voor on-device heeft CTC de voorkeur: Vosk CTC-modellen nemen 50–100 MB in beslag, latentie 0.3–0.8x real-time.

ASR-metrics: WER (Word Error Rate) — percentage vervangen, verwijderde, ingevoegde woorden ten opzichte van de referentie. Google Cloud ASR — 7% WER (EN), 12% (RU). Vosk — 13% (RU), 9% (EN). Whisper Small — 6% (EN), 10% (RU). CER (Character Error Rate) — analoog, op teken niveau. Real-Time Factor (RTF) — verwerkingstijd / audioduur. RTF < 1 — sneller dan real-time. RTF < 0.3 — real-time ASR. Voor spraakinvoer is RTF < 1 nodig, voor transcriptie RTF < 3.

ASR OplossingWER (EN)WER (RU)RTFOn-device
Google Cloud ASR7%12%0.3Nee
Android SpeechRecognizer8%13%0.5–1Ja (gemengd)
SFSpeechRecognizer7%12%0.3–0.8Ja (vanaf iOS 17)
Vosk (vosk-model-small-ru)9%13%0.3–0.8Ja
Whisper Small6%10%2–6Ja

VAD (Voice Activity Detection) — detectie van spraakactiviteit, scheiding van spraak van stilte en ruis. WebRTC VAD — standaard voor mobiele ASR: 30 ms frames, drie modi (0, 1, 2 — van conservatief tot agressief). VAD vermindert RTF met 1.5–3x (slaat niet-spraakdelen over). Silero VAD (MIT) — VAD op basis van een neuraal netwerk, nauwkeuriger dan WebRTC (94% vs 85% ROC AUC), 5–10 ms latentie, TFLite en Core ML. Gebruik voor productie-ASR de cascade VAD → ASR: dit vermindert valse detecties en versnelt de verwerking.

Android SpeechRecognizer API

Android SpeechRecognizer — ingebouwde klasse in de Android SDK voor spraakherkenning. Werkt in twee modi: cloud (Google-server) — hoge nauwkeurigheid, vereist internet; on-device (vanaf Android 10+) — ingebouwd ASR-model van GBoard, 20+ talen, WER 15–18%. SpeechRecognizer retourneert tussentijdse resultaten tijdens het spreken en de uiteindelijke tekst. Ondersteunt 60+ talen via RecognizerIntent.EXTRA_LANGUAGE. Aanbevolen voor spraakinvoer — snelle integratie, gratis.

SpeechRecognizer API: aanmaken via SpeechRecognizer.createSpeechRecognizer(context). Intent met RecognizerIntent.ACTION_RECOGNIZE_SPEECH met extra: LANGUAGE_MODEL_FREE_FORM (vrije tekst) of LANGUAGE_MODEL_WEB_SEARCH (zoekopdrachten). Resultaat via RecognitionListener: onReadyForSpeech → onBeginningOfSpeech → onRmsChanged → onPartialResults → onResults. Voor continue herkenning (modus „altijd luisteren“) — herstart de recognizer na onResults. Gebruik onDeviceOnly = true om batterij te sparen.

kotlin
// Android SpeechRecognizer spraakherkenning
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 in Android: on-device werkt zonder internet (Android 10+, Pixel 4+, Samsung S20+). De cloud is nauwkeuriger (Google Neural Network ASM Model), maar heeft een hogere latentie (300–800 ms met netwerk). Gebruik voor spraakinvoer een hybride: cloud met fallback naar on-device bij geen netwerk. Stel voor maximale privacy onDeviceOnly = true in (maar nauwkeurigheid 15–18% WER voor Russisch).

iOS SFSpeechRecognizer en Speech Framework

SFSpeechRecognizer — Apple-framework voor spraakherkenning op iOS, macOS, watchOS. Beschikbaar vanaf iOS 10. On-device modus — vanaf iOS 17 (lokaal model, zonder internet). Ondersteunt 60+ talen. Nauwkeurigheid: WER 7–12% (on-device — 12–15%). SFSpeechRecognizer is beschikbaar via Speech.framework — vereist geen extra SDK’s. Toestemmingsverzoek via SFSpeechRecognizer.requestAuthorization.

SFSpeechRecognizer API: SFSpeechRecognizer(locale: Locale(identifier: "ru_RU")) → SFSpeechAudioBufferRecognitionRequest (live audio) of SFSpeechURLRecognitionRequest (audiobestand). Streaming via recognitionTask(with:delegate:) met SFSpeechRecognitionTaskDelegate (didHypothesizeTranscription — gedeeltelijk, didFinishRecognition — definitief). On-device modus: request.requiresOnDeviceRecognition = true. Voor iOS 15+: request.shouldReportPartialResults = true (streaming resultaat met lage latentie).

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 heeft native streaming zonder herstart (Android vereist opnieuw startListening). On-device op iOS is beschikbaar vanaf iOS 17 (Android — vanaf Android 10). Beide vereisen gebruikers- toes temming. SFSpeechRecognizer is nauwkeuriger voor Engels (on-device), Android SpeechRecognizer nauwkeuriger voor Russisch (cloud). Voor iOS pre-17 is on-device niet beschikbaar — internet vereist.

Vosk: offline herkenning in 20+ talen

Vosk — open-source ASR-bibliotheek van Alpha Cephei voor offline spraakherkenning. Gebaseerd op Kaldi ASR toolkit + CTC-modellen. Ondersteunt 20+ talen: Russisch, Engels, Duits, Frans, Spaans, Chinees, Arabisch. Modellen van 50 MB (small — 50 MB, ru) tot 1.2 GB (large — 1.2 GB, en). Vosk werkt op Android (JNI), iOS (C++ wrapper), Linux, Windows, Raspberry Pi. RTF: 0.3–0.8 op flagship apparaten. Vosk — de beste keuze voor volledige offline ASR.

Vosk API: VoskWaveformModelLoader (model laden) → VoskWaveformRecognizer (herkenner aanmaken) → recognizer.createGrammar(list) of recognizer.getResult() / recognizer.getPartialResult(). Ondersteuning voor grammatica’s (beperkte commando set) — GrammarRecogniser — geeft RTF 0.1–0.3 (3x sneller). Gebruik voor spraakinvoer vrije herkenning (getResult). Voor spraakopdrachten — GrammarRecogniser (99% nauwkeurigheid voor opdrachten).

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 is volledig offline — privacy, nul latentie, gratis. De cloud (Google, Yandex) is nauwkeuriger in complexe scenario’s (ruis, accent) — WER 3–5% lager. Vosk is ideaal voor: spraakinvoer zonder internet, toegankelijkheidsapps, transcriptie van gesprekken (privacy). Cloud ASR — voor spraakassistenten waar nauwkeurigheid belangrijker is dan privacy.

Whisper OpenAI op mobiele apparaten

Whisper — OpenAI-model voor spraakherkenning, getraind op 680.000 uur audio (meertalig, 99 talen). Beschikbaar in formaten: tiny (39M, WER 10% EN, 15% RU), small (244M, WER 6% EN, 10% RU), medium (769M, WER 4.5% EN, 8% RU). Whisper werkt op mobiele apparaten via Core ML (iOS, ANE) en TFLite (Android, GPU). Whisper tiny: RTF 4–10 op CPU, RTF 0.5–2 op GPU (Android). Whisper small: RTF 2–6 op GPU. Whisper medium — RTF 8–15, alleen voor non-real-time.

Whisper op iOS (Core ML): Apple MLX Whisper — implementatie van Whisper voor Core ML en MLX (Apple Neural Engine). Whisper tiny Core ML op iPhone 15 Pro: RTF 0.3–0.8 (sneller dan real-time!). Whisper small Core ML: RTF 1–3. Voor streaming gebruik WhisperStitcher. Whisper op iOS — de meest nauwkeurige on-device ASR (WER 6% EN, 10% RU).

swift
// Whisper Core ML op iOS
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) // eindtekst met tijdstempels
}

Whisper vs Vosk: Whisper is nauwkeuriger (6% vs 9% WER EN), ondersteunt 99 talen, inclusief taaldetectie, interpunctie, emotieherkenning. Whisper is zwaarder (39M–769M vs 50M Vosk), langzamer in real-time (RTF 0.5–6 vs 0.3–0.8). Vosk is lichter, sneller, beter voor real-time streaming. Whisper — voor eenmalige transcriptie waar nauwkeurigheid prioriteit heeft. Vosk — voor real-time spraakinvoer.

Toepassing van Speech Recognition in mobiele apps

Spraakinvoer van tekst — de meest massale toepassing van ASR: dicteren van berichten, zoekopdrachten, notities. Vereiste: RTF < 1 (real-time), tussentijdse resultaten. Gebruik voor aangepaste implementatie Android SpeechRecognizer / SFSpeechRecognizer. Voor maximale nauwkeurigheid — Cloud ASR + Vosk fallback.

Transcriptie van gesprekken en vergaderingen — ASR voor automatisch maken van stenogrammen. Whisper Small + pyannote-audio — standaard stack. Op iOS — Whisper Core ML. Op Android — Whisper TFLite of Google Cloud ASR.

Spraakassistenten — Siri, Google Assistant, Alexa. Aangepaste assistent: ASR → NLU → Actie → TTS. On-device spraakassistent (Vosk + RASA + TTS) — volledig privé, werkt zonder internet.

kotlin
// Spraakassistent met Android SpeechRecognizer + TTS
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)
    }
})

Toegankelijkheid voor mensen met motorische beperkingen — spraakbesturing van de app via GrammarRecogniser (Vosk) met vaste commandoset (50–100 zinnen) — RTF 0.1–0.3, 99% nauwkeurigheid.

Veelgestelde vragen

Hoe verbeter ik de nauwkeurigheid van spraakherkenning in een lawaaierige omgeving?

Gebruik ruisonderdrukking (WebRTC NS — ingebouwd in Android, iOS AVAudioSession). Pas VAD toe om niet-spraak fragmenten weg te snijden. Whisper is beter bestand tegen ruis. Vosk met ruisonderdrukking via WebRTC geeft +5% WER bij 50 dB ruis.

Kan ik spraak herkennen zonder internet op iOS?

Ja, vanaf iOS 17 ondersteunt SFSpeechRecognizer de on-device modus. Op iOS 16 en ouder is on-device niet beschikbaar. Alternatieven: Vosk (offline, WER 12–15%), Whisper Core ML (offline, WER 6–10%). Alle oplossingen zijn volledig privé en werken zonder internet.

Welke talen ondersteunt Android SpeechRecognizer?

Android SpeechRecognizer ondersteunt 60+ talen via RecognizerIntent.EXTRA_LANGUAGE. Russisch, Engels, Duits, Frans, Spaans, Italiaans — altijd beschikbaar. On-device modus (Android 10+) — 20+ talen.

Hoe stel ik spraakherkenning in voor een specifiek domein (medisch, juridisch)?

Gebruik modelaanpassing: Whisper fine-tuning op 100+ uur domein audio. Vosk — vervanging van het taalmodel (ARPA-formaat) door domein tekstcorpus. Google Cloud ASR — phrase hints. Domeinaanpassing verhoogt de nauwkeurigheid met 15–30% WER.

Hoe bereken ik WER (Word Error Rate) voor ASR?

WER = (S + D + I) / N, waarbij S — substitutions, D — deletions, I — insertions, N — aantal woorden in de referentietekst. Gebruik jiwer (Python) of WER Calculator (JavaScript) voor de berekening. CER — analoog, op teken niveau.

Samenvatting

  • Speech Recognition (ASR) — audio omzetten in tekst via CTC/RNNT/Transformer modellen
  • Android SpeechRecognizer — 60+ talen, cloud + on-device (Android 10+), WER 8–15%
  • SFSpeechRecognizer (iOS) — 60+ talen, on-device vanaf iOS 17, WER 7–14%
  • Vosk — offline ASR, 20+ talen, RTF 0.3–0.8, WER 9–13%
  • Whisper — meest nauwkeurige ASR (WER 6% EN), 99 talen, maar zwaar voor real-time
  • On-device — privacy, zonder internet, Vosk/Whisper Core ML
  • Toepassing — spraakinvoer, transcriptie, assistenten, toegankelijkheid

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook