Speech Recognition — apa itu, teknologi dan prinsip kerja

Penulis: IT Sectr Diterbitkan: 2026-07-19 Waktu membaca: 10 mnt

Speech Recognition (ASR) — teknologi pengenalan suara otomatis yang mengubah sinyal audio menjadi urutan teks. Sistem modern menggunakan deep learning: encoder (Conformer, Whisper, BiLSTM + CTC) mengubah spektrogram audio menjadi urutan keadaan tersembunyi, decoder (CTC greedy decoding, Beam Search, Transformer decoder) membentuk teks. Di aplikasi seluler, Speech Recognition digunakan untuk input suara, asisten suara, transkripsi otomatis panggilan, dan fungsi aksesibilitas bagi penyandang disabilitas motorik. Menurut Google Cloud Speech-to-Text, 2025, ASR cloud mencapai WER 7% untuk bahasa Inggris dan 12% untuk bahasa Rusia pada SNR > 15 dB.

Poin Utama

  • Speech Recognition — mengubah ucapan menjadi teks (ASR) menggunakan jaringan saraf
  • Android SpeechRecognizer — on-device + cloud ASR, 60+ bahasa, 7–12% WER
  • SFSpeechRecognizer — pengenalan native iOS, on-device sejak iOS 17
  • Vosk — ASR offline, 20+ bahasa, latensi 0.5–1.5x real-time, 13% WER Rusia
  • Whisper — ASR OpenAI, on-device melalui Core ML / TFLite, multibahasa

Apa itu Speech Recognition: prinsip ASR

Automatic Speech Recognition (ASR) — pipeline: audio → prapemrosesan (16 kHz mono, pengurangan kebisingan, VAD — aktivitas suara) → ekstraksi fitur (MFCC, LogMel FilterBank) → model akustik (jaringan saraf: CTC / RNNT / Transducer) → model bahasa (LM) → dekoding (teks). Model end-to-end modern (Whisper, Google USM, Conformer CTC) menggabungkan model akustik dan bahasa dalam satu Transformer, menyederhanakan pipeline dan meningkatkan akurasi.

Arsitektur ASR untuk perangkat seluler: CTC (Connectionist Temporal Classification) — cepat, tidak memerlukan penyelarasan audio dan teks, digunakan di Vosk, Android native. RNNT (Recurrent Neural Network Transducer) — ASR streaming, latensi rendah (Google USM). Conformer — hibrida CNN + Transformer, akurasi terbaik, tetapi lebih berat: Whisper Medium (769M parameter) — latensi 30–60x. Untuk on-device, CTC lebih disukai: model CTC Vosk memakan 50–100 MB, latensi 0.3–0.8x real-time.

Metrik ASR: WER (Word Error Rate) — persentase kata yang diganti, dihapus, disisipkan relatif terhadap referensi. Google Cloud ASR — 7% WER (EN), 12% (RU). Vosk — 13% (RU), 9% (EN). Whisper Small — 6% (EN), 10% (RU). Real-Time Factor (RTF) — waktu pemrosesan / durasi audio. RTF < 1 — lebih cepat dari real-time. Untuk input suara diperlukan RTF < 1, untuk transkripsi RTF < 3.

Solusi ASRWER (EN)WER (RU)RTFOn-device
Google Cloud ASR7%12%0.3Tidak
Android SpeechRecognizer8%13%0.5–1Ya (campuran)
SFSpeechRecognizer7%12%0.3–0.8Ya (sejak iOS 17)
Vosk (vosk-model-small-ru)9%13%0.3–0.8Ya
Whisper Small6%10%2–6Ya

VAD (Voice Activity Detection) — deteksi aktivitas suara, memisahkan ucapan dari keheningan dan kebisingan. WebRTC VAD — standar untuk ASR seluler: frame 30 ms, tiga mode (0, 1, 2 — dari konservatif hingga agresif). VAD mengurangi RTF 1.5–3x (melewatkan bagian non-ucapan). Silero VAD (MIT) — VAD berbasis jaringan saraf, lebih akurat dari WebRTC (94% vs 85% ROC AUC), latensi 5–10 ms, TFLite dan Core ML.

Android SpeechRecognizer API

Android SpeechRecognizer — kelas bawaan di Android SDK untuk pengenalan suara. Bekerja dalam dua mode: cloud (server Google) — akurasi tinggi, memerlukan internet; on-device (sejak Android 10+) — model ASR bawaan GBoard, 20+ bahasa, WER 15–18%. Mendukung 60+ bahasa melalui RecognizerIntent.EXTRA_LANGUAGE. Direkomendasikan untuk input suara — integrasi cepat, gratis.

API SpeechRecognizer: pembuatan melalui SpeechRecognizer.createSpeechRecognizer(context). Intent dengan RecognizerIntent.ACTION_RECOGNIZE_SPEECH dengan extra: LANGUAGE_MODEL_FREE_FORM (teks bebas) atau LANGUAGE_MODEL_WEB_SEARCH (kueri penelusuran). Hasil melalui RecognitionListener: onReadyForSpeech → onBeginningOfSpeech → onRmsChanged → onPartialResults → onResults.

kotlin
// Pengenalan suara 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)

On-device vs Cloud di Android: on-device berfungsi tanpa internet (Android 10+, Pixel 4+, Samsung S20+). Cloud lebih akurat tetapi memiliki latensi lebih tinggi. Untuk privasi maksimum — setel onDeviceOnly = true.

iOS SFSpeechRecognizer dan Speech Framework

SFSpeechRecognizer — framework Apple untuk pengenalan suara di iOS, macOS, watchOS. Tersedia sejak iOS 10. Mode on-device — sejak iOS 17 (model lokal, tanpa internet). Mendukung 60+ bahasa. Akurasi: WER 7–12% (on-device — 12–15%).

API SFSpeechRecognizer: SFSpeechRecognizer(locale:) → SFSpeechAudioBufferRecognitionRequest (audio langsung) atau SFSpeechURLRecognitionRequest (file audio). Streaming melalui recognitionTask(with:delegate:) dengan SFSpeechRecognitionTaskDelegate.

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 memiliki streaming native tanpa restart. On-device di iOS tersedia sejak iOS 17 (Android — sejak Android 10). Keduanya memerlukan izin pengguna.

Vosk: pengenalan offline di 20+ bahasa

Vosk — pustaka ASR sumber terbuka dari Alpha Cephei untuk pengenalan suara offline. Berbasis Kaldi ASR toolkit + model CTC. Mendukung 20+ bahasa: Rusia, Inggris, Jerman, Prancis, Spanyol, Mandarin, Arab. Model dari 50 MB hingga 1.2 GB. Vosk bekerja di Android (JNI), iOS (C++ wrapper), Linux, Windows, Raspberry Pi. RTF: 0.3–0.8 di perangkat flagship.

API Vosk: VoskWaveformModelLoader → VoskWaveformRecognizer → recognizer.createGrammar(list) atau recognizer.getResult() / recognizer.getPartialResult(). GrammarRecogniser memberikan RTF 0.1–0.3 (3x lebih cepat).

kotlin
// Vosk ASR offline
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 sepenuhnya offline — privasi, nol latensi, gratis. Cloud (Google, Yandex) lebih akurat dalam skenario kompleks (kebisingan, aksen) — WER 3–5% lebih rendah.

Whisper OpenAI di perangkat seluler

Whisper — model OpenAI untuk pengenalan suara, dilatih pada 680.000 jam audio (multibahasa, 99 bahasa). Tersedia dalam ukuran: tiny (39M, WER 10% EN, 15% RU), small (244M, WER 6% EN, 10% RU), medium (769M, WER 4.5% EN, 8% RU). Whisper berfungsi di perangkat seluler melalui Core ML (iOS) dan TFLite (Android). Whisper tiny Core ML di iPhone 15 Pro: RTF 0.3–0.8!

swift
// Whisper Core ML di 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) // teks akhir dengan stempel waktu
}

Whisper vs Vosk: Whisper lebih akurat (6% vs 9% WER EN), mendukung 99 bahasa, tetapi lebih berat dan lebih lambat untuk real-time. Vosk lebih ringan, lebih cepat, lebih baik untuk streaming real-time.

Penerapan Speech Recognition di aplikasi seluler

Input suara teks — penerapan ASR paling masif. Transkripsi panggilan dan pertemuan — ASR untuk pembuatan stenogram otomatis. Asisten suara — Siri, Google Assistant, Alexa. Aksesibilitas — kontrol aplikasi dengan suara melalui GrammarRecogniser (Vosk).

kotlin
// Asisten suara dengan 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)
    }
})

Pertanyaan Umum

Bagaimana cara meningkatkan akurasi pengenalan suara di lingkungan bising?

Gunakan peredam kebisingan (WebRTC NS). Terapkan VAD untuk memotong bagian non-ucapan. Whisper lebih tahan terhadap kebisingan.

Bisakah saya mengenali suara tanpa internet di iOS?

Ya, sejak iOS 17 SFSpeechRecognizer mendukung mode on-device. Alternatif: Vosk (offline), Whisper Core ML (offline).

Bahasa apa saja yang didukung Android SpeechRecognizer?

Mendukung 60+ bahasa melalui RecognizerIntent.EXTRA_LANGUAGE. Mode on-device (Android 10+) — 20+ bahasa.

Bagaimana cara mengatur pengenalan suara untuk domain tertentu?

Gunakan adaptasi model: Whisper fine-tuning, Vosk — penggantian model bahasa, Google Cloud ASR — phrase hints.

Bagaimana cara menghitung WER untuk ASR?

WER = (S + D + I) / N. Gunakan jiwer (Python) atau WER Calculator (JavaScript).

Kesimpulan

  • Speech Recognition (ASR) — konversi audio ke teks melalui model CTC/RNNT/Transformer
  • Android SpeechRecognizer — 60+ bahasa, cloud + on-device (Android 10+), WER 8–15%
  • SFSpeechRecognizer (iOS) — 60+ bahasa, on-device sejak iOS 17, WER 7–14%
  • Vosk — ASR offline, 20+ bahasa, RTF 0.3–0.8, WER 9–13%
  • Whisper — ASR paling akurat (WER 6% EN), 99 bahasa
  • On-device — privasi, tanpa internet, Vosk/Whisper Core ML
  • Penerapan — input suara, transkripsi, asisten, aksesibilitas

Kami akan mengembangkan aplikasi seluler turnkey

IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.

Diskusikan proyek

Baca juga