نماذج Omni: Qwen2.5 Omni والفكر-المتكلم تقسيم
Type: Build
Languages: Python (stdlib, streaming pipeline latency simulator + VAD loop)
Prerequisites: Phase 12 · 19 (audio-LLMs), Phase 12 · 16 (any-to-any)
Time: ~180 minutes
أهداف التعلم
- تقسيم خط الأنابيب الاستنتاج إلى Thinker (التفكير النصي) و Talker (التوليد الكلامي) و شرح لماذا يعمل التدفق المتوازي.
- حساب ميزانية الوقت إلى أول بايت صوتي (TTFAB) للتفاعل المفاوضي ، جزءًا عن جزء.
- وصف وضع TMRoPE المتحالف مع الوقت في تشفير الرؤية والصوت والنص داخل Thinker.
- أسمائنا ثلاثة أنماط محادثة في الوقت الحقيقي: نصف دوبليكس، التحول، كامل دوبليكس.
المشكلة
مساعد صوتي في الوقت الحقيقي يجب أن يفعل الكثير، بسرعة:
- اسمع المستخدم، إشارة الكلام في الوقت الحقيقي، اكتشاف النشاط الصوتي (VAD) لمعرفة متى ينتهيون الكلام.
- إضافة الكاميرا عند 2-4 فبص، تدفق إلى Thinker جنبا إلى جنب مع الصوت.
- فكّر، اكتب ردّةً مشروطةً على تاريخ المحادثة.
- تحدث، قم بتوليد رموز الصوت، قم بتشخيصها إلى شكل موجة،
كل خطوة تضيف التأخير. يشعر المحادثة يتطلب إجمالي رحلة ذهاب وإياب < 500ms أقل من ذلك، يتوقف المستخدم عن ملاحظة التأخير. يدعي GPT-4o ~ 250ms. موشي ~ 160ms. Qwen2.5-Omni ~ 350-500ms.
كل مكون يحتاج إلى التدفق لا شيء يمكن أن يكون "بارت كل شيء ثم فك تشفير".
المفهوم
المفكر والمتحدث
تدهور Qwen2.5 Omni:
- المفكر: محول توليد نص 7B-80B. يستعمل رموز نصية + صورة + صوت متداخلة. يخرج رموز نصية تمثل ما يجب قوله.
- المتحدث: محول أصغر لتوليد الكلام (200M-1B). يستهلك رموز إخراج نصية Thinker بالإضافة إلى رموز سياق الكلام الأخيرة. يخرج رموز الكلام المفصلة (مؤشرات VQ المتبقية).
- مُشفِّر الكلام: مُشفِّر شكل الموجات المتدفق (SNAC، عائلة MoVQGAN) الذي يأخذ رموز الكلام إلى عينات الصوت في الوقت الحقيقي.
الفصل مهم. يجب أن يكون المفكر كبيرًا للحصول على منطق جيد. يمكن أن يكون المتحدث صغيرًا لأن وظيفته هي محلية تحويل النص إلى رموز الكلام. الكبير لا يكون أكثر تعبيرًا ؛ هو أبطأ.
تشغيل كلتا في مواز:
- يفكر ينبعث رمز نصي
- يتناول المتحدث t_i (من خلال التدفق) ويصدر رموز الكلام s_i، s_{i+1}، ..., s_{i+k}.
- إن مُشعّر الكلام يستهلك رموز الكلام عندما تأتي ويعرض عينات صوتية.
- بحلول الوقت الذي يصل فيه Thinker إلى رمز النص t_{i+3}، يتحدث بالفعل إلى صوت التدفق t_0..t_{i+2}.
TMRoPE مواقع متعددة الحركات المتحالفة مع الوقت
يحتاج المفكر إلى دمج إطارات الصور (التي تصل إلى، لنقل، 4 FPS) ، الإطارات الصوتية (التي تصل إلى 50 إطارات / ثانية) ، والنص من تاريخ المحادثة.
TMRoPE يعطي علامات زمنية مطلقة لكل رمز. علامة الرؤية عند t = 2.3 ثانية. علامة الصوت عند t = 2.32 ثانية. علامة نصية من المستخدم "توقف" عند t = 2.35 ثانية. RoPE يدور الانتباه حسب علامة الزمنية؛ يرى النموذج أنها متزايدة مؤقتة.
هذه هي البنية التحتية لـ "لقد ألمح بينما قال مرحبا" للعمل النموذج يرى الإطار الفيديو والصوت في نفس اللحظة المفاهيمية.
التوليدات التواصلية
يجب أن تتدفق رموز الكلام. أطلقت ميني أومني (Xie & Wu ، 2024) "نموذجات اللغة يمكن أن تسمع ، وتتحدث أثناء التفكير في التدفق": تتداخل رموز خروج Thinker و رموز خروج Talker في نفس الترتيب. يطلق المتحدث بمجرد أن يرتكب Thinker رمزا نصياً يلي. لا حدود دفعة.
موشي (Défossez et al., أكتوبر 2024) هو أسرع تنفيذ مفتوح. 160ms TTFAB على A100 واحدة. الهندسة المعمارية: محول واحد 7B الذي ينبعث من رموز النص والخطاب على مواقف متناوبة، مع "مونوغ الداخلي" الذي يفصل تدفق التفكير عن تدفق التحدث. هذا هو بشكل فعال Thinker + Talker دمج في نموذج واحد مع تدريب دقيق.
التحولات والتحويلات
اكتشاف النشاط الصوتي يعمل على جانب المدخل.
- نصف مضاعفة: المستخدم يتحدث، النموذج يستمع. النموذج يتحدث، المستخدم يستمع. التنقل الصافي عن طريق الكشف عن الصمت VAD (~ 200ms).
- المزدوج الكامل: يمكن أن يتحدث كلاهما في وقت واحد. يمكن أن يقوم النموذج بتمرير القناة الخلفية ("أوه-هوه") أو التقاطع. أصعب بكثير. يدعم موشي هذا.
Qwen2.5 Omni يدعم نصف دوبليكس حسب الاختيار، مع التحول عبر عتبة الصمت. يتطلب دوبليكس كامل التعامل مع طبقة التطبيق.
قوان3-أومني (نوفمبر 2025)
الخلفى. Qwen3-80B Thinker، أكبر تحدث، تحسين TMRoPE-v2. تأخير قريب من 250ms GPT-4o. الوزن المفتوح. مقاييس على OmniBench تنافس مع جيميني 2.0 Live.
ميزانية تأخر الإنتاج
للتفاعل النموذجي في التدفق:
- ميكروفون -> رموز الصوت: 40-80ms.
- إعداد مسبق (إسراع + تاريخ): 100-200ms عند 7B، أكثر بكثير عند 70B.
- أول رمز نصي من Thinker: 40ms.
- يتعامل المتحدث مع رمز النص الأول: 20ms.
- أول رموز خطاب تعطي: 40ms.
- إفراز البقايا-VQ: 30ms.
- تشكيل شكل موجة الكلام: 50-80ms.
إجمالي TTFAB: 320-510ms عند 7B ، 600-900ms عند 70B. عادة ما تعني جودة الحدود 70B + ؛ وبالتالي فجوة تأخر الحدود.
الرياضيات معدل الرمز
عند الكلام 16 كيلوهرتز مع 50 هرتز رمزات الكلام الأساسية ، تحتاج إلى 50 رمزة الكلام في الثانية من الخروج. يجب أن ينبعث المتحدث ≥50 tok / s للمواصلة. عند منتج LLM النموذجي من 30-80 tok / s على H100 ، يتحدث متحدث صغير (200-300M) سريع بما فيه الكفاية ؛ سيتخلف متحدث 7B.
هذا هو السبب في وجود نماذج صغيرة مخصصة للتلكر بدلا من "استخدام النموذج الرئيسي فقط".
استخدمها
code/main.py:
- يحاكي خط أنابيب "المفكرين-المتكلمين" مع معدلات إصدار رموز مزيفة
- يحسب TTFAB لأحجام النموذج القابلة للتشغيل ومعدلات العينة من الميكروفون.
- يظهر نصف التحول المزدوج مع عتبة الصمت VAD.
أرسله
هذا الدرس يُنتجoutputs/skill-omni-streaming-budget.md. بالنظر إلى هدف منتج صوتي في الوقت الحقيقي TTFAB ومجموعة الميزات (التبصر في، ثنائي اللغة، دوبلكس كامل) ، يختار Qwen2.5 Omni، Qwen3-Omni، Moshi، أو Mini-Omni ويحدد حجم المفكر/المتكلم.
التمارين
- هدفك هو 300ms على 7B Thinker و 300M Talker، كتابة كل جزء من التأخير.
- Qwen2.5Omni يستخدم TMRoPE. وصف ما يراه النموذج لإشارة حيث يبدأ المستخدم في التحدث عند t=1s والكاميرا تسجل إشارة عند t=1.2s.
- دعم الدبلكس الكامل يتطلب من النموذج إصدار الصوت أثناء الاستماع. اقترح تنسيق بيانات التدريب التي تعلم هذا.
- اقرأ ورقة موشي القسم الرابع. وصف الفصل "الوحيد الداخلي" ولماذا يتجنب الفصل بين المفكر والمتحدث.
- حساب ميزانية التكامل: كم يجب على المتحدث أن يُبعث بطاقات بسرعة للتواصل مع الخطاب 16 كيلوهرتز عند 50 بطاقة أساسية/ ثانية؟
الشروط الرئيسية
| Term | What people say | What it actually means |
|---|---|---|
| Thinker | "Reasoning brain" | Large text-generating transformer producing what to say |
| Talker | "Speech-generating mouth" | Small transformer producing discrete speech tokens from Thinker's text |
| TTFAB | "Latency budget" | Time-to-first-audio-byte: from user speech end to first audio sample out |
| TMRoPE | "Time-aligned RoPE" | Position encoding using absolute timestamps across vision, audio, text |
| Half-duplex | "Turn-taking" | User and model alternate; VAD silence detects user-done |
| Full-duplex | "Simultaneous" | Model can speak and listen at the same time; backchannel capable |
| Inner monologue | "Moshi separation" | Single-model design where thinking-stream and speaking-stream interleave |
المزيد من القراءة
- Xu et al. — Qwen2.5-Omni (arXiv:2503.20215)
- Qwen Team — Qwen3-Omni (arXiv:2509.17765)
- Xie & Wu — Mini-Omni (arXiv:2408.16725)
- Défossez et al. — Moshi (arXiv:2410.00037)
- Zeng et al. — GLM-4-Voice (arXiv:2412.02612)
This free lesson is part of the AI Engineering from Scratch curriculum. Read the full explanation, run the lesson code, and verify the result in the interactive reader or from the repository source.
Browse the complete course catalog or open this lesson on GitHub.