Konuşma Tanıma — nedir, teknolojiler ve çalışma prensibi

Yazar: IT Sectr Yayınlanma: 2026-07-19 Okuma süresi: 10 dk

Konuşma Tanıma (ASR), ses sinyalini metin dizisine dönüştüren otomatik konuşma tanıma teknolojisidir. Modern sistemler derin öğrenme kullanır: bir kodlayıcı (Conformer, Whisper, BiLSTM + CTC) ses spektrogramını gizli durumlar dizisine dönüştürür, bir kod çözücü (CTC greedy decoding, Beam Search, Transformer decoder) metni oluşturur. Mobil uygulamalarda Konuşma Tanıma, sesli giriş, sesli asistanlar, otomatik arama transkripsiyonu ve motor kısıtlamaları olan kişiler için erişilebilirlik özellikleri için kullanılır. Google Cloud Speech-to-Text, 2025'e göre, bulut ASR, SNR > 15 dB'de İngilizce için %7 ve Rusça için %12 WER elde eder.

Önemli Noktalar

  • Konuşma Tanıma — sinir ağları ile konuşmayı metne (ASR) dönüştürme
  • Android SpeechRecognizer — cihaz üstü + bulut ASR, 60+ dil, %7–12 WER
  • SFSpeechRecognizer — iOS yerel tanıma, iOS 17'den itibaren cihaz üstü
  • Vosk — çevrimdışı ASR, 20+ dil, 0.5–1.5x gerçek zamanlı gecikme, %13 WER Rusça
  • Whisper — OpenAI ASR, Core ML / TFLite ile cihaz üstü, çok dilli

Konuşma Tanıma Nedir: ASR Prensipleri

Otomatik Konuşma Tanıma (ASR) bir boru hattıdır: ses → ön işleme (16 kHz mono, gürültü azaltma, VAD — ses aktivitesi tespiti) → özellik çıkarma (MFCC, LogMel FilterBank) → akustik model (sinir ağı: CTC / RNNT / Transducer) → dil modeli (LM) → kod çözme (metin). Modern uçtan uca modeller (Whisper, Google USM, Conformer CTC) akustik modeli ve dil modelini tek bir Transformer'da birleştirerek boru hattını basitleştirir ve doğruluğu artırır.

Mobil Cihazlar için ASR Mimarileri: CTC (Connectionist Temporal Classification) — hızlı, ses-metin hizalaması gerektirmez, Vosk ve Android yerelinde kullanılır. RNNT (Recurrent Neural Network Transducer) — akış ASR, düşük gecikme (Google USM). Conformer — CNN + Transformer hibriti, en iyi doğruluk ancak daha ağır: Whisper Medium (769M parametre) — 30–60x gecikme. Cihaz üstü için CTC tercih edilir: Vosk CTC modelleri 50–100 MB alır, gecikme 0.3–0.8x gerçek zamanlı.

ASR Metrikleri: WER (Word Error Rate) — referansa göre değiştirilen, silinen ve eklenen kelimelerin yüzdesi. Google Cloud ASR — %7 WER (EN), %12 (RU). Vosk — %13 (RU), %9 (EN). Whisper Small — %6 (EN), %10 (RU). CER (Character Error Rate) — benzer, karakter düzeyinde. Gerçek Zaman Faktörü (RTF) — işlem süresi / ses süresi. RTF < 1 — gerçek zamandan daha hızlı. RTF < 0.3 — gerçek zamanlı ASR. Sesli giriş için RTF < 1, transkripsiyon için RTF < 3 gereklidir.

ASR ÇözümüWER (EN)WER (RU)RTFCihaz üstü
Google Cloud ASR%7%120.3Hayır
Android SpeechRecognizer%8%130.5–1Evet (hibrit)
SFSpeechRecognizer%7%120.3–0.8Evet (iOS 17'den)
Vosk (vosk-model-small-ru)%9%130.3–0.8Evet
Whisper Small%6%102–6Evet

VAD (Ses Aktivitesi Tespiti) — ses aktivitesini tespit ederek konuşmayı sessizlik ve gürültüden ayırır. WebRTC VAD, mobil ASR için standarttır: 30 ms çerçeveler, üç mod (0, 1, 2 — muhafazakârdan agresife). VAD, RTF'yi 1.5–3x azaltır (konuşma olmayan bölümleri atlar). Silero VAD (MIT) sinirsel bir VAD'dir, WebRTC'den (%94'e karşı %85 ROC AUC) daha doğrudur, 5–10 ms gecikme, TFLite ve Core ML. Üretim ASR için VAD → ASR basamağını kullanın: bu, yanlış pozitifleri azaltır ve işlemi hızlandırır.

Android SpeechRecognizer API

Android SpeechRecognizer, konuşma tanıma için Android SDK'da yerleşik bir sınıftır. İki modda çalışır: bulut (Google sunucusu) — yüksek doğruluk, internet gerektirir; cihaz üstü (Android 10+'dan) — GBoard gömülü ASR modeli, 20+ dil, WER %15–18. SpeechRecognizer, konuşma sırasında ara sonuçlar (kısmi sonuçlar) ve nihai metin döndürür. RecognizerIntent.EXTRA_LANGUAGE aracılığıyla 60+ dil destekler. Sesli giriş için önerilir — hızlı entegrasyon, ücretsiz.

SpeechRecognizer API: SpeechRecognizer.createSpeechRecognizer(context) ile oluşturma. RecognizerIntent.ACTION_RECOGNIZE_SPEECH ile Intent, ekstralar: LANGUAGE_MODEL_FREE_FORM (serbest metin) veya LANGUAGE_MODEL_WEB_SEARCH (arama sorguları). RecognitionListener aracılığıyla sonuçlar: onReadyForSpeech → onBeginningOfSpeech → onRmsChanged → onPartialResults → onResults. Sürekli tanıma için (her zaman dinleme modu) — onResults'tan sonra tanıyıcıyı yeniden başlatın. Pil tasarrufu için onDeviceOnly = true kullanın.

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)

Android'de Cihaz Üstü ve Bulut: cihaz üstü internet olmadan çalışır (Android 10+, Pixel 4+, Samsung S20+). Bulut daha doğrudur (Google Neural Network ASM Model) ancak gecikmesi daha yüksektir (ağ dahil 300–800 ms). Sesli giriş için hibrit bir yaklaşım kullanın: ağ olmadığında cihaz üstüne geri dönüşlü bulut. Android SpeechRecognizer, RecognizerIntent.EXTRA_PREFER_OFFLINE'a göre modu otomatik olarak seçer. Maksimum gizlilik için — onDeviceOnly = true olarak ayarlayın (ancak Rusça için doğruluk WER %15–18'dir).

iOS SFSpeechRecognizer ve Speech Framework

SFSpeechRecognizer, iOS, macOS ve watchOS'ta konuşma tanıma için Apple'ın framework'üdür. iOS 10'dan beri kullanılabilir. Cihaz üstü mod — iOS 17'den (yerel model, internet gerekmez). 60+ dil destekler. Doğruluk: WER %7–12 (cihaz üstü — %12–15). SFSpeechRecognizer, Speech.framework aracılığıyla kullanılabilir — ek SDK gerekmez. SFSpeechRecognizer.requestAuthorization ile izin talebi.

SFSpeechRecognizer API: SFSpeechRecognizer(locale: Locale(identifier: "ru_RU")) → SFSpeechAudioBufferRecognitionRequest (canlı ses) veya SFSpeechURLRecognitionRequest (ses dosyası). recognitionTask(with:delegate:) ile SFSpeechRecognitionTaskDelegate (didHypothesizeTranscription — kısmi, didFinishRecognition — nihai) ile akış. Cihaz üstü mod: request.requiresOnDeviceRecognition = true. iOS 15+ için: request.shouldReportPartialResults = true (düşük gecikmeli akış sonucu).

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, yeniden başlatma olmadan yerel akışa sahiptir (Android tekrarlanan startListening gerektirir). iOS'ta cihaz üstü iOS 17'den (Android'de Android 10'dan) beri kullanılabilir. Her ikisi de kullanıcı izni gerektirir (iOS için NSMicrophoneUsageDescription + NSSpeechRecognitionUsageDescription, Android için RECORD_AUDIO). SFSpeechRecognizer İngilizce'de daha doğrudur (cihaz üstü), Android SpeechRecognizer Rusça'da daha doğrudur (bulut). iOS 17 öncesinde cihaz üstü kullanılamaz — internet gerekir. iOS 17+ için cihaz üstü Rusça için WER %12–14 verir.

Vosk: 20+ Dilde Çevrimdışı Tanıma

Vosk, Alpha Cephei tarafından çevrimdışı konuşma tanıma için açık kaynaklı bir ASR kütüphanesidir. Kaldi ASR toolkit + CTC modellerine dayanır. 20+ dil destekler: Rusça, İngilizce, Almanca, Fransızca, İspanyolca, Çince, Arapça. Modeller 50 MB (küçük — 50 MB, ru) ile 1.2 GB (büyük — 1.2 GB, en) arasındadır. Vosk, Android (JNI), iOS (C++ sarmalayıcı), Linux, Windows, Raspberry Pi'de çalışır. RTF: amiral gemisi cihazlarda 0.3–0.8. Vosk, tam çevrimdışı ASR için en iyi seçimdir.

Vosk API: VoskWaveformModelLoader (model yükleme) → VoskWaveformRecognizer (tanıyıcı oluşturma) → recognizer.createGrammar(list) veya recognizer.getResult() / recognizer.getPartialResult(). Dil bilgisi desteği (sabit komut seti) — GrammarRecogniser — RTF 0.1–0.3 verir (3x daha hızlı). Sesli giriş için serbest tanıma (getResult) kullanın. Sesli komutlar için — GrammarRecogniser (komutlarda %99 doğruluk). Vosk ayrıca konuşmacı tanımlamayı (ses vektör analizi) destekler.

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

Vosk vs Bulut ASR: Vosk tamamen çevrimdışıdır — gizlilik, sıfır gecikme, ücretsiz. Bulut (Google, Yandex) karmaşık senaryolarda (gürültü, aksan) daha doğrudur — WER %3–5 daha düşük. Vosk şunlar için idealdir: internetsiz sesli giriş, erişilebilirlik uygulamaları, çağrı transkripsiyonu (gizlilik). Bulut ASR, gizlilikten çok doğruluğun önemli olduğu sesli asistanlar içindir. Öneri: çevrimdışı için Vosk, çevrimiçi için SFSpeechRecognizer (iOS) / SpeechRecognizer (Android) — farklı senaryolar için yaklaşımları birleştirin.

Mobil Cihazlarda Whisper OpenAI

Whisper, OpenAI'nın konuşma tanıma modelidir ve 680.000 saat ses (çok dilli, 99 dil) üzerinde eğitilmiştir. Boyutları: tiny (39M, WER %10 EN, %15 RU), small (244M, WER %6 EN, %10 RU), medium (769M, WER %4.5 EN, %8 RU). Whisper, Core ML (iOS, ANE) ve TFLite (Android, GPU) aracılığıyla mobil cihazlarda çalışır. Whisper tiny: CPU'da RTF 4–10, GPU'da RTF 0.5–2 (Android). Whisper small: GPU'da RTF 2–6. Whisper medium — RTF 8–15, yalnızca gerçek zamanlı olmayan için.

iOS'ta Whisper (Core ML): Apple MLX Whisper — Core ML ve MLX (Apple Neural Engine) için Whisper uygulaması. iPhone 15 Pro'da Whisper tiny Core ML: RTF 0.3–0.8 (gerçek zamandan daha hızlı!). Whisper small Core ML: RTF 1–3. Whisper Core ML, A17 Pro'da (Neural Engine 35 TOPS) ANE kullanır. Hugging Face Transformers → coremltools-whisper ile Core ML'ye aktarma. Akış için WhisperStitcher (parçalama + birleştirme) kullanın. iOS'ta Whisper, en doğru cihaz üstü ASR'dir (WER %6 EN, %10 RU).

swift
// Whisper Core ML on 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) // final text with timestamps
}

Whisper vs Vosk: Whisper daha doğrudur (%6'ya karşı %9 WER EN), 99 dil destekler, dil algılama, noktalama ve duygu tanıma içerir. Whisper daha ağırdır (39M–769M'e karşı 50M Vosk), gerçek zamanda daha yavaştır (RTF 0.5–6'ya karşı 0.3–0.8). Whisper tiny, hız açısından Vosk ile karşılaştırılabilir (RTF 0.5–2 GPU). Vosk daha hafif, daha hızlı, gerçek zamanlı akış için daha iyidir. Whisper, hızdan çok doğruluğun öncelikli olduğu tek seferlik transkripsiyon içindir. Vosk, gerçek zamanlı sesli giriş içindir. Nihai metin için Whisper, etkileşimli kullanım için Vosk kullanın.

Mobil Uygulamalarda Konuşma Tanıma Kullanımı

Sesli Metin Girişi — ASR'nin en yaygın kullanımı: mesajlar, arama sorguları, notlar dikte etme. Gereksinim: RTF < 1 (gerçek zaman), kısmi sonuçlar (konuşurken metni görme). Android Gboard ve iOS Klavyesinde yerleşik ASR vardır (cihaz üstü, WER %12–18). Özel uygulama için Android SpeechRecognizer / SFSpeechRecognizer kullanın. Maksimum doğruluk için — Bulut ASR + Vosk geri dönüşü. Rusça'da %98 doğrulukla sesli giriş için — Vosk (çevrimdışı) + Yandex SpeechKit (çevrimiçi) birleştirin.

Arama ve Toplantı Transkripsiyonu — otomatik transkript oluşturma için ASR. Gereksinimler: gecikme gereksinimi yok, WER < %10, konuşmacı diyarizasyonu (kim konuşuyor). Whisper Small (çevrimdışı) + pyannote-audio (diyarizasyon) transkripsiyon için standart yığındır. iOS'ta — Whisper Core ML (RTF 1–3, WER %6–10). Android'de — Whisper TFLite (RTF 2–6, WER %8–12) veya Google Cloud ASR + diyarizasyon. Gizlilik için (aramalar sunucuya gitmez) — cihazda Whisper. Diyarizasyon doğruluğu: %80–90 DER.

Sesli Asistanlar — Siri (SFSpeechRecognizer), Google Assistant (Android SpeechRecognizer), Alexa (cihaz üstü ASR). Özel asistan: ASR → NLU (Doğal Dil Anlama) → Eylem → TTS. ASR ilk aşamadır — tüm zincirin doğruluğunu belirler. NLU için RASA, Snips NLU (cihaz üstü) veya Bulut NLU (Dialogflow, Amazon Lex) kullanın. TTS için: Android TTS / iOS AVSpeechSynthesizer. Cihaz üstü sesli asistan (Vosk + RASA + TTS) tamamen özeldir, internetsiz çalışır, istek başına gecikme < 2 saniye.

kotlin
// Voice assistant with 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)
    }
})

Motor Kısıtlamaları Olan Kişiler için Erişilebilirlik — Konuşma Tanıma, uygulamayı sesle kontrol etmeyi sağlar: kişileri açma, mesaj gönderme, numara çevirme. Android Voice Access ve iOS Switch Control + VoiceOver yerleşik çözümlerdir. Özel uygulama için: GrammarRecogniser (Vosk) sabit komut setiyle (50–100 ifade) — RTF 0.1–0.3, %99 doğruluk. Vosk Grammar, BNF formatında dil bilgisi tanımlamaya izin verir. Erişilebilirlik için hız kritiktir — Vosk Grammar, serbest tanımadan 5 kat daha hızlıdır ve daha az pil tüketir.

Sıkça Sorulan Sorular

Gürültülü bir ortamda konuşma tanıma doğruluğu nasıl artırılır?

Gürültü bastırma kullanın (WebRTC NS — Android'de yerleşik, iOS AVAudioSession). Konuşma olmayan kısımları kesmek için VAD uygulayın. Beamforming (yönlü kayıt) veya çoklu mikrofon dizisi ile mikrofon kullanarak SNR'yi artırın. Whisper gürültüye karşı daha dayanıklıdır (gürültülü 680K saat üzerinde eğitilmiş). WebRTC ile gürültü bastırmalı Vosk, 50 dB gürültüde +%5 WER verir. Üretim için uygulamanızın gürültü koşullarıyla test edin.

iOS'ta internetsiz konuşma tanıma mümkün mü?

Evet, iOS 17'den itibaren SFSpeechRecognizer cihaz üstü modu (requiresOnDeviceRecognition = true) destekler. iOS 16 ve öncesinde cihaz üstü kullanılamaz — Siri/Gboard ASR için internet gerekir. Alternatifler: C++ sarmalayıcı ile Vosk (çevrimdışı, WER %12–15), Whisper Core ML (çevrimdışı, WER %6–10, gecikme 2–6x). iOS 16- için sesli girişte Vosk kullanın. Whisper Core ML, ses dosyası transkripsiyonu içindir (gerçek zamanlı değil). Tüm çözümler tamamen özeldir ve internetsiz çalışır.

Android SpeechRecognizer hangi dilleri destekler?

Android SpeechRecognizer, RecognizerIntent.EXTRA_LANGUAGE aracılığıyla 60+ dil destekler. Tam liste cihazdaki Locale.getAvailableLocales() tarafından belirlenir. Rusça, İngilizce, Almanca, Fransızca, İspanyolca, İtalyanca her zaman kullanılabilir. Çince, Japonca, Korece cihaz modeline bağlıdır. Cihaz üstü mod (Android 10+) — 20+ dil. Vosk (20 dil) ve SFSpeechRecognizer'ın (60 dil) aksine, Android SpeechRecognizer Google Play Services sürümüne bağlıdır.

Belirli bir alan (tıp, hukuk) için konuşma tanıma nasıl ayarlanır?

Model uyarlaması kullanın: 100+ saat alan sesinde Whisper ince ayarı (Hugging Face Trainer). Vosk — Dil Modelini (ARPA formatı) alan metin derlemesiyle (100K+ cümle) değiştirin. Google Cloud ASR — phrase hints (alan sözcükleri, DL=0/1/2). SFSpeechRecognizer — contextualStrings (ipucu dizileri dizisi) ile SFSpeechRecognitionTaskDelegate. Alan uyarlaması, belirli terminoloji için doğruluğu %15–30 WER artırır. Minimum: transkripsiyonlu 500 alan ses dosyası.

ASR için WER (Word Error Rate) nasıl hesaplanır?

WER = (S + D + I) / N, burada S — değiştirmeler, D — silmeler, I — eklemeler, N — referans metindeki kelime sayısı. Örnek: referans = “merhaba nasılsın”, tahmin = “merhaba ne yapıyorsun” → S=1 (nasıl→ne), D=1 (silindi “sın”?), I=0 → WER = 2/3 = %66. Hesaplama için jiwer kütüphanesi (Python) veya WER Calculator (JavaScript) kullanın. CER, karakter düzeyinde benzerdir. Rusça için CER, kelime uzunluğu nedeniyle WER'den %20–30 daha düşüktür.

Özet

  • Konuşma Tanıma (ASR) — CTC/RNNT/Transformer modelleri ile sesi metne dönüştürme
  • Android SpeechRecognizer — 60+ dil, bulut + cihaz üstü (Android 10+), WER %8–15
  • SFSpeechRecognizer (iOS) — 60+ dil, iOS 17'den cihaz üstü, WER %7–14
  • Vosk — çevrimdışı ASR, 20+ dil, RTF 0.3–0.8, WER %9–13
  • Whisper — en doğru ASR (WER %6 EN), 99 dil, ancak gerçek zamanlı için ağır
  • Cihaz üstü — gizlilik, internetsiz, Vosk/Whisper Core ML
  • Uygulamalar — sesli giriş, transkripsiyon, asistanlar, erişilebilirlik

Anahtar teslim bir mobil uygulama geliştireceğiz

IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.

Projeyi tartış

Ayrıca okuyun