Automatische vertaling · Engels origineel

Architectuur Android

speech-android is een dunne Kotlin SDK + JNI brug over de speech-core C++-motor. Alle ML-invloeden en pijplijnorkestratie live in speech-core; speech-android behandelt alleen de Android verpakking. Linux / automotive (Yocto, Qualcomm SA8295P/SA8255P met QNN) wordt gehost direct in speech-core/examples/linux.

Stack

De modelwikkels (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) rechtstreeks ten uitvoer te leggen speech-core interfaces (VADInterface, STTInterface, TTSInterface, EnhancerInterface), dus de JNI brug bouwt ze en geeft verwijzingen naar speech_core::VoicePipeline zonder C-vtable adapter ketelplaat.

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

Pijpleiding

De spraakpijplijn draait drie fasen achtereenvolgens: VAD → STT → TTS. Voice Activity Detection triggers opnemen, audio wordt door STT getranscribeerd en TTS genereert het antwoord. Barge-in ondersteuning maakt het onderbreken van TTS afspelen mogelijk wanneer de gebruiker begint te spreken mid-respons.

speech-core beheert draaidetectie, onderbrekingsbehandeling en conversatiecontext. De modelwrappers implementeren de interfaces van speech-core direct .Er is geen C-vtable adapterlaag waardoor het even gemakkelijk is om niet-ONNX backends aan te sluiten (bv. de CoreML / MLX implementaties in speech-swift) die overeenkomen met dezelfde interfaces.

Modellen

Alle modellen gebruiken ONNX formaat met INT8 quantisering als standaard. Modellen worden gehost op HuggingFace onder de soniqo org en automatisch downloaden bij eerste gebruik via ModelManager.kt.

ModelTaakKwantisering Grootte
Parakeet TDT v3STT (114 talen, 8192 BPE vocab)INT8~891 MB
Kokoro-82MTTSINT8~330 MB
Pocket TTS 100M (facultatief)Streaming text-to-speech (Engels, vaste Alba-stem) dynamisch INT8 + FP32120,3 MB
Silero VAD v5Detectie van spraakactiviteitfloat32~2 MB
DeepFilterNet3 GeluidsannuleringFP16~8 MB
Pocket TTS

Pocket TTS is een optioneel speech-core ONNX backend. Het is niet in de huidige speech-android standaarddownload of JNI modelselectie; Kotlin SDK bedrading blijft het vervolgwerk.

Totale modeldownload is ongeveer 1,2 GB. Na de eerste download draait alle gevolgtrekking volledig offline.

Conclusie: OnnxEngine

De onnx_engine.h wrapper biedt een platform-aware executoriale provider (EP) selectie. Het sondeert beschikbare EP's op runtime en valt gracieus terug:

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

Voor automotive Qualcomm SA8295P / SA8255P met QNN (Hexagon DSP), zie speech-core/examples/linux.

Sleutel C++ Bestanden

Bestand Betreft
jni_bridge.cppTekent speech_core::* modelwikkels en verwijzingen naar de handen VoicePipeline
parakeet_stt.cppSTT met TDT hebzuchtige decoder en per feature mel normalisatie
kokoro_tts.cppTTS met E2E model en aandachtsmasker
kokoro_phonemizer.cpp Woordenboekgebaseerde telefoonmizer voor TTS invoer
silero_vad.cppDetectie van spraakactiviteit
deepfilter.cpp Geluidsannulering met STFT/ERB-verwerking
onnx_engine.h Platform-aware ONNX Runtime wrapper (NNAPI on Android, QNN on Linux, CPU fallback)

De modelwrappers en onnx_engine.h verplaatsten naar speech-core in de model-extractierefactor; zie docs/models.md voor de volledige inventaris.

Bronstructuur

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/

Broncode: github.com/soniqo/speech-android