Speech Recognition — какво е, технологии и принцип на работа

Автор: IT Sectr Публикувано: 2026-07-19 Време за четене: 10 мин

Speech Recognition (ASR) — технология за автоматично разпознаване на реч, която преобразува аудио сигнал в текстова последователност. Съвременните системи използват deep learning: енкодер (Conformer, Whisper, BiLSTM + CTC) преобразува спектрограмата на аудиото в последователност от скрити състояния, декодер (CTC greedy decoding, Beam Search, Transformer decoder) формира текст. В мобилните приложения Speech Recognition се използва за гласов вход, гласови асистенти, автоматичен препис на обаждания и функции за достъпност за хора с моторни ограничения. Според Google Cloud Speech-to-Text, 2025, облачният ASR постига WER 7% за английски език и 12% за руски при SNR > 15 dB.

Основни моменти

  • Speech Recognition — преобразуване на реч в текст (ASR) чрез невронни мрежи
  • Android SpeechRecognizer — on-device + облачен ASR, 60+ езика, 7–12% WER
  • SFSpeechRecognizer — нативно разпознаване на iOS, on-device от iOS 17
  • Vosk — офлайн ASR, 20+ езика, 0.5–1.5x закъснение на реално време, 13% WER руски
  • Whisper — ASR от OpenAI, on-device чрез Core ML / TFLite, многоезичен

Какво е Speech Recognition: принципи на ASR

Automatic Speech Recognition (ASR) — тръбопровод: аудио → предобработка (16 kHz mono, намаляване на шум, VAD) → извличане на характеристики (MFCC, LogMel FilterBank) → акустичен модел (CTC / RNNT / Transducer) → езиков модел (LM) → декодиране (текст).

ASR архитектури за мобилни устройства: CTC — бърза, използва се в Vosk, Android native. RNNT — потоков ASR, ниско закъснение. Conformer — хибрид CNN + Transformer, най-добра точност.

ASR РешениеWER (EN)WER (RU)RTFOn-device
Google Cloud ASR7%12%0.3Не
Android SpeechRecognizer8%13%0.5–1Да
SFSpeechRecognizer7%12%0.3–0.8Да
Vosk (vosk-model-small-ru)9%13%0.3–0.8Да
Whisper Small6%10%2–6Да

Android SpeechRecognizer API

Android SpeechRecognizer — вграден клас в Android SDK за разпознаване на реч. Работи в два режима: облачен (Google сървър) — висока точност, изисква интернет; on-device (от Android 10+) — вграден ASR модел на GBoard, 20+ езика, WER 15–18%.

kotlin
// Разпознаване на реч 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)

iOS SFSpeechRecognizer и Speech Framework

SFSpeechRecognizer — рамка на Apple за разпознаване на реч на iOS, macOS, watchOS. Наличен от iOS 10. On-device режим — от iOS 17. Подкрепя 60+ езика.

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: офлайн разпознаване на 20+ езика

Vosk — ASR библиотека с отворен код от Alpha Cephei за офлайн разпознаване на реч. Базира се на Kaldi ASR toolkit + CTC модели. Подкрепя 20+ езика.

kotlin
// Vosk офлайн 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 аудио
    audioRecord.read(buffer, 0, buffer.size)
    if (recognizer.acceptWaveform(buffer)) {
        val result = recognizer.result // JSON
        text += JSONObject(result).getString("text")
    }
}

Whisper OpenAI на мобилни устройства

Whisper — модел на OpenAI за разпознаване на реч, обучен на 680 000 часа аудио (многоезичен, 99 езика). Наличен в размери: tiny (39M), small (244M), medium (769M).

swift
// Whisper Core ML на 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) // краен текст с времеви отпечатъци
}

Приложение на Speech Recognition в мобилни приложения

Гласов вход на текст — най-масовото приложение на ASR. Препис на обаждания и срещи — ASR за автоматично създаване на стенограми. Гласови асистенти — Siri, Google Assistant, Alexa. Достъпност — управление на приложението с глас чрез GrammarRecogniser (Vosk).

kotlin
// Гласов асистент с 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)
    }
})

Често задавани въпроси

Как да подобря точността на разпознаването на реч в шумна среда?

Използвайте подавяне на шум (WebRTC NS). Приложете VAD за премахване на неречеви части. Whisper е по-устойчив на шум.

Мога ли да разпознавам реч без интернет на iOS?

Да, от iOS 17 SFSpeechRecognizer подкрепя on-device режим. Алтернативи: Vosk (offline), Whisper Core ML (offline).

Какви езици подкрепя Android SpeechRecognizer?

Подкрепя 60+ езика чрез RecognizerIntent.EXTRA_LANGUAGE.

Как да настроя разпознаването на реч за конкретна област?

Използвайте адаптация на модела: Whisper fine-tuning, Vosk — смяна на езиковия модел.

Как се изчислява WER за ASR?

WER = (S + D + I) / N. Използвайте jiwer (Python) или WER Calculator (JavaScript).

Резюме

  • Speech Recognition (ASR) — преобразуване на аудио в текст чрез CTC/RNNT/Transformer
  • Android SpeechRecognizer — 60+ езика, облачен + on-device, WER 8–15%
  • SFSpeechRecognizer (iOS) — 60+ езика, on-device от iOS 17, WER 7–14%
  • Vosk — офлайн ASR, 20+ езика, RTF 0.3–0.8, WER 9–13%
  • Whisper — най-точен ASR (WER 6% EN), 99 езика
  • On-device — поверителност, без интернет, Vosk/Whisper Core ML
  • Приложение — гласов вход, препис, асистенти, достъпност

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също