สถาปัตยกรรม — Android

speech-android เป็น SDK Kotlin แบบบาง + สะพาน JNI บนเอนจิน C++ speech-core การอนุมาน ML และการประสานงานไปป์ไลน์ทั้งหมดอยู่ใน speech-core; speech-android จัดการเฉพาะการแพ็กเกจสำหรับ Android Linux / ยานยนต์ (Yocto, Qualcomm SA8295P/SA8255P พร้อม QNN) โฮสต์โดยตรงที่ speech-core/examples/linux

สแต็ก

แรปเปอร์ของโมเดล (Silero VAD, Parakeet STT, Kokoro TTS, DeepFilterNet3) ติดตั้งอินเทอร์เฟซของ speech-core โดยตรง (VADInterface, STTInterface, TTSInterface, EnhancerInterface) ดังนั้นสะพาน JNI จึงสร้างแรปเปอร์เหล่านี้และส่งการอ้างอิงไปยัง speech_core::VoicePipeline โดยไม่ต้องมีบอยเลอร์เพลตอะแดปเตอร์ vtable C

┌──────────────────────────────────────────────┐
│     SpeechPipeline (API Kotlin สาธารณะ)         │
│             ↓ JNI                            │
│     jni_bridge.cpp (~250 บรรทัด)                │
└──────────────────┬───────────────────────────┘
                   │
┌──────────────────┴───────────────────────────┐
│       speech_core_models (git submodule)        │
│   Silero / Parakeet / Kokoro / DeepFilter       │
│       speech_core                               │
│   การตรวจจับเทิร์น · การขัดจังหวะ · บริบท         │
└──┬────────┬────────┬────────┬────────────────┘
   │        │        │        │  ติดตั้งอินเทอร์เฟซโดยตรง
┌──┴──┐  ┌──┴──┐  ┌──┴──┐  ┌─┴────────┐
│ VAD │  │ STT │  │ TTS │  │ Enhancer │
└──┬──┘  └──┬──┘  └──┬──┘  └─┬────────┘
   └────────┴────────┴────────┘
       ONNX Runtime (CPU / NNAPI)

ไปป์ไลน์

ไปป์ไลน์เสียงพูดทำงานสามขั้นตอนตามลำดับ: VAD → STT → TTS การตรวจจับกิจกรรมเสียงกระตุ้นการบันทึก เสียงถูก STT ถอดเป็นข้อความ และ TTS สร้างการตอบสนอง การสนับสนุน barge-in อนุญาตให้ขัดจังหวะการเล่น TTS เมื่อผู้ใช้เริ่มพูดในระหว่างการตอบสนอง

speech-core จัดการการตรวจจับเทิร์น การจัดการการขัดจังหวะ และบริบทของการสนทนา แรปเปอร์ของโมเดลติดตั้งอินเทอร์เฟซของ speech-core โดยตรง — ไม่มีเลเยอร์อะแดปเตอร์ vtable C — ทำให้ง่ายต่อการเสียบแบ็กเอนด์ที่ไม่ใช่ ONNX (เช่น การติดตั้ง CoreML / MLX ใน speech-swift) ที่สอดคล้องกับอินเทอร์เฟซเดียวกันได้อย่างเท่าเทียม

โมเดล

โมเดลทั้งหมดใช้รูปแบบ ONNX พร้อมการควอนไทเซชัน INT8 เป็นค่าเริ่มต้น โมเดลโฮสต์อยู่บน HuggingFace ภายใต้องค์กร aufklarer และดาวน์โหลดอัตโนมัติในการใช้งานครั้งแรกผ่าน ModelManager.kt

โมเดลงานการควอนไทเซชันขนาด
Parakeet TDT v3STT (114 ภาษา, คำศัพท์ BPE 8192)INT8~500 MB
Kokoro-82MTTSINT8~89 MB
Silero VAD v5การตรวจจับกิจกรรมเสียงfloat32~1.2 MB
DeepFilterNet3การลดเสียงรบกวนFP16~4.2 MB

ขนาดดาวน์โหลดโมเดลรวมประมาณ 1.2 GB หลังจากดาวน์โหลดครั้งแรก การอนุมานทั้งหมดทำงานแบบออฟไลน์เต็มรูปแบบ

การอนุมาน: OnnxEngine

แรปเปอร์ onnx_engine.h ให้บริการการเลือก execution provider (EP) ที่รับรู้แพลตฟอร์ม จะตรวจสอบ EP ที่มีอยู่ในเวลารันและทำการ fallback อย่างนุ่มนวล:

แพลตฟอร์มชิปเซ็ตการเร่งความเร็ว
AndroidSnapdragon 8 Gen 1+NNAPI → NPU Hexagon
AndroidSamsung Exynos 2200+NNAPI → NPU Samsung
AndroidGoogle Tensor G2+NNAPI → TPU Google
Android ใดก็ได้Fallback CPUXNNPACK

สำหรับ Qualcomm SA8295P / SA8255P สำหรับยานยนต์พร้อม QNN (Hexagon DSP) ดู speech-core/examples/linux

ไฟล์ C++ ที่สำคัญ

ไฟล์วัตถุประสงค์
jni_bridge.cppสร้างแรปเปอร์โมเดล speech_core::* และส่งการอ้างอิงไปยัง VoicePipeline
parakeet_stt.cppSTT พร้อมเดโคเดอร์ greedy TDT และการนอร์มัลไลซ์ mel ต่อฟีเจอร์
kokoro_tts.cppTTS พร้อมโมเดล E2E และ attention mask
kokoro_phonemizer.cppโฟนีไมเซอร์ที่ใช้พจนานุกรมสำหรับอินพุต TTS
silero_vad.cppการตรวจจับกิจกรรมเสียง
deepfilter.cppการลดเสียงรบกวนพร้อมการประมวลผล STFT/ERB
onnx_engine.hแรปเปอร์ ONNX Runtime ที่รับรู้แพลตฟอร์ม (NNAPI บน Android, QNN บน Linux, fallback CPU)

แรปเปอร์ของโมเดลและ onnx_engine.h ถูกย้ายเข้าใน speech-core ในการรีแฟกเตอร์การแยกโมเดล; ดู docs/models.md สำหรับสินค้าคงคลังฉบับเต็ม

โครงสร้างซอร์สโค้ด

speech-android/
  speech-core/              เอนจิน C++ + แรปเปอร์โมเดล ONNX (git submodule)
  sdk/src/main/
    cpp/jni_bridge.cpp      สะพาน JNI แบบบางบน speech_core::VoicePipeline
    cpp/CMakeLists.txt      ดึง speech-core ผ่าน add_subdirectory(SPEECH_CORE_WITH_ONNX=ON)
    kotlin/.../speech/      SDK Kotlin สาธารณะ (SpeechPipeline, ModelManager)
  sdk/src/androidTest/      การทดสอบ e2e ที่มี instrument
  app/                      แอปพลิเคชันเดโม

Linux / ยานยนต์ (ABI C, เดโม ALSA, เครื่องมือ CLI) อยู่ที่:
  speech-core/examples/linux/

ซอร์สโค้ด: github.com/soniqo/speech-android