Speech Recognition (ASR) — teknolohiya ng awtomatikong pagkilala ng pagsasalita na nagko-convert ng audio signal sa pagkakasunod-sunod ng teksto. Ang mga modernong sistema ay gumagamit ng deep learning: encoder (Conformer, Whisper, BiLSTM + CTC) nagko-convert ng audio spectrogram sa pagkakasunod-sunod ng mga nakatagong estado, decoder (CTC greedy decoding, Beam Search, Transformer decoder) bumubuo ng teksto. Sa mga mobile app, ang Speech Recognition ay ginagamit para sa voice input, mga voice assistant, awtomatikong transkripsyon ng mga tawag at mga function ng accessibility para sa mga taong may limitasyon sa motor. Ayon sa Google Cloud Speech-to-Text, 2025, ang cloud ASR ay umaabot ng WER 7% para sa Ingles at 12% para sa Ruso sa SNR > 15 dB.
Mga Pangunahing Punto
Automatic Speech Recognition (ASR) — pipeline: audio → preprocessing (16 kHz mono, ingay reduction, VAD) → feature extraction (MFCC, LogMel FilterBank) → acoustic model (neural network: CTC / RNNT / Transducer) → language model (LM) → decoding (text). Ang mga modernong end-to-end models (Whisper, Google USM, Conformer CTC) ay pinagsasama ang acoustic at language model sa isang Transformer.
ASR architectures para sa mobile devices: CTC — mabilis, ginagamit sa Vosk, Android native. RNNT — streaming ASR, mababang latency. Conformer — hybrid CNN + Transformer, pinakamahusay na accuracy.
ASR metrics: WER (Word Error Rate) — porsyento ng pinalitan, tinanggal, isiningit na salita. Google Cloud ASR — 7% WER (EN), 12% (RU). Vosk — 13% (RU), 9% (EN).
| ASR Solution | WER (EN) | WER (RU) | RTF | On-device |
|---|---|---|---|---|
| Google Cloud ASR | 7% | 12% | 0.3 | Hindi |
| Android SpeechRecognizer | 8% | 13% | 0.5–1 | Oo |
| SFSpeechRecognizer | 7% | 12% | 0.3–0.8 | Oo |
| Vosk (vosk-model-small-ru) | 9% | 13% | 0.3–0.8 | Oo |
| Whisper Small | 6% | 10% | 2–6 | Oo |
VAD (Voice Activity Detection) — detection ng voice activity, paghihiwalay ng pagsasalita mula sa katahimikan at ingay.
Android SpeechRecognizer — built-in class sa Android SDK para sa speech recognition. Dalawang mode: cloud (Google server) — mataas na accuracy, nangangailangan ng internet; on-device (mula Android 10+) — built-in ASR model ng GBoard, 20+ wika, WER 15–18%. Sumusuporta sa 60+ wika sa pamamagitan ng RecognizerIntent.EXTRA_LANGUAGE.
// Pagkilala ng boses 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 framework para sa speech recognition sa iOS, macOS, watchOS. Available mula iOS 10. On-device mode — mula iOS 17. Sumusuporta sa 60+ wika. Accuracy: WER 7–12%.
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 — open-source ASR library mula Alpha Cephei para sa offline speech recognition. Batay sa Kaldi ASR toolkit + CTC models. Sumusuporta sa 20+ wika. Mga modelo mula 50 MB hanggang 1.2 GB.
// 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 model para sa speech recognition, sinanay sa 680,000 oras ng audio (multilingual, 99 wika). Available sa laki: tiny (39M), small (244M), medium (769M).
// Whisper Core ML sa 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) // huling teksto na may mga timestamp
}
Voice input ng text — pinaka-massive na paggamit ng ASR. Transkripsyon ng mga tawag at pagpupulong — ASR para sa awtomatikong paggawa ng stenogram. Voice assistant — Siri, Google Assistant, Alexa. Accessibility — kontrol ng app gamit ang boses sa pamamagitan ng GrammarRecogniser (Vosk).
// Voice assistant na may 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)
}
})
Mga Madalas Itanong
Gumamit ng noise suppression (WebRTC NS). Ilapat ang VAD para putulin ang non-speech parts. Whisper ay mas lumalaban sa ingay.
Oo, mula iOS 17 sinusuportahan ng SFSpeechRecognizer ang on-device mode. Alternatibo: Vosk (offline, WER 12–15%), Whisper Core ML (offline).
Sinusuportahan ang 60+ wika sa pamamagitan ng RecognizerIntent.EXTRA_LANGUAGE.
Gumamit ng model adaptation: Whisper fine-tuning, Vosk — pagpapalit ng language model.
WER = (S + D + I) / N. Gamitin ang jiwer (Python) o WER Calculator (JavaScript).
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din