Maskinoversettelse · Engelsk original

Arkitektur — Android

speech-android er en tynn Kotlin SDK + JNI bro over speech-core C++ motor. Alle ML inferens og rørledningsorkester lever i speech-core; speech-android håndterer bare Android emballasjen. Linux / bil (Yocto, Qualcomm SA8295P/SA8255P med QNN) er vert direkte i speech-core/Service/linux.

Stack

Modellen wrappers (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) direkte implementere speech-core grensesnitt (VADInterface, STTInterface, TTSInterface, EnhancerInterface), så JNI broen konstruerer dem og hender referanser til speech_core::VoicePipeline uten C-vtable adapter kjeleplate.

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

Talerørledningen kjører tre trinn sekvensielt: VAD → STT → TTS. Stemmeaktivitetsdetektering utløser opptak, lyden transkriberes av STT, og TTS genererer responsen. Barge-in-støtte tillater å avbryte TTS

speech-core administrerer dreiedeteksjon, avbruddshåndtering og samtalekontekst. Modellinnpakningene implementerer speech-core sine grensesnitt direkte - ingen C-vtable adapterlag - noe som gjør det like enkelt å koble i ikke-ONNX-motorer (f.eks. CoreML / MLX implementasjoner i speech-swift) som er i samsvar med de samme grensesnittene.

Modeller

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

Modell Oppgave Kvantisering Størrelse
Parakeet TDT v3STT (114 språk, 8192 BPE vokab)INT8~891 MB
Kokoro-82MTTSINT8~330 MB
Pocket TTS 100M (valgfritt)Streaming tekst-til-speech (engelsk, fast Alba stemme) dynamisk INT8 + FP32120.3 MB
Silero VAD v5Påvisning av taleaktivitetfloat32~ 2 MB
DeepFilterNet3StøyavbestillingFP16~ 8 MB
Pocket TTS

Pocket TTS er en valgfri speech-core ONNX motor. Det er ikke i gjeldende speech-android standard nedlasting eller JNI modellvalg; Kotlin SDK ledninger forblir oppfølgingsarbeid.

Total modell nedlasting er omtrent 1.2 GB. Etter den opprinnelige nedlastingen, kjører all inferens helt frakoblet.

Inferens: OnnxEngine

onnx_engine.h wrapper gir plattform-aware-utførelsesleverandør (EP) -valg. Det prober tilgjengelige EPer ved kjøring og faller tilbake graciøst:

PlattformChipsetAkselerasjon
AndroidSnapdragon 8 Gen 1+NNAPI → Hexagon NPU
AndroidSamsung Exynos 2200+NNAPI → Samsung NPU
AndroidGoogle Tensor G2+NNAPI → Google TPU
Alle AndroidCPU tilbakefallXNNPACK

For bil Qualcomm SA8295P / SA8255P med QNN (Hexagon DSP), se speech-core/sepex/linux.

Nøkkel C++ Filer

Fil Formål
jni_bridge.cppKonstruerer speech_core::* modellompakninger og hender referanser til VoicePipeline
parakeet_stt.cppSTT med TDT grådig dekoder og per-feature mel normalisering
kokoro_tts.cppTTS med E2E modell og oppmerksomhetsmaske
kokoro_phonemizer.cpp Ordbokbasert fonemizer for TTS input
silero_vad.cpp Deteksjon av stemmeaktivitet
deepfilter.cppStøyavbestilling med STFT/ERB-behandling
onnx_engine.h Plattform-aware ONNX Runtime wrapper (NAPI på Android, QNN på Linux, CPU tilbakefall)

Modellen wrappers og onnx_engine.h flyttet inn speech-core i modellen-utdrag refaktor; se docs/models.md for hele lageret.

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/

Kildekode: github.com/soniqo/speech-android