आर्किटेक्चर — Android और Linux
speech-android प्लेटफ़ॉर्म-विशिष्ट फ़्रंटएंड के साथ एक साझा C++ कोर के माध्यम से Android और एम्बेडेड Linux के लिए ऑन-डिवाइस स्पीच प्रोसेसिंग प्रदान करता है। सभी इन्फ़रेंस हार्डवेयर-एक्सेलेरेटेड एक्ज़ीक्यूशन प्रोवाइडर्स के साथ ONNX Runtime का उपयोग करके लोकली चलते हैं।
क्रॉस-प्लेटफ़ॉर्म स्टैक
Android और Linux speech-core C++ submodule साझा करते हैं, जो पूर्ण स्पीच पाइपलाइन को ऑर्केस्ट्रेट करता है। प्रत्येक प्लेटफ़ॉर्म एक पतला फ़्रंटएंड प्रदान करता है जो vtable-आधारित इंटरफ़ेस के माध्यम से speech-core को डेलिगेट करता है:
┌──────────────────────────────────────────────┐
│ Android: SpeechPipeline (Kotlin/JNI) │
│ Linux: speech.h (C API) │
└──────────────────┬───────────────────────────┘
│
┌──────────────────┴───────────────────────────┐
│ speech-core (C++ submodule) │
│ Turn detection · Interruptions · Context │
└──┬────────┬────────┬────────┬────────────────┘
│ │ │ │ vtables
┌──┴──┐ ┌──┴──┐ ┌──┴──┐ ┌─┴────────┐
│ VAD │ │ STT │ │ TTS │ │ Enhancer │
└──┬──┘ └──┬──┘ └──┬──┘ └─┬────────┘
└────────┴────────┴────────┘
ONNX Runtime (CPU / NNAPI / QNN)प्लेटफ़ॉर्म पथ
Android
Kotlin SDK (SpeechPipeline.kt) पब्लिक API प्रदान करता है। यह JNI के माध्यम से jni_bridge.cpp में कॉल करता है, जो speech-core के साथ vtable कॉलबैक रजिस्टर करता है। ONNX Runtime Qualcomm, Samsung, और Google चिपसेट पर हार्डवेयर एक्सेलेरेशन के लिए NNAPI एक्ज़ीक्यूशन प्रोवाइडर के साथ चलता है।
Kotlin SDK → JNI bridge → speech-core → ONNX Runtime (NNAPI)Linux
C API (speech.h) एम्बेडेड Linux टारगेट (ऑटोमोटिव, Yocto) के लिए उसी पाइपलाइन को एक्सपोज़ करता है। Qualcomm ऑटोमोटिव प्लेटफ़ॉर्म (SA8295P, SA8255P) पर, ONNX Runtime Hexagon DSP एक्सेलेरेशन के लिए QNN एक्ज़ीक्यूशन प्रोवाइडर का उपयोग करता है।
C API → speech-core → ONNX Runtime (QNN)पाइपलाइन
स्पीच पाइपलाइन तीन चरणों को क्रमिक रूप से चलाती है: VAD → STT → TTS। Voice Activity Detection रिकॉर्डिंग ट्रिगर करता है, ऑडियो STT द्वारा ट्रांसक्राइब होता है, और TTS प्रतिक्रिया उत्पन्न करता है। Barge-in समर्थन उपयोगकर्ता के प्रतिक्रिया के बीच में बोलना शुरू करने पर TTS प्लेबैक को बाधित करने की अनुमति देता है।
speech-core टर्न डिटेक्शन, इंटरप्शन हैंडलिंग, और कन्वर्सेशन संदर्भ का प्रबंधन करता है। मॉडल कार्यान्वयन (VAD, STT, TTS, Enhancer) C vtable इंटरफ़ेस के माध्यम से प्लग किए जाते हैं, जिससे कोर पाइपलाइन लॉजिक प्लेटफ़ॉर्म-अज्ञेय बन जाता है।
मॉडल
सभी मॉडल डिफ़ॉल्ट रूप से 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 |
| ऑटोमोटिव | SA8295P / SA8255P | QNN → Hexagon DSP |
| कोई भी | CPU फ़ॉलबैक | XNNPACK |
मुख्य C++ फ़ाइलें
| फ़ाइल | उद्देश्य |
|---|---|
jni_bridge.cpp | vtables के माध्यम से ONNX मॉडल कार्यान्वयन को speech-core C API से जोड़ता है |
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 फ़ॉलबैक) |
linux/src/speech.cpp | Linux C API कार्यान्वयन |
linux/include/speech.h | Linux पब्लिक C हेडर |
सोर्स संरचना
speech-android/
speech-core/ C++ submodule (pipeline orchestration)
sdk/src/main/
cpp/ ONNX Runtime model implementations, JNI bridge, audio DSP
kotlin/.../speech/ Kotlin public SDK (SpeechPipeline, ModelManager)
sdk/src/androidTest/ Instrumented e2e tests (23 tests, 5 suites)
linux/
include/speech.h Public C header
src/speech.cpp Linux C API implementation
tests/ Linux test suite (11 tests)
app/ Demo applicationसोर्स कोड: github.com/soniqo/speech-android