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
- Android 8+ (API 26)
- arm64-v8a mimarisi
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
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.
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.
| Model | Görev | Boyut |
|---|---|---|
| Parakeet TDT v3 (INT8) | Konuşmadan metne (114 dil) | 490 MB |
| Kokoro-82M (INT8) | Metinden konuşmaya (7 dil) | 89 MB |
| Silero VAD v5 | Ses Etkinliği Algılama | 1.2 MB |
| DeepFilterNet3 (FP16) | Gürültü Engelleme | 4.2 MB |
Kaynak kodu: github.com/soniqo/speech-android
Sonraki Adımlar
- Benchmarks — Android çıkarım performansı
- Linux C API — gömülü Linux kurulumu