Traducere automată · Originalul în engleză
Arhitectură ? Android
speech-android este un pod slab Kotlin SDK + JNI peste speech-core Motor C++. Toate Inference ML și orchestrare conducte live în speech-core; speech-android se ocupă doar de ambalajul Android . Linux / automotive (Yocto, Qualcomm SA8295P/SA8255P cu QNN) este găzduit direct în speech-core/exemplu/linux.
Stack
Ambalajele de model (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) să pună în aplicare direct speech-core interfețe (VADInterface, STTInterface, TTSInterface, EnhancerInterface), astfel încât podul JNI le construiește și mâinile se referă la speech_core::VoicePipeline cu nici un adaptor C-vtable.
┌──────────────────────────────────────────────┐
│ 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)Conductă
Conducta speech ruleaza trei etape secvential: VAD → STT → TTS. Detectarea activitatii vocale declanseaza inregistrarea, audio este transcris de STT, si TTS genereaza raspunsul. Suportul de incarcare permite intreruperea TTS redarea cand utilizatorul incepe sa vorbeasca la mijlocul raspunsului.
speech-core gestionează detectarea turnului, manipularea întreruperii și contextul conversației. speech-core's interfaces direct CoreML / MLX Implementarea în speech-swift) care se conformează aceloraşi interfeţe.
Modele
Toate modelele folosesc un format ONNX cu INT8 cuantizare implicită. Modelele sunt găzduite la HuggingFace sub soniqo org și auto-download la prima utilizare prin ModelManager.kt.
| Model | Sarcina | Cuantificare | Dimensiune |
|---|---|---|---|
| Parakeet TDT v3 | STT (114 limbi, 8192 BPE vocab) | INT8 | ~ 891 MO |
| Kokoro-82M | TTS | INT8 | ~330 MO |
| Pocket TTS 100M (opțional) | Streaming text-to-speech (English, fix voce Alba) | dinamică INT8 + FP32 | 120.3 MB |
| Silero VAD v5 | Detectarea activității vocale | float32 | ~2 MO |
| DeepFilterNet3 | Anularea zgomotului | FP16 | ~8 MO |
Pocket TTS este un suport opțional speech-core ONNX. Nu este în curent speech-android descărcare implicită sau selecție de modele JNI; Kotlin SDK cablaj rămâne o lucrare de monitorizare.
Descarcă model total este de aproximativ 1.2 GB. După descărcarea inițială, toate deducțiile sunt complet offline.
Inference: OnnxEngine
Ambalajul onnx_engine.h oferă o selecție de furnizor de execuție cu conținut de platformă (EP). Sondează EP-uri disponibile la rulare și cade înapoi cu grație:
| Platformă | Chipsset | Accelerare |
|---|---|---|
| Android | Snapdragon 8 Gen 1+ | NNAPI → Hexagon NPU |
| Android | Samsung Exynos 2200. | NNAPI → Samsung NPU |
| Android | Google Tensor G2+ | NNAPI → Google TPU |
| Orice Android | CPU Retragere | XNNPACK |
Pentru automobile Qualcomm SA8295P / SA8255P cu QNN (Hexagon DSP), a se vedea speech-core/exemplu/linux.
Key C++ Fișiere
| Fișier | Scop |
|---|---|
jni_bridge.cpp | Construcţii speech_core::* ambalaje model şi referinţe la mâini VoicePipeline |
parakeet_stt.cpp | STT cu decodor TDT lacom și normalizare mel per-feature |
kokoro_tts.cpp | TTS cu E2E model și mască de atenție |
kokoro_phonemizer.cpp | Telefonizator pe bază de dicționar pentru intrare TTS |
silero_vad.cpp | Detectarea activității vocale |
deepfilter.cpp | Anularea zgomotului cu procesarea STFT/ERB |
onnx_engine.h | Platformă conţinută ONNX Runtime ambalaj (NNAPI on Android, QNN on Linux, CPU Fallback) |
Învelișurile de model și onnx_engine.h s-au mutat în speech-core în refactorul de extragere a modelului; a se vedea docs/models.md pentru inventarul complet.
Structura sursei
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/Codul sursă: github.com/soniqo/speech-android