ओमनी मॉडलः क्यूवेन2.5-ओम्नी और थिंकर-टॉकर स्प्लिट
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
सीखने के लक्ष्य
- निष्कर्ष पाइपलाइन को थिंकर (पाठ तर्क) और वार्ताकार (भाषण संश्लेषण) में विभाजित करें और बताएं कि समानांतर स्ट्रीमिंग क्यों काम करता है।
- वार्तालाप बातचीत के लिए समय-से-पहले ऑडियो-बाइट (TTFAB) बजट की गणना करें, घटक-दर-कम्पोनेन्ट।
- TMRoPE की समय-अनुसूचित स्थिति को चित्रण, ऑडियो और टेक्स्ट के भीतर कोडिंग में वर्णित करें।
- वास्तविक समय में तीन वार्तालाप पैटर्न का नाम बताइए: आधा-डूप्लेक्स, बारी-बारी से, पूर्ण-डूप्लेक्स।
समस्या
एक वास्तविक समय आवाज सहायक बहुत कुछ करना है, तेजी सेः
- उपयोगकर्ता को सुनें. वास्तविक समय में भाषण टोकन, आवाज गतिविधि का पता लगाने (VAD) यह जानने के लिए कि वे बोलने के लिए समाप्त हो गए हैं.
- वैकल्पिक रूप से देखें. कैमरा इनपुट 2-4 FPS, ध्वनि के साथ थिंकर में स्ट्रीम.
- सोचिए, बातचीत के इतिहास पर आधारित प्रतिक्रिया लिखिए।
- बोलें. ऑडियो टोकन संश्लेषित करें, तरंग स्वरूप में डिकोड करें, उपयोगकर्ता के स्पीकर में स्ट्रीम करें.
प्रत्येक चरण में विलंबता जोड़ती है। वार्तालाप-भावना के लिए कुल यात्रा < 500ms की आवश्यकता होती है, उपयोगकर्ता देरी को नोटिस करना बंद कर देता है। GPT-4o ~ 250ms का दावा करता है। मोशी ~ 160ms। Qwen2.5-Omni ~ 350-500ms।
हर घटक स्ट्रीम करने की जरूरत है. कुछ भी "बैच सब कुछ और फिर डिकोड" नहीं हो सकता है.
अवधारणा
सोचनेवाला और बोलने वाला
Qwen2.5-Omni का विघटनः
- थिंकरः एक 7B-80B पाठ उत्पन्न करने वाला ट्रांसफार्मर। इंटरलेटेड पाठ + छवि + ऑडियो टोकन का उपभोग करता है। क्या कहना है इसका प्रतिनिधित्व करने वाले पाठ टोकन आउटपुट करता है।
- स्पीकरः एक छोटा भाषण-उत्पादक ट्रांसफार्मर (200M-1B) । थिंकर के टेक्स्ट आउटपुट टोकन और हालिया भाषण-सामग्री टोकन का उपभोग करता है। डिस्क्रिट भाषण टोकन (बाकी-वीक्यू सूचकांक) आउटपुट करता है।
- स्पीच डेकोडरः एक स्ट्रीमिंग वेवफॉर्म डेकोडर (SNAC, MoVQGAN परिवार) जो वास्तविक समय में ऑडियो नमूनों में भाषण टोकन ले जाता है।
अलग होना महत्वपूर्ण है। अच्छे तर्क के लिए विचारक को बड़ा होना चाहिए। वार्ताकार छोटा हो सकता है क्योंकि उसका काम स्थानीय है पाठ को भाषण टोकन में परिवर्तित करना। बड़ा वार्ताकार अधिक अभिव्यक्तिशील नहीं है; यह धीमा है।
दोनों को समानांतर में चलानाः
- थिंकर पाठ टोकन t_i जारी करता है।
- स्पीकर t_i (स्ट्रीमिंग के माध्यम से) का उपभोग करता है और भाषण टोकन s_i, s_{i+1}, ..., s_{i+k} जारी करता है।
- स्पीच डेकोडर भाषण टोकन का उपभोग करता है और ऑडियो नमूने जारी करता है।
- जब तक थिंकर टेक्स्ट टोकन t_{i+3} पर है, तब तक Talker ने पहले से ही t_0..t_{i+2} के लिए ऑडियो स्ट्रीम कर दिया है।
TMRoPE समय-अनुकूलित मल्टीमोडल पद
विचारक को बातचीत इतिहास से छवि फ्रेम (कहते हैं, 4 एफपीएस), ऑडियो फ्रेम (कहते हैं 50 फ्रेम / सेकंड), और पाठ को एकीकृत करने की आवश्यकता है। एक भोले अनुक्रम क्रम (सभी छवियां, फिर सभी ऑडियो, फिर पाठ) समय संरेखण खो देता है।
TMRoPE प्रत्येक टोकन को पूर्ण समय टिकट सौंपता है। t=2.3s पर विजन टोकन। t=2.32s पर ऑडियो टोकन। t=2.35s पर उपयोगकर्ता से टेक्स्ट टोकन "स्टॉप"। RoPE समय टिकट द्वारा ध्यान को घुमाता है; मॉडल उन्हें समय के साथ समवर्ती के रूप में देखता है।
यह "उन्होंने नमस्ते करते हुए हिल दिया" के लिए बुनियादी ढांचा है काम करने के लिए मॉडल एक ही अवधारणा क्षण में वीडियो फ्रेम और ऑडियो देखता है।
स्ट्रीमिंग भाषण संश्लेषण
स्पीच टोकन को स्ट्रीम करना चाहिए। मिनी-ओम्नी (Xie & Wu, 2024) ने "भाषा मॉडल स्ट्रीमिंग में सोचते हुए सुन सकते हैं, बात कर सकते हैं": थिंकर आउटपुट टोकन और टॉलर आउटपुट टोकन एक ही अनुक्रम में इंटरलेव करते हैं। थिंकर अगले टेक्स्ट टोकन को कमिट करने के तुरंत बाद स्पीकर फायर करता है। कोई बैच सीमा नहीं।
मोशी (डेफोसेज़ एट अल, अक्टूबर 2024) सबसे तेज़ खुला कार्यान्वयन है। एकल ए 100 पर 160ms टीटीएफएबी। वास्तुकलाः एक एकल 7 बी ट्रांसफार्मर जो बारी-बारी से स्थिति पर पाठ और भाषण टोकन जारी करता है, एक "आंतरिक मोनोलॉग" के साथ जो सोच धारा को बोलने वाली धारा से अलग करता है। यह प्रभावी रूप से सोच + वार्ताकार है। सावधानीपूर्वक प्रशिक्षण के साथ एक मॉडल में विलय।
VAD और टर्न-टेकिंग
आवाज गतिविधि का पता लगाने इनपुट पक्ष पर चला जाता है. दो पैटर्नः
- आधा-डप्लक्सः उपयोगकर्ता बोलता है, मॉडल सुनता है। मॉडल बोलता है, उपयोगकर्ता सुनता है। VAD मौन का पता लगाने के माध्यम से स्पष्ट हस्तान्तरण (~ 200ms) ।
- पूर्ण डुप्लेक्सः दोनों एक साथ बोल सकते हैं। मॉडल बैकचैनल ("उह-हू") या बाधित कर सकता है। बहुत अधिक कठिन। मोशी इसका समर्थन करता है।
Qwen2.5 Omni डिफ़ॉल्ट रूप से आधा-डप्लक्स का समर्थन करता है, जिसमें चुप्पी सीमा के माध्यम से बारी-बारी से कार्य करना होता है। पूर्ण-डप्लक्स के लिए आवेदन परत के प्रबंधन की आवश्यकता होती है।
Qwen3-Omni (नवंबर 2025)
इसके बाद वाला Qwen3-80B Thinker, बड़ा Talker, TMRoPE-v2 में सुधार हुआ। GPT-4o के 250ms के करीब लेटेंसी। ओपन वेट। ओम्नीबेंच पर बेंचमार्क जेमिनी 2.0 लाइव के साथ प्रतिस्पर्धी है।
उत्पादन विलंबता बजट
एक विशिष्ट स्ट्रीमिंग बातचीत के लिएः
- माइक्रो -> ऑडियो टोकनः 40-80ms.
- पूर्व भरना (प्रोम्प्ट + इतिहास): 7B पर 100-200ms, 70B पर बहुत अधिक।
- प्रथम थिंकर पाठ टोकनः 40ms.
- वार्ताकार पहले पाठ टोकन को संसाधित करता हैः 20ms.
- पहला भाषण टोकन प्रतिबद्धताः 40ms.
- अवशिष्ट-वीक्यू डिकोडः 30ms।
- भाषण तरंग स्वरूप डिकोडः 50-80ms।
कुल टीटीएफएबीः 7 बी पर 320-510 एमएस, 70 बी पर 600-900 एमएस। सीमा गुणवत्ता आमतौर पर 70 बी + का मतलब है; इसलिए सीमा विलंबता अंतर।
टोकन दर गणित
16kHz स्पीच में 50 Hz बेस स्पीच टोकन के साथ, आपको आउटपुट के प्रति सेकंड 50 स्पीच टोकन की आवश्यकता होती है। स्पीकर को आगे बढ़ने के लिए ≥50 टोकन / सेकंड उत्सर्जित करना चाहिए। एच 100 पर 30-80 टोकन / सेकंड के एक विशिष्ट एलएलएम आउटपुट पर, एक छोटा (200-300 एम) स्पीकर काफी तेज़ होता है; एक 7 बी स्पीकर पीछे रह जाएगा।
यही कारण है कि "केवल मुख्य मॉडल का उपयोग" करने के बजाय छोटे समर्पित वार्ताकार मॉडल मौजूद हैं।
इसका प्रयोग करें
code/main.py:
- नकली टोकन उत्सर्जन दरों के साथ एक थिंकर-टॉकलर पाइपलाइन का अनुकरण करता है।
- कॉन्फ़िगरेबल मॉडल आकार और माइक्रोसॉफ्ट नमूना दरों के लिए TTFAB का गणना करता है।
- VAD मौन सीमा के साथ आधा-डूप्लेक्स टर्न-टेकिंग दिखाता है।
इसे भेजें
यह सबक हमें फल देता हैoutputs/skill-omni-streaming-budget.md. वास्तविक समय में आवाज उत्पाद के लक्ष्य TTFAB और सुविधा सेट (विजन-इन, द्विभाषी, पूर्ण-डूप्लेक्स) को देखते हुए, Qwen2.5 Omni, Qwen3-Omni, Moshi या Mini-Omni का चयन करता है और Thinker/Talker का आकार लेता है।
व्यायाम
- अपने लक्ष्य TTFAB 300ms है. एक 7B थिंकर और 300M वार्ताकार पर, प्रत्येक घटक की विलंबता लिखें.
- Qwen2.5-Omni TMRoPE का उपयोग करता है। एक प्रॉम्प्ट के लिए मॉडल क्या देखता है, जहां उपयोगकर्ता t=1s पर बोलना शुरू करता है और कैमरा t=1.2s पर एक इशारा कैप्चर करता है, इसका वर्णन करें।
- पूर्ण डुप्लेक्स समर्थन के लिए मॉडल को सुनते समय ऑडियो उत्सर्जित करने की आवश्यकता होती है। एक प्रशिक्षण डेटा प्रारूप का प्रस्ताव करें जो इसे सिखाता है।
- मोशी के पेपर सेक्शन 4 को पढ़ें। "अंतरिक एकांतर" विभाजन का वर्णन करें और यह विचारक-भाषी विभाजन से क्यों बचता है।
- व्यय बजट की गणना करेंः 16kHz भाषण को 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.