Başlangıç — Android

speech-android, ONNX Runtime kullanarak Android'de cihaz içi konuşma işleme sağlar. Pipeline; VAD + STT + TTS'i barge-in (söze girme) desteğiyle çalıştırır ve modeller indirildikten sonra tamamen çevrimdışıdır.

Gereksinimler

Hemen denemek için önceden derlenmiş demo uygulamasını indirin:

Gradle Bağımlılığı

SDK'yı build.gradle.kts dosyanıza ekleyin:

implementation("audio.soniqo:speech:0.0.9")

Hızlı Başlangıç

val modelDir = ModelManager.ensureModels(context)
val pipeline = SpeechPipeline(SpeechConfig(modelDir = modelDir))
pipeline.events.collect { event ->
    when (event) {
        is SpeechEvent.TranscriptionCompleted -> println(event.text)
        is SpeechEvent.ResponseDone -> pipeline.resumeListening()
        else -> {}
    }
}
pipeline.start()
pipeline.pushAudio(samples) // 16kHz mono float32
Önemli

Modeller ilk kullanımda HuggingFace'ten otomatik olarak indirilir (toplam ~1.2 GB). İlk indirmeden sonra tüm çıkarım tamamen çevrimdışı çalışır.

Sistem Ses Girişi (RecognitionService)

SDK, doğrudan Android'in framework SpeechRecognizer API'sine bağlanan hazır bir SpeechRecognitionService içerir — kod yazmaya gerek yok. Uygulamanız varsayılan ses tanıyıcı olarak seçildiğinde, SpeechRecognizer.createSpeechRecognizer(context)'ı (ComponentName olmadan) çağıran herhangi bir üçüncü taraf uygulama, pipeline'ınız üzerinden tamamen cihaz içi STT alır.

1. RECORD_AUDIO izinini ve servisi AndroidManifest.xml içinde tanımlayın:

<uses-permission android:name="android.permission.RECORD_AUDIO" />

<application>
    <service
        android:name="audio.soniqo.speech.service.SpeechRecognitionService"
        android:exported="true"
        android:permission="android.permission.RECORD_AUDIO">
        <intent-filter>
            <action android:name="android.speech.RecognitionService" />
        </intent-filter>
        <meta-data
            android:name="android.speech"
            android:resource="@xml/recognition_service" />
    </service>
</application>

2. app/src/main/res/xml/recognition_service.xml dosyasını ekleyin:

<?xml version="1.0" encoding="utf-8"?>
<recognition-service xmlns:android="http://schemas.android.com/apk/res/android" />

3. Servisi sistem varsayılanı olarak ayarlayın (saf Android'de Ayarlar → Sistem → Diller ve giriş → Ses girişi seçici, veya adb üzerinden):

adb shell settings put secure voice_recognition_service \
  your.package/audio.soniqo.speech.service.SpeechRecognitionService

4. Doğrulamak için demo uygulamasının Recognizer test ekranını çalıştırın; bu ekran SpeechRecognizer.createSpeechRecognizer(ctx)'i (component olmadan) çağırır ve her framework callback'ini günlüğe kaydeder — binder gidiş-dönüşünü logcat'e ihtiyaç duymadan doğrulamak için kullanışlıdır.

Servis, Parakeet TDT v3'ün desteklediği 27 BCP-47 dilini döndüren onCheckRecognitionSupport'u (API 33+) uygular; modeller hazır olduğunda installedOnDeviceLanguage, indirilirken ise pendingOnDeviceLanguage olarak işaretlenir. Audio focus, oturum süresince AUDIOFOCUS_GAIN_TRANSIENT ile alınır.

Uyarı

Gboard, Samsung Klavye ve Google Assistant kendi tanıyıcılarını içerir ve sistem varsayılanını atlar. Framework'ün SpeechRecognizer API'sini açıkça çağıran (ya da onun üzerine kendi arayüzünü kuran) uygulamalar, servisinizden geçenlerdir.

Modeller

Tüm modeller, NNAPI hızlandırmasıyla ONNX Runtime üzerinde çalışır. Varsayılan olarak INT8 nicemlenmiştir.

ModelGörevBoyut
Parakeet TDT v3 (INT8)Konuşmadan metne (114 dil)490 MB
Kokoro-82M (INT8)Metinden konuşmaya (7 dil)89 MB
Silero VAD v5Ses Etkinliği Algılama1.2 MB
DeepFilterNet3 (FP16)Gürültü Engelleme4.2 MB

Kaynak kodu: github.com/soniqo/speech-android

Sonraki Adımlar