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 v3 | STT (114 kieltä, 8192 BPE-vocab) | INT8 | ~891 MB |
| Kokoro-82M | TTS | INT8 | ~330 Mt |
| Pocket TTS 100M (valinnainen) | Tekstinvirittäminen puhekieleen (englanti, kiinteä Alba ääni) | Dynaaminen INT8 + FP32 | 120,3 Mt |
| Silero VAD v5 | Puheaktiivisuuden tunnistus | float32 | ~2 Mt |
| DeepFilterNet3 | Melun peruuttaminen | FP16 | ~8 Mt |
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:
| Alusta | Chipset | Kiihdytys |
|---|---|---|
| Android | Snapdragon 8 Gen 1+ | NNAPI → Heksagon NPU |
| Android | Samsung Exynos 2200+ | NNAPI → Samsung NPU |
| Android | Google Tensor G2+ | NNAPI → Google TPU |
| Mikä tahansa Android | CPU varalla | XNNNPACK |
Autoilun Qualcomm SA8295P / SA8255P QNN:n (Hexagon DSP) kanssa, ks. speech-core/esimerkit/linux .
Avain C++ Tiedostot
| Tiedosto | Aihe |
|---|---|
jni_bridge.cpp | Muodot speech_core::* mallikääreet ja käsiviittaukset VoicePipeline |
parakeet_stt.cpp | STT TDT ahne dekooderi ja per-feature normalisointi |
kokoro_tts.cpp | TTS kanssa E2E malli ja huomiomaski |
kokoro_phonemizer.cpp | Sanastoon perustuva puhelinlähetin TTS -syötteelle |
silero_vad.cpp | Äänen toiminnan havaitseminen |
deepfilter.cpp | Melujen poistaminen STFT/ERB-käsittelyllä |
onnx_engine.h | Platform-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