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.
| Model | Görev | Nicemleme | Boyut |
|---|---|---|---|
| Parakeet TDT v3 | STT (114 dil, 8192 BPE sözlük) | INT8 | ~500 MB |
| Kokoro-82M | TTS | INT8 | ~89 MB |
| Silero VAD v5 | Ses etkinliği algılama | float32 | ~1.2 MB |
| DeepFilterNet3 | Gürültü iptali | FP16 | ~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:
| Platform | Yonga seti | Hızlandırma |
|---|---|---|
| Android | Snapdragon 8 Gen 1+ | NNAPI → Hexagon NPU |
| Android | Samsung Exynos 2200+ | NNAPI → Samsung NPU |
| Android | Google Tensor G2+ | NNAPI → Google TPU |
| Herhangi bir Android | CPU geri çekilme | XNNPACK |
QNN (Hexagon DSP) ile otomotiv Qualcomm SA8295P / SA8255P için bkz. speech-core/examples/linux.
Önemli C++ dosyaları
| Dosya | Amaç |
|---|---|
jni_bridge.cpp | speech_core::* model sarmalayıcılarını oluşturur ve referansları VoicePipeline'a teslim eder |
parakeet_stt.cpp | TDT açgözlü decoder ve özellik başına mel normalizasyonu ile STT |
kokoro_tts.cpp | E2E modeli ve attention maskesi ile TTS |
kokoro_phonemizer.cpp | TTS girişi için sözlük tabanlı fonemleştirici |
silero_vad.cpp | Ses etkinliği algılama |
deepfilter.cpp | STFT/ERB işleme ile gürültü iptali |
onnx_engine.h | Platforma 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