البنية — Android

speech-android هو SDK خفيف بلغة Kotlin مع جسر JNI فوق محرّك C++ speech-core. يقيم كامل الاستدلال التعلّمي وتنسيق خط الأنابيب داخل 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 (واجهة Kotlin العامّة)     │
│             ↓ JNI                            │
│     jni_bridge.cpp (~250 سطر)                 │
└──────────────────┬───────────────────────────┘
                   │
┌──────────────────┴───────────────────────────┐
│       speech_core_models (وحدة git فرعية)     │
│   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 اختيار موفّر التنفيذ (EP) الواعي للمنصّة. يستكشف الموفّرات المتاحة في وقت التشغيل ويرجع تلقائيًا إلى البدائل بسلاسة:

المنصّةالشريحةالتسريع
AndroidSnapdragon 8 Gen 1+NNAPI → Hexagon NPU
AndroidSamsung Exynos 2200+NNAPI → Samsung NPU
AndroidGoogle Tensor G2+NNAPI → Google TPU
أيّ جهاز Androidالرجوع إلى CPUXNNPACK

لمنصّات Qualcomm SA8295P / SA8255P في قطاع السيارات مع QNN (Hexagon DSP)، راجع speech-core/examples/linux.

ملفّات C++ الأساسية

الملفالغرض
jni_bridge.cppيبني مغلِّفات نماذج speech_core::* ويسلّم المراجع إلى VoicePipeline
parakeet_stt.cppSTT مع مفكِّك جشِع TDT وتطبيع mel لكل ميزة
kokoro_tts.cppTTS بنموذج E2E وقناع انتباه
kokoro_phonemizer.cppمولِّد فونيمات قائم على القاموس لإدخال TTS
silero_vad.cppكشف النشاط الصوتي
deepfilter.cppإلغاء الضوضاء بمعالجة STFT/ERB
onnx_engine.hمغلِّف ONNX Runtime واعٍ للمنصّة (NNAPI على Android، QNN على Linux، الرجوع إلى CPU)

انتقلت مغلِّفات النماذج وonnx_engine.h إلى speech-core في إعادة هيكلة استخراج النماذج؛ راجع docs/models.md للحصول على القائمة الكاملة.

هيكل الكود المصدري

speech-android/
  speech-core/              محرّك C++ + مغلِّفات نماذج ONNX (وحدة git فرعية)
  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 بأجهزة فعلية
  app/                      تطبيق تجريبي

Linux / قطاع السيارات (واجهة C ABI، عرض ALSA، أدوات CLI) تقيم في:
  speech-core/examples/linux/

الكود المصدري: github.com/soniqo/speech-android