Strojový překlad · Anglický originál

Architektura - Android

speech-android je tenký Kotlin SDK + JNI most přes speech-core C++ motor. Veškerá ML inference a plynovod orchestr živě v speech-core; speech-android zpracovává pouze obal Android. Linux / automobilový (Yocto, Qualcomm SA8295P nebo SA8255P s QNN) je hostován přímo v speech-core / příklady / linux.

Stack

Obaly modelu (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) přímo provádět speech-core Rozhraní (VADInterface, STTInterface, TTSInterface, EnhancerInterface), tak JNI most staví je a ruce odkazuje na speech_core::VoicePipeline bez C- vtable adaptéru.

┌──────────────────────────────────────────────┐
│     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)

Potrubí

Plynovod řeči běží postupně tři fáze: VAD → STT → TTS. Detekce hlasové aktivity spustí nahrávání, zvuk je přepsán STT, a TTS generuje odpověď. Barge- v podpoře umožňuje přerušení přehrávání TTS, když uživatel začne mluvit mid- odpověď.

speech-core spravuje detekci otočení, manipulaci s přerušením a kontext konverzace. Obaly modelu implementují rozhraní speech-core přímo - žádná adaptérová vrstva C- vtable - což umožňuje stejně snadné zapojení ne- ONNX backends (např. implementace CoreML / MLX v speech-swift) které odpovídají stejným rozhraním.

Modely

Všechny modely používají formát ONNX s kvantifikací INT8 jako výchozí. Modely jsou hostovány na HuggingFace pod soniqo org a auto-download při prvním použití přes ModelManager.kt.

VzorÚkolKvantizaceVelikost
Parakeet TDT v3STT (114 jazyků, 8192 BPE vocab)INT8~ 891 MB
Kokoro-82MTTSINT8~ 330 MB
Pocket TTS 100M (nepovinné)Streaming text- to- speak (anglický, fixní hlas Alba)dynamické INT8 + FP32120.3 MB
Silero VAD v5Detekce hlasové aktivityfloat32~ 2 MB
DeepFilterNet3Zrušení hlukuFP16~ 8 MB
Pocket TTS

Pocket TTS je volitelný speech-core ONNX backend. Není v aktuálním výchozím stahování speech-android nebo v JNI výběru modelu; zapojení Kotlin SDK zůstává v provozu.

Celkové stažení modelu je přibližně 1.2 GBPo počátečním stahování je všechny inference plně offline.

Smysl: OnnxEngine

V onnx_engine.h Obal poskytuje platform- aware výběr poskytovatele provedení (EP). To sondy dostupné EP v runtime a padá zpět elegantně:

PlatformaChipsetZrychlení
AndroidSnapdragon 8 Gen 1 +NNAPI → Hexagon NPU
AndroidSamsung Exynos 2200 +NNAPI → Samsung NPU
AndroidGoogle Tensor G2 +NNAPI → Google TPU
Jakékoli AndroidZáloha CPUXNPACK

Pro automobilový Qualcomm SA8295P / SA8255P s QNN (Hexagon DSP), viz speech-core / příklady / linux.

Soubory C++ klávesy

SouborÚčel
jni_bridge.cppKonstrukce speech_core::* modely obalů a odkazů na ruce VoicePipeline
parakeet_stt.cppSTT s TDT chamtivým dekodérem a per- feature mel normalizací
kokoro_tts.cppTTS s modelem E2E a maskou pozornosti
kokoro_phonemizer.cppDictionary- based phonemizer for TTS input
silero_vad.cppDetekce hlasové aktivity
deepfilter.cppZrušení hluku se zpracováním STFT / ERB
onnx_engine.hPlatform- aware ONNX Runtime obal (NNAPI zapnutý Android, QNN on Linux, CPU Záloha)

Obaly modelu a onnx_engine.h přesunuto do speech-core v modelovém extrakčním refaktoru; viz docs / models.md pro kompletní inventuru.

Struktura zdroje

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/

Zdroj: github.com /soniqo/speech-android