आर्किटेक्चर — 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 पर soniqo org के तहत होस्ट किए जाते हैं और ModelManager.kt के माध्यम से पहले उपयोग पर ऑटो-डाउनलोड होते हैं।

मॉडलकार्यक्वांटिज़ेशनआकार
Parakeet TDT v3STT (114 भाषाएँ, 8192 BPE vocab)INT8~891 MB
Kokoro-82MTTSINT8~330 MB
Pocket TTS 100M (वैकल्पिक)स्ट्रीमिंग टेक्स्ट-टू-स्पीच (अंग्रेज़ी, निश्चित Alba आवाज़)dynamic INT8 + FP32120.3 MB
Silero VAD v5Voice Activity Detectionfloat32~2 MB
DeepFilterNet3नॉइज़ कैंसलेशनFP16~8 MB
Pocket TTS

Pocket TTS एक वैकल्पिक speech-core ONNX backend है। यह मौजूदा speech-android default download या JNI model selection में नहीं है; Kotlin SDK wiring आगे का काम है।

कुल मॉडल डाउनलोड लगभग 1.2 GB है। प्रारंभिक डाउनलोड के बाद, सभी इन्फ़रेंस पूरी तरह ऑफ़लाइन चलते हैं।

इन्फ़रेंस: OnnxEngine

onnx_engine.h रैपर प्लेटफ़ॉर्म-जागरूक एक्ज़ीक्यूशन प्रोवाइडर (EP) चयन प्रदान करता है। यह रनटाइम पर उपलब्ध EPs की जांच करता है और सुचारू रूप से फ़ॉलबैक करता है:

प्लेटफ़ॉर्मचिपसेटएक्सेलेरेशन
AndroidSnapdragon 8 Gen 1+NNAPI → Hexagon NPU
AndroidSamsung Exynos 2200+NNAPI → Samsung NPU
AndroidGoogle Tensor G2+NNAPI → Google TPU
कोई भी AndroidCPU फ़ॉलबैकXNNPACK

QNN (Hexagon DSP) के साथ ऑटोमोटिव Qualcomm SA8295P / SA8255P के लिए, speech-core/examples/linux देखें।

मुख्य C++ फ़ाइलें

फ़ाइलउद्देश्य
jni_bridge.cppspeech_core::* मॉडल रैपर बनाता है और VoicePipeline को रेफ़रेंस सौंपता है
parakeet_stt.cppTDT greedy decoder और per-feature mel नॉर्मलाइज़ेशन के साथ STT
kokoro_tts.cppE2E मॉडल और attention mask के साथ TTS
kokoro_phonemizer.cppTTS इनपुट के लिए शब्दकोश-आधारित phonemizer
silero_vad.cppवॉयस एक्टिविटी डिटेक्शन
deepfilter.cppSTFT/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