Speech Recognition (ASR) — τεχνολογία αυτόματης αναγνώρισης ομιλίας που μετατρέπει το ηχητικό σήμα σε σειρά κειμένου. Τα σύγχρονα συστήματα χρησιμοποιούν deep learning: ο encoder (Conformer, Whisper, BiLSTM + CTC) μετατρέπει το φασματογράφημα ήχου σε σειρά κρυφών καταστάσεων, ο decoder (CTC greedy decoding, Beam Search, Transformer decoder) σχηματίζει κείμενο. Σε εφαρμογές κινητών, το Speech Recognition χρησιμοποιείται για φωνητική είσοδο, φωνητικούς βοηθούς, αυτόματη μεταγραφή κλήσεων και λειτουργίες προσβασιμότητας για άτομα με κινητικές δυσκολίες. Σύμφωνα με το Google Cloud Speech-to-Text, 2025, το cloud ASR πετυχαίνει WER 7% για τα αγγλικά και 12% για τα ρωσικά σε SNR > 15 dB.
Βασικά σημεία
Automatic Speech Recognition (ASR) — pipeline: audio → προεπεξεργασία (16 kHz mono, μείωση θορύβου, VAD) → εξαγωγή χαρακτηριστικών (MFCC, LogMel FilterBank) → ακουστικό μοντέλο (CTC / RNNT / Transducer) → γλωσσικό μοντέλο (LM) → αποκωδικοποίηση (κείμενο).
ASR αρχιτεκτονικές για κινητές συσκευές: CTC — γρήγορη, χρησιμοποιείται σε Vosk, Android native. RNNT — streaming ASR, χαμηλή καθυστέρηση. Conformer — υβριδικό CNN + Transformer, καλύτερη ακρίβεια, αλλά βαρύτερο.
Μετρικές ASR: WER (Word Error Rate) — ποσοστό αντικατασταμένων, διαγραφέντων, εισαγόμενων λέξεων. Google Cloud ASR — 7% WER (EN), 12% (RU). Vosk — 13% (RU), 9% (EN).
| Λύση ASR | WER (EN) | WER (RU) | RTF | On-device |
|---|---|---|---|---|
| Google Cloud ASR | 7% | 12% | 0.3 | Όχι |
| Android SpeechRecognizer | 8% | 13% | 0.5–1 | Ναί |
| SFSpeechRecognizer | 7% | 12% | 0.3–0.8 | Ναί |
| Vosk (vosk-model-small-ru) | 9% | 13% | 0.3–0.8 | Ναί |
| Whisper Small | 6% | 10% | 2–6 | Ναί |
VAD (Voice Activity Detection) — ανίχνευση φωνητικής δραστηριότητας, διαχωρισμός ομιλίας από σιωπή και θόρυβο.
Android SpeechRecognizer — ενσωματωμένη κλάση στο Android SDK για αναγνώριση ομιλίας. Λειτουργεί σε δύο λειτουργίες: cloud (διακομιστής Google) — υψηλή ακρίβεια, απαιτεί διαδίκτυο; on-device (από Android 10+) — ενσωματωμένο μοντέλο ASR GBoard, 20+ γλώσσες, WER 15–18%.
// Αναγνώριση φωνής 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)
SFSpeechRecognizer — πλαίσιο Apple για αναγνώριση ομιλίας σε iOS, macOS, watchOS. Διαθέσιμο από iOS 10. On-device λειτουργία — από iOS 17. Υποστηρίζει 60+ γλώσσες.
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 — βιβλιοθήκη ASR ανοικτού κώδικα από Alpha Cephei για offline αναγνώριση ομιλίας. Βασισμένη σε Kaldi ASR toolkit + CTC μοντέλα. Υποστηρίζει 20+ γλώσσες.
// 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")
}
}
Whisper — μοντέλο OpenAI για αναγνώριση ομιλίας, εκπαιδευμένο σε 680.000 ώρες audio (πολυγλωσσικό, 99 γλώσσες).
// 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) // τελικό κείμενο με χρονοσφραγίδες
}
Φωνητική είσοδος κειμένου — η πιο μαζική εφαρμογή ASR. Μεταγραφή κλήσεων και συναντήσεων — ASR για αυτόματη δημιουργία στενογραμήματος. Φωνητικοί βοηθοί — Siri, Google Assistant, Alexa. Προσβασιμότητα — έλεγχος εφαρμογής με φωνή μέσω GrammarRecogniser (Vosk).
// Φωνητικός βοηθός με 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 για κοπή μη ομιλούμενων μερών. To Whisper είναι πιο ανθεκτικό στον θόρυβο.
Ναί, από iOS 17 το SFSpeechRecognizer υποστηρίζει on-device λειτουργία. Εναλλακτικές: Vosk (offline), Whisper Core ML (offline).
Υποστηρίζει 60+ γλώσσες μέσω RecognizerIntent.EXTRA_LANGUAGE.
Χρησιμοποιήστε προσαρμογή μοντέλου: Whisper fine-tuning, Vosk — αντικατάσταση γλωσσικού μοντέλου.
WER = (S + D + I) / N. Χρησιμοποιήστε jiwer (Python) ή WER Calculator (JavaScript).
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης