Speech Core
محرك كلام C++17 مفتوح المصدر للوكلاء الصوتيين — كشف النشاط الصوتي، تفريغ الكلام دفعةً وبثّاً في الزمن الحقيقي، التقسيم حسب المتحدّث، وتحويل النص إلى كلام، كل ذلك يعمل على الجهاز على Linux وWindows وAndroid. Apache 2.0.
ما هو
Speech Core هو نواة تنسيق صغيرة — آلة حالات، كشف الأدوار في الحوار، معالجة المقاطعات، وأدوات صوتية، دون أي اعتماديات تعلّم آلي — إضافةً إلى مجموعة من الواجهات المجرّدة لنماذج الكلام. يجري الاستدلال محلياً على المعالج؛ لا يغادر الصوت الجهاز أبداً، ولا وجود لـ Python وقت الاستدلال. استدلال النماذج اختياري عبر خلفيتين قابلتين للتبديل يمكن تفعيل كلٍّ منهما على حدة، أو يمكنك تقديم تنفيذاتك الخاصة للواجهات.
- تنسيق الوكيل الصوتي — يجمع
VoicePipelineبين VAD وتفريغ الكلام البثّي ونموذج لغوي وTTS في حلقة وكيل كاملة ثنائية الاتجاه مع المقاطعة (barge-in) وكشف الأدوار وحلقة استدعاء الأدوات. اطّلع على docs/pipeline.md ونظرة عامة على الوكلاء الصوتيين. - تقسيم حسب المتحدّث بلغة C++ خالصة — يجمع
DiarizationPipelineبين مُقسِّم ومُضمِّن لإنتاج مقاطع موسومة بالمتحدّثين، دون أي اعتمادية على بيئة تشغيل تعلّم آلي خاصة به. - يشغّل بقية المنظومة — speech-android هو SDK بلغة Kotlin + جسر JNI فوق Speech Core، ويستخدم Speech Studio محرّكه LiteRT VoxCPM2 على Windows وLinux. على منصّات Apple، المكتبة الشقيقة هي speech-swift.
المنصّات والخلفيات
| الخلفية | المنصّات | تسريع العتاد |
|---|---|---|
ONNX Runtime (SPEECH_CORE_WITH_ONNX) | Linux وmacOS وWindows وAndroid | NNAPI على Android، وQNN على Qualcomm Linux، وNVIDIA CUDA / TensorRT اختياري (-DSPEECH_CORE_WITH_CUDA=ON) |
LiteRT (SPEECH_CORE_WITH_LITERT) | Linux x86_64 وWindows x86_64 وAndroid وmacOS arm64 | المعالج حالياً |
فعّل أياً من الخلفيتين أو كلتيهما أو لا شيء منهما — نواة التنسيق تُبنى دون أي بيئة تشغيل تعلّم آلي على الإطلاق.
النماذج المدعومة
| النموذج | المهمة | ONNX | LiteRT |
|---|---|---|---|
| Silero VAD v5 | كشف النشاط الصوتي | ✓ | ✓ |
| Parakeet TDT v3 (0.6B) | من الكلام إلى النص (114 لغة) | ✓ | ✓ |
| Nemotron Speech Streaming (0.6B) | تفريغ كلام بثّي (الإنجليزية) | ✓ | ✓ |
| Nemotron-3.5 ASR Streaming Multilingual (0.6B) | تفريغ كلام بثّي (متعدد اللغات، موجَّه بالـ prompt) | ✓ | ✓ |
| Omnilingual ASR CTC (300M) | من الكلام إلى النص (متعدد اللغات) | — | ✓ |
| Pyannote Segmentation 3.0 | تقسيم حسب المتحدّث (تجزئة) | — | ✓ |
| WeSpeaker ResNet34-LM | تضمين المتحدّث | — | ✓ |
| VoxCPM2 (2B) | من النص إلى الكلام (48 kHz، استنساخ الصوت) | — | ✓ |
| Kokoro 82M | من النص إلى الكلام | ✓ | — |
| DeepFilterNet3 | تحسين الكلام | ✓ | — |
| PersonaPlex 7B | كلام إلى كلام ثنائي الاتجاه كامل (CUDA) | ✓ | — |
البدء السريع
ابنِ النواة مع خلفية LiteRT (تُستخرج مكتبة بيئة التشغيل من حزمة ai-edge-litert wheel — دون بناء TensorFlow):
git clone https://github.com/soniqo/speech-core && cd speech-core
scripts/fetch_litert.sh build/litert
cmake -B build -DCMAKE_BUILD_TYPE=Release \
-DSPEECH_CORE_WITH_LITERT=ON -DLITERT_DIR=$PWD/build/litert
cmake --build build
ثم اربط الأهداف التي تحتاجها:
target_link_libraries(my_app PRIVATE speech_core) # orchestration only
target_link_libraries(my_app PRIVATE speech_core speech_core_models) # + ONNX models
target_link_libraries(my_app PRIVATE speech_core speech_core_models_litert) # + LiteRT models
تفريغ مخزن صوتي يستغرق بضعة أسطر فقط:
#include <speech_core/models/litert_parakeet_stt.h>
speech_core::LiteRTParakeetStt stt(
"parakeet-encoder.tflite", "parakeet-decoder-joint.tflite", "vocab.json");
auto r = stt.transcribe(audio, n_samples, 16000); // r.text / r.language / r.confidence
بناء Linux مرجعي — libspeech.so مع واجهة C ABI صغيرة، وCLI تجريبي لـ ALSA، وأدوات للتفريغ والتركيب والتحويل الصوتي — موجود في examples/linux. يستهدف ARM64 المضمّن (Yocto، وQualcomm SA8295P / SA8255P) وأي جهاز تطوير Linux. خطوات الإعداد في دليل البدء على Linux.
على Android، استخدم speech-android — SDK بلغة Kotlin يغلّف Speech Core خلف جسر JNI (implementation("audio.soniqo:speech:0.0.9")). على macOS وiOS، استخدم speech-swift الذي يشغّل النماذج على CoreML وMLX وApple Neural Engine.
التوثيق
- docs/ — التوثيق الكامل داخل المستودع
- docs/pipeline.md — آلة حالات
VoicePipeline، وتكامل AEC، وحلقة استدعاء الأدوات - docs/models.md — قائمة النماذج الكاملة
- huggingface.co/soniqo — أوزان النماذج المحوَّلة (ONNX وLiteRT)
الملاحظات
افتح issue على github.com/soniqo/speech-core/issues، أو انضم إلى Discord.