Speech Recognition — vad är det, tekniker och funktionsprincip

Författare: IT Sectr Publicerad: 2026-07-19 Lästid: 10 min

Speech Recognition (ASR) — teknik för automatisk taligenkänning som omvandlar en ljudsignal till en textsekvens. Moderna system använder deep learning: en encoder (Conformer, Whisper, BiLSTM + CTC) omvandlar ljudspektrogrammet till en sekvens av dolda tillstånd, en decoder (CTC greedy decoding, Beam Search, Transformer decoder) bildar text. I mobila applikationer används Speech Recognition för röstinmatning, röstassistenter, automatisk transkribering av samtal och tillgänglighetsfunktioner för personer med motoriska begränsningar. Enligt Google Cloud Speech-to-Text, 2025 når moln-ASR WER på 7% för engelska och 12% för ryska vid SNR > 15 dB.

Huvudpunkter

  • Speech Recognition — omvandling av tal till text (ASR) med hjälp av neurala nätverk
  • Android SpeechRecognizer — on-device + moln ASR, 60+ språk, 7–12% WER
  • SFSpeechRecognizer — inbyggd iOS-igenkänning, on-device från iOS 17
  • Vosk — offline ASR, 20+ språk, 0.5–1.5x realtidsfördröjning, 13% WER ryska
  • Whisper — ASR från OpenAI, on-device via Core ML / TFLite, flerspråkig

Vad är Speech Recognition: principer för ASR

Automatic Speech Recognition (ASR) — pipeline: ljud → förbehandling (16 kHz mono, brusreducering, VAD — talaktivitet) → extrahering av egenskaper (MFCC, LogMel FilterBank) → akustisk modell (neuralt nätverk: CTC / RNNT / Transducer) → språkmodell (LM) → avkodning (text). Moderna end-to-end-modeller (Whisper, Google USM, Conformer CTC) kombinerar den akustiska och språkliga modellen i en enda Transformer.

ASR-arkitekturer för mobila enheter: CTC — snabb, används i Vosk, Android native. RNNT — streaming ASR, låg fördröjning. Conformer — hybrid CNN + Transformer, bästa noggrannhet.

ASR-metrik: WER (Word Error Rate) — procentandel utbytta, borttagna, infogade ord. Google Cloud ASR — 7% WER (EN), 12% (RU). Vosk — 13% (RU), 9% (EN).

ASR-lösningWER (EN)WER (RU)RTFOn-device
Google Cloud ASR7%12%0.3Nej
Android SpeechRecognizer8%13%0.5–1Ja
SFSpeechRecognizer7%12%0.3–0.8Ja
Vosk (vosk-model-small-ru)9%13%0.3–0.8Ja
Whisper Small6%10%2–6Ja

Android SpeechRecognizer API

Android SpeechRecognizer — inbyggd klass i Android SDK för taligenkänning. Fungerar i två lägen: moln (Google-server) — hög noggrannhet, kräver internet; on-device (från Android 10+) — inbyggd ASR-modell i GBoard, 20+ språk, WER 15–18%. Stödjer 60+ språk via RecognizerIntent.EXTRA_LANGUAGE.

kotlin
// Android SpeechRecognizer taligenkänning
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)

iOS SFSpeechRecognizer och Speech Framework

SFSpeechRecognizer — Apple-ramverk för taligenkänning på iOS, macOS, watchOS. Tillgängligt från iOS 10. On-device-läge — från iOS 17. Stödjer 60+ språk.

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()

Vosk: offline-igenkänning på 20+ språk

Vosk — ASR-bibliotek med öppen källkod från Alpha Cephei för offline taligenkänning. Baserat på Kaldi ASR toolkit + CTC-modeller. Stödjer 20+ språk.

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 ljud
    audioRecord.read(buffer, 0, buffer.size)
    if (recognizer.acceptWaveform(buffer)) {
        val result = recognizer.result // JSON
        text += JSONObject(result).getString("text")
    }
}

Whisper OpenAI på mobila enheter

Whisper — OpenAI-modell för taligenkänning, tränad på 680 000 timmar ljud (flerspråkig, 99 språk). Tillgänglig i storlekar: tiny (39M), small (244M), medium (769M).

swift
// Whisper Core ML på 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) // sluttext med tidsstämplar
}

Tillämpning av Speech Recognition i mobila appar

Röstinmatning av text — den mest massiva tillämpningen av ASR. Transkribering av samtal och möten — ASR för automatisk skapande av stenogram. Röstassistenter — Siri, Google Assistant, Alexa. Tillgänglighet — styrning av appen med rösten via GrammarRecogniser (Vosk).

kotlin
// Röstassistent med 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)
    }
})

Vanliga frågor

Hur förbättrar jag noggrannheten för taligenkänning i en bullrig miljö?

Använd brusreducering (WebRTC NS). Tillämpa VAD för att klippa bort icke-tal delar. Whisper är mer motståndskraftigt mot buller.

Kan jag känna igen tal utan internet på iOS?

Ja, från iOS 17 stödjer SFSpeechRecognizer on-device-läge. Alternativ: Vosk (offline), Whisper Core ML (offline).

Vilka språk stödjer Android SpeechRecognizer?

Stödjer 60+ språk via RecognizerIntent.EXTRA_LANGUAGE.

Hur konfigurerar jag taligenkänning för en specifik domän?

Använd modellanpassning: Whisper fine-tuning, Vosk — byte av språkmodell.

Hur beräknar jag WER för ASR?

WER = (S + D + I) / N. Använd jiwer (Python) eller WER Calculator (JavaScript).

Sammanfattning

  • Speech Recognition (ASR) — omvandling av ljud till text via CTC/RNNT/Transformer-modeller
  • Android SpeechRecognizer — 60+ språk, moln + on-device, WER 8–15%
  • SFSpeechRecognizer (iOS) — 60+ språk, on-device från iOS 17, WER 7–14%
  • Vosk — offline ASR, 20+ språk, RTF 0.3–0.8, WER 9–13%
  • Whisper — mest exakta ASR (WER 6% EN), 99 språk
  • On-device — integritet, utan internet, Vosk/Whisper Core ML
  • Användning — röstinmatning, transkribering, assistenter, tillgänglighet

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet

Läs också