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 SarcinaCuantificareDimensiune
Parakeet TDT v3STT (114 limbi, 8192 BPE vocab)INT8~ 891 MO
Kokoro-82MTTSINT8~330 MO
Pocket TTS 100M (opțional)Streaming text-to-speech (English, fix voce Alba) dinamică INT8 + FP32120.3 MB
Silero VAD v5Detectarea activității vocalefloat32~2 MO
DeepFilterNet3 Anularea zgomotuluiFP16~8 MO
Pocket TTS

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
AndroidSnapdragon 8 Gen 1+NNAPI → Hexagon NPU
AndroidSamsung Exynos 2200.NNAPI → Samsung NPU
AndroidGoogle Tensor G2+NNAPI → Google TPU
Orice AndroidCPU RetragereXNNPACK

Pentru automobile Qualcomm SA8295P / SA8255P cu QNN (Hexagon DSP), a se vedea speech-core/exemplu/linux.

Key C++ Fișiere

FișierScop
jni_bridge.cppConstrucţii speech_core::* ambalaje model şi referinţe la mâini VoicePipeline
parakeet_stt.cppSTT cu decodor TDT lacom și normalizare mel per-feature
kokoro_tts.cppTTS 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.hPlatformă 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