आर्किटेक्चर — Android
speech-android speech-core C++ इंजन पर एक पतला Kotlin SDK + JNI ब्रिज है। सभी ML इन्फ़रेंस और पाइपलाइन ऑर्केस्ट्रेशन speech-core में रहते हैं; speech-android केवल Android पैकेजिंग संभालता है। Linux / ऑटोमोटिव (Yocto, QNN के साथ Qualcomm SA8295P/SA8255P) सीधे speech-core/examples/linux में होस्ट किया गया है।
स्टैक
मॉडल रैपर (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) सीधे speech-core इंटरफ़ेस (VADInterface, STTInterface, TTSInterface, EnhancerInterface) को कार्यान्वित करते हैं, इसलिए JNI ब्रिज उन्हें बनाता है और बिना C-vtable एडाप्टर बॉयलरप्लेट के speech_core::VoicePipeline को रेफ़रेंस सौंप देता है।
┌──────────────────────────────────────────────┐
│ SpeechPipeline (Kotlin public API) │
│ ↓ JNI │
│ jni_bridge.cpp (~250 lines) │
└──────────────────┬───────────────────────────┘
│
┌──────────────────┴───────────────────────────┐
│ speech_core_models (git submodule) │
│ Silero / Parakeet / Kokoro / DeepFilter │
│ speech_core │
│ Turn detection · Interruptions · Context │
└──┬────────┬────────┬────────┬────────────────┘
│ │ │ │ direct interface impl
┌──┴──┐ ┌──┴──┐ ┌──┴──┐ ┌─┴────────┐
│ VAD │ │ STT │ │ TTS │ │ Enhancer │
└──┬──┘ └──┬──┘ └──┬──┘ └─┬────────┘
└────────┴────────┴────────┘
ONNX Runtime (CPU / NNAPI)पाइपलाइन
स्पीच पाइपलाइन तीन चरणों को क्रमिक रूप से चलाती है: VAD → STT → TTS। Voice Activity Detection रिकॉर्डिंग ट्रिगर करता है, ऑडियो STT द्वारा ट्रांसक्राइब होता है, और TTS प्रतिक्रिया उत्पन्न करता है। Barge-in समर्थन उपयोगकर्ता के प्रतिक्रिया के बीच में बोलना शुरू करने पर TTS प्लेबैक को बाधित करने की अनुमति देता है।
speech-core टर्न डिटेक्शन, इंटरप्शन हैंडलिंग, और कन्वर्सेशन संदर्भ का प्रबंधन करता है। मॉडल रैपर speech-core के इंटरफ़ेस को सीधे कार्यान्वित करते हैं — कोई C-vtable एडाप्टर परत नहीं — जिससे गैर-ONNX बैकएंड को प्लग करना समान रूप से आसान हो जाता है (उदा. speech-swift में CoreML / MLX कार्यान्वयन) जो समान इंटरफ़ेस के अनुरूप हैं।
मॉडल
सभी मॉडल डिफ़ॉल्ट रूप से INT8 क्वांटिज़ेशन के साथ ONNX फ़ॉर्मैट का उपयोग करते हैं। मॉडल HuggingFace पर aufklarer org के तहत होस्ट किए जाते हैं और ModelManager.kt के माध्यम से पहले उपयोग पर ऑटो-डाउनलोड होते हैं।
| मॉडल | कार्य | क्वांटिज़ेशन | आकार |
|---|---|---|---|
| Parakeet TDT v3 | STT (114 भाषाएँ, 8192 BPE vocab) | INT8 | ~500 MB |
| Kokoro-82M | TTS | INT8 | ~89 MB |
| Silero VAD v5 | Voice Activity Detection | float32 | ~1.2 MB |
| DeepFilterNet3 | नॉइज़ कैंसलेशन | FP16 | ~4.2 MB |
कुल मॉडल डाउनलोड लगभग 1.2 GB है। प्रारंभिक डाउनलोड के बाद, सभी इन्फ़रेंस पूरी तरह ऑफ़लाइन चलते हैं।
इन्फ़रेंस: OnnxEngine
onnx_engine.h रैपर प्लेटफ़ॉर्म-जागरूक एक्ज़ीक्यूशन प्रोवाइडर (EP) चयन प्रदान करता है। यह रनटाइम पर उपलब्ध EPs की जांच करता है और सुचारू रूप से फ़ॉलबैक करता है:
| प्लेटफ़ॉर्म | चिपसेट | एक्सेलेरेशन |
|---|---|---|
| Android | Snapdragon 8 Gen 1+ | NNAPI → Hexagon NPU |
| Android | Samsung Exynos 2200+ | NNAPI → Samsung NPU |
| Android | Google Tensor G2+ | NNAPI → Google TPU |
| कोई भी Android | CPU फ़ॉलबैक | XNNPACK |
QNN (Hexagon DSP) के साथ ऑटोमोटिव Qualcomm SA8295P / SA8255P के लिए, speech-core/examples/linux देखें।
मुख्य C++ फ़ाइलें
| फ़ाइल | उद्देश्य |
|---|---|
jni_bridge.cpp | speech_core::* मॉडल रैपर बनाता है और VoicePipeline को रेफ़रेंस सौंपता है |
parakeet_stt.cpp | TDT greedy decoder और per-feature mel नॉर्मलाइज़ेशन के साथ STT |
kokoro_tts.cpp | E2E मॉडल और attention mask के साथ TTS |
kokoro_phonemizer.cpp | TTS इनपुट के लिए शब्दकोश-आधारित phonemizer |
silero_vad.cpp | वॉयस एक्टिविटी डिटेक्शन |
deepfilter.cpp | STFT/ERB प्रोसेसिंग के साथ नॉइज़ कैंसलेशन |
onnx_engine.h | प्लेटफ़ॉर्म-जागरूक ONNX Runtime रैपर (Android पर NNAPI, Linux पर QNN, CPU फ़ॉलबैक) |
मॉडल रैपर और onnx_engine.h मॉडल-एक्सट्रैक्शन रीफ़ैक्टर में speech-core में स्थानांतरित हो गए; पूरी सूची के लिए docs/models.md देखें।
सोर्स संरचना
speech-android/
speech-core/ C++ engine + ONNX model wrappers (git submodule)
sdk/src/main/
cpp/jni_bridge.cpp Thin JNI bridge over speech_core::VoicePipeline
cpp/CMakeLists.txt Pulls speech-core via add_subdirectory(SPEECH_CORE_WITH_ONNX=ON)
kotlin/.../speech/ Kotlin public SDK (SpeechPipeline, ModelManager)
sdk/src/androidTest/ Instrumented e2e tests
app/ Demo application
Linux / automotive (C ABI, ALSA demo, CLI tools) lives at:
speech-core/examples/linux/सोर्स कोड: github.com/soniqo/speech-android