Terjemahan mesin · Versi asli bahasa Inggris

Arsitektur - Android

speech-android adalah sebuah jembatan Kotlin SDK + JNI tipis di atas speech-core C++ mesin. Semua ML inferensi dan orkestra pipa hidup di speech-core; speech-android handel hanya Android Mengepak. Linux / otomotif (Yocto, Qualcomm SA8295P/SA8255P dengan QNN) diselenggarakan langsung di speech-core / contoh / linux.

Stack

Pembungkus model (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) secara langsung mengimplementasikan speech-core antarmuka (VADInterface, STTInterface, TTSInterface, EnhancerInterface), jadi jembatan JNI membangun mereka dan referensi tangan ke speech_core::VoicePipeline tidak ada C-vtable adapter boilerplate.

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

Baris pipa

Pipa bicara berjalan tiga tahap secara berurutan: VAD ASAL STT OLEH TTSDeteksi Aktivitas Suara merekam pemicu, audio ditranskripsi oleh STT, dan TTS menghasilkan respon. Barge- dalam dukungan memungkinkan mengganggu TTS pemutaran ketika pengguna mulai berbicara mid- respons.

speech-core mengelola deteksi turn, penanganan interrupt, dan konteks percakapan. Model pembungkus diimplementasi speech-core antarmuka langsung - tidak ada C-vtable lapisan adaptor - membuatnya sama mudah untuk plug dalam backends bukan-ONNX (misalnya CoreML / MLX implementasi dalam speech-swift) yang sesuai dengan antarmuka yang sama.

Model

Semua model menggunakan ONNX format dengan INT8 kuantisasi sebagai default. Model diselenggarakan pada HuggingFace di bawah soniqo org dan auto-download pada penggunaan pertama via ModelManager.kt.

ModelTugasKuantisasiUkuran
Parakeet TDT v3STT (114 bahasa, vokal BPE 8192)INT8~ 891 MB
Kokoro-82MTTSINT8~ 330 MB
Pocket TTS 100M (opsional)Teks streaming - to- pidato (bahasa Inggris, suara Alba tetap)dinamis INT8 + FP32120,3 MB
Silero VAD v5Deteksi aktivitas suarafloat32~ 2 MB
DeepFilterNet3Cancellation SuaraFP16~ 8 MB
Pocket TTS

Pocket TTS adalah sebuah opsional speech-core ONNX backend. Ini tidak dalam saat ini speech-android unduh baku atau pemilihan model JNI; Kotlin SDK kabel tetap mengikuti pekerjaan.

Pengunduhan total model kira-kira 1.2 GB. Setelah download awal, semua kesimpulan berjalan sepenuhnya offline.

Inferensi: OnnxEngine

The onnx_engine.h wrapper menyediakan platform-aware operator eksekusi (EP) pilihan. Ini probe tersedia EP pada waktu-jalan dan jatuh kembali anggun:

PlatformChipsetPercepatan
AndroidSnapdragon 8 Gen 1 +NNAPI ASAP Hexagon NPU
AndroidSamsung Exynos 2200 +NNAPI ASASON Samsung NPU
AndroidGoogle Tensor G2 +Google TPU NAPI
AndroidCPU fallbackXNPack

Untuk komunikasi otomotif SA8295P / SA8255P dengan QNN (Hexagon DSP), lihat speech-core / contoh / linux.

Berkas kunci C++

BerkasTujuan
jni_bridge.cppKonstruks speech_core::* Model pembungkus dan referensi tangan ke VoicePipeline
parakeet_stt.cppSTT dengan decoder serakah TDT dan per- fitur mel normalisasi
kokoro_tts.cppTTS dengan model E2E dan masker perhatian
kokoro_phonemizer.cppDictionary- berbasis fonemizer untuk masukan TTS
silero_vad.cppDeteksi aktivitas suara
deepfilter.cppPemrosesan suara dengan STFT / ERB
onnx_engine.hPlatform- sadar ONNX Runtime wrapper (NNAPI hidup Android, QNN on Linux, CPU fallback)

Model pembungkus dan onnx_engine.h pindah ke speech-core dalam model-refactor ekstraksi; lihat docs / models.md untuk persediaan penuh.

Struktur Sumber

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/

Kode sumber: gitub.com /soniqo/speech-android