शुरुआत — Android
speech-android ONNX Runtime का उपयोग करके Android के लिए ऑन-डिवाइस स्पीच प्रोसेसिंग प्रदान करता है। पाइपलाइन VAD + STT + TTS को barge-in समर्थन के साथ चलाती है, मॉडल डाउनलोड के बाद पूरी तरह ऑफ़लाइन।
आवश्यकताएँ
- Android 8+ (API 26)
- arm64-v8a आर्किटेक्चर
इसे तुरंत आज़माने के लिए प्री-बिल्ट डेमो ऐप डाउनलोड करें:
Gradle Dependency
अपने build.gradle.kts में SDK जोड़ें:
implementation("audio.soniqo:speech:0.0.9")
त्वरित प्रारंभ
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
मॉडल पहले उपयोग पर HuggingFace से ऑटो-डाउनलोड होते हैं (~1.2 GB कुल)। प्रारंभिक डाउनलोड के बाद, सभी इन्फ़रेंस पूरी तरह ऑफ़लाइन चलते हैं।
सिस्टम वॉयस इनपुट (RecognitionService)
SDK एक उपयोग के लिए तैयार SpeechRecognitionService शामिल करता है जो Android फ्रेमवर्क के SpeechRecognizer API से जुड़ता है — कोई कोड लिखने की आवश्यकता नहीं। एक बार आपका ऐप डिफ़ॉल्ट वॉयस रिकग्नाइज़र के रूप में चुना जाता है, कोई भी थर्ड-पार्टी ऐप जो SpeechRecognizer.createSpeechRecognizer(context) (बिना ComponentName के) कॉल करता है, आपकी पाइपलाइन के माध्यम से पूरी तरह से ऑन-डिवाइस STT प्राप्त करता है।
1. AndroidManifest.xml में RECORD_AUDIO और सेवा घोषित करें:
<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 जोड़ें:
<?xml version="1.0" encoding="utf-8"?>
<recognition-service xmlns:android="http://schemas.android.com/apk/res/android" />
3. सेवा को सिस्टम डिफ़ॉल्ट के रूप में सेट करें (स्टॉक Android पर सेटिंग्स → सिस्टम → भाषाएँ और इनपुट → वॉयस इनपुट पिकर, या adb के माध्यम से):
adb shell settings put secure voice_recognition_service \
your.package/audio.soniqo.speech.service.SpeechRecognitionService
4. डेमो ऐप का Recognizer test स्क्रीन चलाकर सत्यापित करें, जो SpeechRecognizer.createSpeechRecognizer(ctx) (बिना कंपोनेंट के) कॉल करता है और हर फ्रेमवर्क कॉलबैक को लॉग करता है — logcat के बिना binder राउंड-ट्रिप की पुष्टि के लिए उपयोगी।
सेवा onCheckRecognitionSupport (API 33+) को लागू करती है जो Parakeet TDT v3 द्वारा कवर की गई 27 BCP-47 भाषाओं को लौटाती है, मॉडल मौजूद होने पर installedOnDeviceLanguage के रूप में चिह्नित (या डाउनलोड के दौरान pendingOnDeviceLanguage)। सत्र की अवधि के लिए AUDIOFOCUS_GAIN_TRANSIENT के साथ ऑडियो फोकस प्राप्त किया जाता है।
Gboard, Samsung Keyboard और Google Assistant अपने स्वयं के पहचानकर्ता बंडल करते हैं और सिस्टम डिफ़ॉल्ट को छोड़ देते हैं। फ्रेमवर्क SpeechRecognizer API को स्पष्ट रूप से कॉल करने वाले ऐप (या उसके ऊपर अपना UI बनाने वाले) ही आपकी सेवा से होकर गुजरते हैं।
मॉडल
सभी मॉडल NNAPI एक्सेलेरेशन के साथ ONNX Runtime के माध्यम से चलते हैं। डिफ़ॉल्ट रूप से INT8 क्वांटाइज़्ड।
| मॉडल | कार्य | आकार |
|---|---|---|
| Parakeet TDT v3 (INT8) | स्पीच-टू-टेक्स्ट (114 भाषाएँ) | 490 MB |
| Kokoro-82M (INT8) | टेक्स्ट-टू-स्पीच (7 भाषाएँ) | 89 MB |
| Silero VAD v5 | Voice Activity Detection | 1.2 MB |
| DeepFilterNet3 (FP16) | नॉइज़ कैंसलेशन | 4.2 MB |
सोर्स कोड: github.com/soniqo/speech-android
अगले कदम
- Benchmarks — Android इन्फ़रेंस परफ़ॉर्मेंस
- Linux C API — एम्बेडेड Linux सेटअप