Tłumaczenie automatyczne · Oryginał angielski

Architektura - Android

speech-android jest cienkim Kotlin SDK + JNI most nad speech-core Silnik C++. Cała formacja ML i gazociąg na żywo w speech-core; speech-android obsługuje tylko opakowanie Android, a Linux - bezpośrednio w samochodach (Yocto, Qualcomm SA8295P / SA8255P). speech-core / przykłady / linux.

Stack

Opakowania modelu (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) bezpośrednio wdrożyć speech-core interfejsy (VADInterface, STTInterface, TTSInterface, EnhancerInterface), więc most JNI buduje je i ręce odniesienia do speech_core::VoicePipeline bez adaptera 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)

Pipeline

Gazociąg mowy przebiega kolejno w trzech etapach: VAD → STT → TTS. Wykrywanie aktywności głosowej uruchamia nagrywanie, audio jest zapisywane przez STT, a TTS generuje odpowiedź. Barge- in support pozwala przerwać odtwarzanie TTS, gdy użytkownik zaczyna mówić po średniej odpowiedzi.

speech-core zarządza wykrywaniem skrętu, przerywaniem obsługi i kontekstem rozmowy. Opakowania modelu implementują bezpośrednio interfejsy speech-core - bez warstwy adaptera C- vtable - co sprawia, że równie łatwo podłączyć inne niż-ONNX (np. implementacje CoreML / MLX w speech-swift) które odpowiadają tym samym interfejsom.

Modele

Wszystkie modele używają formatu ONNX z kwantyzacją INT8 jako domyślną. Modele są hostowane na HuggingFace pod soniqo org i auto- download przy pierwszym użyciu poprzez ModelManager.kt.

WzórZadanieIlościowanieRozmiar
Parakeet TDT v3STT (114 languages, 8192 BPE vocab)INT8- 891 MB
Kokoro-82MTTSINT8- 330 MB
Pocket TTS 100M (nieobowiązkowo)Streaming text- to- mowy (angielski, stały głos Alba)dynamiczny INT8 + FP32120,3 MB
Silero VAD v5Wykrywanie aktywności głosowejfloat32~ 2 MB
DeepFilterNet3Anulowanie hałasuFP16~ 8 MB
Pocket TTS

Pocket TTS jest opcjonalnym backendem speech-core ONNX. Nie znajduje się on w aktualnym domyślnym pobraniu speech-android ani w wyborze modelu JNI; okablowanie Kotlin SDK pozostaje kontynuacją.

Całkowity model do pobrania jest około 1.2 GB. Po wstępnym pobraniu, wszystkie wnioski są w pełni wyłączone.

Wniosek: OnnxEngine

W onnx_engine.h wrapper zapewnia wybór dostawcy wykonań (EP) na platformów- świadomej platformówce. Sonda umożliwia EPs w czasie biegu i wraca z wdziękiem:

PlatformaChipsetPrzyspieszenie
AndroidDragon 8 Gen 1 +NNAPI → Sześciokąt NPU
AndroidSamsung Exynos 2200 +NNAPI → Samsung NPU
AndroidGoogle Tensor G2NNAPI → Google TPU
Każdy AndroidOpadek CPUXNNPACK

Dla samochodów Qualcomm SA8295P / SA8255P z QNN (Heksagon DSP), patrz: speech-core / przykłady / linux.

Klucz Pliki C++

PlikCel
jni_bridge.cppKonstrukcje speech_core::* opakowania modelu i odniesienia do rąk VoicePipeline
parakeet_stt.cppSTT z łakomym dekoderem TDT i perfekcyjną normalizacją młową
kokoro_tts.cppTTS z modelem E2E i maską uwagi
kokoro_phonemizer.cppDictionary- based phonemizer for TTS input
silero_vad.cppWykrywanie aktywności głosu
deepfilter.cppAnulowanie hałasu przy przetwarzaniu STFT / ERB
onnx_engine.hPlatform- aware ONNX Runtime w opakowaniu (NNAPI na Android, QNN on Linux, CPU omdlenia)

Opakowania modelu i onnx_engine.h przemieszczenie do speech-core w refaktorze ekstrakcji modeli; patrz docs / models.md dla pełnego inwentarza.

Struktura źródła

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/

Kod źródła: github.com /soniqo/speech-android