Konekäännös · Englanninkielinen alkuperäinen

Arkkitehtuuri ... Android

speech-android on ohut Kotlin SDK + JNI silta yli speech-core C++-moottori. Kaikki ML-päätelmät ja -putkistot elävät speech-core:ssä; speech-android käsittelee vain Android -pakkausta. Linux / auto (Yocto, Qualcomm SA8295P/SA8255P QNN:n kanssa) on sijoitettu suoraan QNN:ään. speech-core/esimerkit/linux.

Pino

Mallikääreet (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) toteuttaa suoraan speech-core liitännät (VADInterface, STTInterface, TTSInterface, EnhancerInterface), joten JNI silta rakentaa ne ja kädet viittaukset speech_core::VoicePipeline jossa ei ole C-vtable-liitinlevyä.

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

Putkijohto

Puheputki kulkee kolme vaihetta peräkkäin: VAD → STT → TTS. Äänen aktiivisuustunnistus laukaisee nauhoituksen, ääni kirjoitetaan STT: n avulla ja TTS tuottaa vasteen. Sisällä olevan tuen avulla voidaan keskeyttää TTS toisto, kun käyttäjä alkaa puhua vasteen puolivälissä.

speech-core hallitsee käänteentunnistuksen, keskeytyksen käsittelyn ja keskusteluyhteyden. Mallikääreet toteuttavat speech-core -rajapinnat suoraan ...ei C-vtable-adapterikerrosta... joten on yhtä helppoa kytkeä muihin kuin ONNX-taustaan (esim. CoreML / MLX -toteutukset speech-swift) jotka vastaavat samoja rajapintoja.

Mallit

Kaikissa malleissa käytetään ONNX -muotoa, jossa INT8 -määräytyminen oletuksena. Mallit on isännöity HuggingFace -muodossa soniqo - org -muodossa ja automaattisella latausjärjestelmällä ensimmäisen käytön yhteydessä ModelManager.kt.

Malli Tehtävä Määrä Koko
Parakeet TDT v3STT (114 kieltä, 8192 BPE-vocab)INT8~891 MB
Kokoro-82MTTSINT8~330 Mt
Pocket TTS 100M (valinnainen) Tekstinvirittäminen puhekieleen (englanti, kiinteä Alba ääni)Dynaaminen INT8 + FP32120,3 Mt
Silero VAD v5Puheaktiivisuuden tunnistusfloat32~2 Mt
DeepFilterNet3Melun peruuttaminenFP16~8 Mt
Pocket TTS

Pocket TTS on valinnainen speech-core ONNX backend. Se ei ole nykyisessä speech-android -oletuslatauksessa tai JNI-mallin valinnassa; Kotlin SDK -johdotus on edelleen seurantatyössä.

Mallin kokonaislataus on noin 1.2 GB . Alkuperäisen latauksen jälkeen kaikki päätelmät toimivat täysin offline-tilassa.

Päätelmä: OnnxEngine

onnx_engine.h -kääre tarjoaa alusta-tietoisen suorituspalveluntarjoajan (EP) valinnan. Se luotaa EP:n käytettävissä olevat EP:t ajon aikana ja kaatuu taaksepäin hienovaraisesti:

AlustaChipset Kiihdytys
AndroidSnapdragon 8 Gen 1+NNAPI → Heksagon NPU
AndroidSamsung Exynos 2200+NNAPI → Samsung NPU
AndroidGoogle Tensor G2+NNAPI → Google TPU
Mikä tahansa AndroidCPU varallaXNNNPACK

Autoilun Qualcomm SA8295P / SA8255P QNN:n (Hexagon DSP) kanssa, ks. speech-core/esimerkit/linux .

Avain C++ Tiedostot

Tiedosto Aihe
jni_bridge.cppMuodot speech_core::* mallikääreet ja käsiviittaukset VoicePipeline
parakeet_stt.cppSTT TDT ahne dekooderi ja per-feature normalisointi
kokoro_tts.cppTTS kanssa E2E malli ja huomiomaski
kokoro_phonemizer.cppSanastoon perustuva puhelinlähetin TTS -syötteelle
silero_vad.cpp Äänen toiminnan havaitseminen
deepfilter.cppMelujen poistaminen STFT/ERB-käsittelyllä
onnx_engine.hPlatform-aware ONNX Runtime wrapper (NNAPI on Android, QNN on Linux, CPU reserveback)

Mallin kääreet ja onnx_engine.h siirtyivät mallin uutoksen refaktorissa speech-core; ks. docs/models.md koko varaston osalta.

Lähderakenne

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/

Lähdekoodi: github.com/soniqo/speech-android