Maskinoversættelse · Engelsk original

Arkitektur - Android

speech-android er en tynd Kotlin SDK + JNI bro over speech-core C++ motor. Alle ML inference og rørledning orkestrering live i speech-core; speech-android håndterer kun Android emballage. Linux / automobil (Yotto, Qualcomm SA8295P, SA8255P med QNN) er vært direkte i speech-core / eksempler / linux.

Stack

Modelindpakningen (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) direkte at gennemføre speech-core grænseflader (VADInterface, STTInterface, TTSInterface, EnhancerInterface), så JNI broen konstruerer dem og giver henvisninger til speech_core::VoicePipeline med ingen C- vtable adapter Mesterplate.

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

Pipeline

Taleledningen løber tre trin i træk: VAD → STT → TTS. Stemmeaktivitetsdetektering udløser optagelse, lyd er transskriberet af STT, og TTS genererer svaret. Barge- i støtte tillader afbrydelse TTS afspilning, når brugeren begynder at tale mid- svar.

speech-core håndterer turdetektering, afbrydelseshåndtering og samtalesammenhæng. Modelindskrifterne implementerer speech-core 's grænseflader direkte - ingen C- vtable adapter lag - hvilket gør det lige så nemt at tilslutte ikke-ONNX-backends (fx CoreML / MLX implementeringer i speech-swift), der er i overensstemmelse med de samme grænseflader.

Modeller

Alle modeller bruger ONNX format med INT8 kvantisering som standard. Modeller er hostet på HuggingFace under soniqo org og automatisk download ved første brug via ModelManager.kt.

ModelOpgaveKvantificeringStørrelse
Parakeet TDT v3STT (114 sprog, 8192 BPE vocab)INT8~ 891 MB
Kokoro-82MTTSINT8~ 330 MB
Pocket TTS 100M (valgfri)Streaming text- to- tale (Engelsk, fast Alba stemme)dynamisk INT8 + FP32120.3 MB
Silero VAD v5Registrering af taleaktivitetfloat32~ 2 MB
DeepFilterNet3StøjaflysningFP16~ 8 MB
Pocket TTS

Pocket TTS er en valgfri speech-core ONNX motor. Det er ikke i den aktuelle speech-android standard download eller JNI model valg; Kotlin SDK ledninger forbliver opfølgning arbejde.

Samlet model download er ca. 1.2 GB. Efter den indledende download, alle inferens kører helt offline.

Inferens: OnnxEngine

Den onnx_engine.h wrapper giver platform- aware execution provider (EP) selection. Det sonder tilgængelige EPs på runtime og falder tilbage elegant:

PlatformChipsetAcceleration
AndroidSnapdragon 8 Gen 1 +NNAPI → Hexagon NPU
AndroidSamsung Exynos 2200 +NNAPI → Samsung NPU
AndroidGoogle Tensor G2 +NNAPI → Google TPU
Enhver AndroidCPU fallbackXNNPACK

Med hensyn til automobil Qualcomm SA8295P / SA8255P med QNN (Hexagon DSP), se speech-core / eksempler / linux.

Nøgle C++- filer

FilFormål
jni_bridge.cppKonstruktioner speech_core::* model wrappers og hænder henvisninger til VoicePipeline
parakeet_stt.cppSTT med TDT grådige dekoder og per- feature mel normalisering
kokoro_tts.cppTTS med E2E model og opmærksomhed maske
kokoro_phonemizer.cppDictionary- baseret phonemizer til TTS input
silero_vad.cppOpdagelse af stemmeaktivitet
deepfilter.cppStøjaflysning med STFT / ERB-behandling
onnx_engine.hPlatform- aware ONNX Runtime papir (NNAPI on Android, QNN on Linux, CPU fald)

Modellerne indpakning og onnx_engine.h flyttet til speech-core i modelekstraktionsrefaktoren; se docs / models.md for den fulde beholdning.

Kildestruktur

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/

Kilde: github.com /soniqo/speech-android