تشغيل وكيل صوتي على الجهاز
خط أنابيب واحد، ثلاث ميزانيات ذاكرة.
الوكيل الصوتي المحلي ليس نموذجًا واحدًا — بل خط أنابيب من أربعة: كشف نشاط الصوت، وتحويل الكلام إلى نص، ونموذج لغوي، وتحويل النص إلى كلام، موصولة معًا بآلة حالات تدير الأدوار. خط الأنابيب نفسه على الهاتف وعلى الحاسوب المحمول. ما يتغير هو أي نموذج يوضع في كل صندوق، ويقرر ذلك رقمان: كم من الذاكرة لديك، وأي مُسرِّع تُغذّيه.
الرقم الذي يجب تذكّره هو الحلقة كاملةً، لا نموذج واحد: إدراك الكلام (STT) + توليد الإجابة (LLM) + تخليق الكلام (TTS) كلها تدخل ضمنه — نحو 1.2 GB على iPhone، ونحو 1.5 GB على Galaxy S23، وأقل من 4 GB على Mac مع دماغ محادثة حقيقي.
خط الأنابيب هو الجزء القابل للنقل.
يوجد التنسيق في speech-core كآلة حالات C++ خالصة، وهي محايدة للنماذج: المراحل الأربع واجهات تُوصِّل بها أي خلفية — على الجهاز عبر ONNX أو LiteRT أو CoreML/MLX، أو حتى واجهة سحابية — فيشغّل الخط نفسه مُستدعي أدوات بحجم 270M على الهاتف ودماغ Gemma 4 على Mac.
حلقة واحدة، أربع مراحل. كلمة الإيقاظ وإلغاء الصدى والتحسين خطوات اختيارية قبل VAD؛ واستدعاءات الأدوات من الـ LLM هي ما يجعله يتصرّف، لا أن يجيب فقط.
المنسِّق هو VoicePipeline في speech-core. يتولّى كشف الأدوار والمقاطعة وسجل المحادثة وحلقة استدعاء الأدوات وإدارة طابور الكلام — لكن دون أي نماذج خاصة به. كل مرحلة قابلة للاستبدال خلف واجهة (VADInterface، STTInterface، LLMInterface، TTSInterface) تدعمها بـ ONNX Runtime أو LiteRT أو CoreML/MLX (عبر شقيقتها speech-swift)، أو حتى واجهة سحابية. وهناك أنماط أخفّ أيضًا — Echo (VAD → STT → TTS) و TranscribeOnly (VAD → STT → نص).
الأولوية للـ NPU، والحلقة كاملة تدخل في نحو 1.5 GB.
على الهاتف يكون القيد هو الذاكرة والبطارية والحرارة — لا القدرة الحسابية الخام. الهدف الصحيح هو وحدة المعالجة العصبية (NPU): Neural Engine من Apple على iOS، وNNAPI / Hexagon على Android. تشغّل المُحوّلات المكمّمة بجزء يسير من طاقة الـ CPU أو الـ GPU، وتترك الـ CPU حرًّا للصوت والواجهة.
لماذا الـ NPU لا الـ CPU أو الـ GPU؟ الـ NPU محرّك تدفّق بيانات ثابت الوظيفة مبنيّ لمهمة واحدة — عملية الضرب-والتجميع منخفضة الدقة التي تتكوّن منها الشبكات العصبية. يحفظ الأوزان في ذاكرة SRAM على الرقاقة بجوار وحدات الحساب مباشرة، ويتخطّى جلب/فكّ التعليمات والمسارات العامة العريضة التي تستهلك معظم طاقة الـ CPU أو الـ GPU. ونقل البيانات يكلّف أكثر بكثير من إجراء الحساب، فإبقاء الاثنين محليًّا هو المكسب: تُنفَّذ عمليات ضرب المصفوفات نفسها بجزء يسير من الواط — دون خفض تردّد حراري، ودون استنزاف للبطارية، وتبقى الـ CPU حرّة لكل شيء آخر.
لذا فخط أنابيب الهاتف نماذج صغيرة ومكمّمة وصديقة للـ NPU: Silero VAD، وParakeet-EOU 120M (STT دفقي خفيف مع كشف نهاية النطق مدمج)، وFunctionGemma 270M (دماغ استدعاء الأدوات)، وKokoro-82M أو Supertonic-3 للصوت. مقيسة على الجهاز:
| المرحلة · النموذج | iPhone 16 Pro (CoreML / ANE) | Galaxy S23 (LiteRT / ONNX، CPU) |
|---|---|---|
| STT · Parakeet-EOU 120M | 0.04 RTF · 297 MB | 0.21 RTF · 232 MB |
| STT · Omnilingual 300M | 0.28 RTF · 495 MB | 0.15 RTF · 831 MB |
| TTS · Kokoro-82M | 0.08 RTF · 676 MB | 0.53 RTF · 640 MB |
| TTS · Supertonic-3 99M | 0.15 RTF · 956 MB | 0.34 RTF · 832 MB |
| LLM · FunctionGemma 270M | 128 tok/s · 236 MB | 118 tok/s · 611 MB |
RTF = زمن الجدار ÷ ثواني الصوت (الأقل أسرع؛ <1.0 أسرع من الزمن الحقيقي). الذاكرة القصوى لكل نموذج على حدة.
كل مرحلة تتجاوز الزمن الحقيقي. وعند تحميلها معًا لوكيل حيّ، تبلغ مجموعة العمل المقيمة نحو 1.2 GB على iPhone ونحو 1.5 GB على Galaxy S23 — والفارق كلّه تقريبًا في الـ LLM: فـ FunctionGemma يستهلك 236 MB على الـ ANE مقابل 611 MB على معالج S23. إن iOS يعمل بالفعل على الـ NPU (وهذا هو STT بـ 0.04 RTF و LLM بـ 128 tok/s)؛ أما Android فيعمل بالزمن الحقيقي على الـ CPU اليوم، ومفوّضات NNAPI/Hexagon ميزة إضافية لا شرط.
جرّبه: Examples/iOSEchoDemo يشغّل Parakeet + Silero + Kokoro كحلقة صدى كاملة على iPhone؛ وجانب Android في speech-android، يغلّف خط الأنابيب نفسه. (Examples/iOSBenchmark هو أداة القياس وراء أرقام iPhone أعلاه.)
نموذج لغوي حقيقي يقود الجهاز — وما زال دون 4 GB.
على Mac يخفّ القيد: ذاكرة موحّدة مشتركة بين الـ CPU ووحدة Metal الرسومية. المراحل الأربع نفسها، لكن بنماذج أكبر، والأهم دماغ محادثة حقيقي بدل مُستدعي أدوات بحجم 270M — والحلقة كاملة ما زالت تدخل في نحو 4 GB.
الـ LLM هو الدماغ، وعنده يتوقّف حجم النموذج عن كونه اختياريًّا. بعد الاختبار، استحقّ نموذجان المهمّة: FunctionGemma 270M على الهاتف (يكفي لإصدار استدعاء أداة، وهو كل ما يحتاجه وكيل على الهاتف) وGemma 4 E2B/E4B (4-bit MLX) على الحاسوب المكتبي (محادثة متعدّدة الأدوار واستدلال حقيقيان يصمدان، مع بقائه خفيفًا). أما الوسط المغري — رأس محادثة مدمج دون 1B — فيبدو مجانيًّا في البصمة لكنه يتعثّر في المحادثة متعدّدة الأدوار الحقيقية، فلم يجتز الاختيار. القفزة المهمّة ليست 0.27B → 0.8B؛ بل استدعاءات أدوات FunctionGemma → محادثة Gemma 4.
وترتقي بقية الحزمة أيضًا: يستبدل الحاسوب المكتبي Parakeet-EOU الخفيف بـ Parakeet-TDT (متعدّد اللغات كاملًا)، ويبقى الـ TTS على Supertonic-3 في كل مكان — سريع، 44.1 kHz، مستقرّ. ونتجاوز عمدًا نماذج TTS الأثقل ذات الاستنساخ الصفري؛ فالاستنساخ ليس موثوقًا بما يكفي ليجلس داخل وكيل يعمل دائمًا.
| المرحلة | الهاتف | المكتبي (Mac / MLX) |
|---|---|---|
| VAD | Silero v6.2.1 | Silero v6.2.1 |
| STT | Parakeet-EOU (streaming) | Parakeet-TDT (multilingual) |
| LLM | FunctionGemma 270M | Gemma 4 E2B/E4B |
| TTS | Kokoro-82M / Supertonic-3 | Supertonic-3 |
| Resident set | iPhone ~1.2 GB · S23 ~1.5 GB | ~4 GB |
تلك المسار المكتبي هو ما يقدّمه Runner Agent — تطبيق macOS موثّق يشغّل Mic → VAD → Parakeet-TDT → Gemma 4 → Supertonic TTS محليًّا بالكامل، حزمة DMG بحجم 47 MB والحلقة كاملة نحو 4 GB على Apple Silicon. ولأن الدماغ يصدر استدعاءات أدوات، لا يكتفي Runner بالردّ — بل يقود الجهاز بالصوت: يفتح متصفّحًا وينفّذ عمليات DOM، ويفتح Telegram أو WhatsApp لقراءة الرسائل الواردة وكتابة الردود، ويطلق التطبيقات ويتحكّم بها — كل ذلك من أوامر منطوقة، وكل ذلك محليًّا. وهذا هو السبب الحقيقي لرغبة الحاسوب المكتبي في Gemma 4 لا مُستدعي أدوات بحجم 270M: التصرّف في الجهاز يتطلّب استدلالًا فعليًّا، لا مجرّد ملء خانات.
خط أنابيب واحد، مطابق للميزانية.
VAD → STT → LLM → TTS متطابقة في كل مكان. وكل المثير هو مطابقة كل مرحلة لمُسرِّع الجهاز وذاكرته.
البطارية والحرارة تختاران النماذج. الـ ANE يجعل iOS شبه مجاني على الـ CPU؛ وAndroid يعمل بالزمن الحقيقي على الـ CPU اليوم مع هامش NPU قادم.
الحلقة كاملة تدخل في نحو 4 GB، وهذه الميزانية تشتري استدلال Gemma 4 الذي يقود الجهاز بالصوت، مع Parakeet-TDT متعدّد اللغات.
الصوت وحالة المحادثة لا يغادران الجهاز أبدًا — الإدراك والاستدلال والتخليق كلها تعمل على المعدن أمامك.
