Mimari — Android

speech-android, speech-core C++ motoru üzerine kurulmuş ince bir Kotlin SDK + JNI köprüsüdür. Tüm ML çıkarımı ve işlem hattı düzenlemesi speech-core içinde yer alır; speech-android yalnızca Android paketlemesini yönetir. Linux / otomotiv (Yocto, QNN ile Qualcomm SA8295P/SA8255P) doğrudan speech-core/examples/linux içinde barındırılır.

Stack

Model sarmalayıcıları (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3), speech-core arayüzlerini (VADInterface, STTInterface, TTSInterface, EnhancerInterface) doğrudan uygular; böylece JNI köprüsü bunları oluşturur ve C-vtable adaptör boilerplate'i olmadan referansları speech_core::VoicePipeline'a teslim eder.

┌──────────────────────────────────────────────┐
│     SpeechPipeline (Kotlin genel API)         │
│             ↓ JNI                            │
│     jni_bridge.cpp (~250 satır)               │
└──────────────────┬───────────────────────────┘
                   │
┌──────────────────┴───────────────────────────┐
│       speech_core_models (git submodule)      │
│   Silero / Parakeet / Kokoro / DeepFilter     │
│       speech_core                             │
│   Sıra algılama · Kesintiler · Bağlam         │
└──┬────────┬────────┬────────┬────────────────┘
   │        │        │        │  doğrudan arayüz uygulaması
┌──┴──┐  ┌──┴──┐  ┌──┴──┐  ┌─┴────────┐
│ VAD │  │ STT │  │ TTS │  │ Enhancer │
└──┬──┘  └──┬──┘  └──┬──┘  └─┬────────┘
   └────────┴────────┴────────┘
       ONNX Runtime (CPU / NNAPI)

İşlem hattı

Konuşma işlem hattı üç aşamayı sıralı çalıştırır: VAD → STT → TTS. Ses etkinliği algılama kaydı tetikler, ses STT tarafından yazıya çevrilir ve TTS yanıtı üretir. Barge-in desteği, kullanıcı yanıt ortasında konuşmaya başladığında TTS oynatımının kesilmesine olanak tanır.

speech-core; sıra algılamayı, kesinti yönetimini ve konuşma bağlamını yönetir. Model sarmalayıcıları speech-core'un arayüzlerini doğrudan uygular — C-vtable adaptör katmanı yoktur — bu da aynı arayüzlere uyan ONNX dışı backend'leri (örneğin speech-swift içindeki CoreML / MLX uygulamaları) takmayı eşit derecede kolaylaştırır.

Modeller

Tüm modeller varsayılan olarak INT8 nicemleme ile ONNX formatını kullanır. Modeller HuggingFace'te aufklarer kuruluşu altında barındırılır ve ilk kullanımda ModelManager.kt aracılığıyla otomatik olarak indirilir.

ModelGörevNicemlemeBoyut
Parakeet TDT v3STT (114 dil, 8192 BPE sözlük)INT8~500 MB
Kokoro-82MTTSINT8~89 MB
Silero VAD v5Ses etkinliği algılamafloat32~1.2 MB
DeepFilterNet3Gürültü iptaliFP16~4.2 MB

Toplam model indirme yaklaşık 1.2 GB'dır. İlk indirmeden sonra tüm çıkarım tamamen çevrimdışı çalışır.

Çıkarım: OnnxEngine

onnx_engine.h sarmalayıcısı platforma duyarlı yürütme sağlayıcı (EP) seçimi sunar. Çalışma zamanında mevcut EP'leri yoklar ve sorunsuz şekilde geri çekilir:

PlatformYonga setiHızlandırma
AndroidSnapdragon 8 Gen 1+NNAPI → Hexagon NPU
AndroidSamsung Exynos 2200+NNAPI → Samsung NPU
AndroidGoogle Tensor G2+NNAPI → Google TPU
Herhangi bir AndroidCPU geri çekilmeXNNPACK

QNN (Hexagon DSP) ile otomotiv Qualcomm SA8295P / SA8255P için bkz. speech-core/examples/linux.

Önemli C++ dosyaları

DosyaAmaç
jni_bridge.cppspeech_core::* model sarmalayıcılarını oluşturur ve referansları VoicePipeline'a teslim eder
parakeet_stt.cppTDT açgözlü decoder ve özellik başına mel normalizasyonu ile STT
kokoro_tts.cppE2E modeli ve attention maskesi ile TTS
kokoro_phonemizer.cppTTS girişi için sözlük tabanlı fonemleştirici
silero_vad.cppSes etkinliği algılama
deepfilter.cppSTFT/ERB işleme ile gürültü iptali
onnx_engine.hPlatforma duyarlı ONNX Runtime sarmalayıcısı (Android'de NNAPI, Linux'ta QNN, CPU geri çekilme)

Model sarmalayıcıları ve onnx_engine.h, model çıkarma yeniden yapılandırması sırasında speech-core'a taşındı; tam envanter için docs/models.md'ye bakın.

Kaynak yapısı

speech-android/
  speech-core/              C++ motoru + ONNX model sarmalayıcıları (git submodule)
  sdk/src/main/
    cpp/jni_bridge.cpp      speech_core::VoicePipeline üzerinde ince JNI köprüsü
    cpp/CMakeLists.txt      speech-core'u add_subdirectory(SPEECH_CORE_WITH_ONNX=ON) ile çeker
    kotlin/.../speech/      Kotlin genel SDK (SpeechPipeline, ModelManager)
  sdk/src/androidTest/      Enstrümante e2e testleri
  app/                      Demo uygulama

Linux / otomotiv (C ABI, ALSA demosu, CLI araçları) şurada bulunur:
  speech-core/examples/linux/

Kaynak kodu: github.com/soniqo/speech-android