معماری این مدل برخلاف روشهای Cascade که اول متن رو تولید میکنن و بعد میدن به TTS، از روشی به اسم "Parallel Decoding" استفاده میکنه. یعنی مدل همزمان که داره فکر میکنه (Text Tokens رو تولید میکنه)، داره حرف هم میزنه (Audio Tokens رو جنریت میکنه). این باعث میشه Latency به شدت بیاد پایین و حس یه مکالمه واقعی منتقل بشه.
پایه و Backbone این مدل Qwen2-0.5B هست. انتخاب یه مدل نیم میلیارد پارامتری نشون میده تمرکز تیم روی بهینهسازی Inference و قابلیت اجرا روی Edge Devices بوده. برای بخش صدا از انکودر Whisper و دیکودر SNAC استفاده کردن که کیفیت خروجی رو توی Streaming حفظ کنن.
مکانیزم جالبی که پیادهسازی کردن "Any Model Can Talk" نامگذاری شده. این یعنی عملاً یه آداپتور ساختن که میتونه به هر LLM دیگهای (مثلا Llama 3) متصل بشه و قابلیت صحبت کردن رو بهش اضافه کنه، بدون اینکه نیاز باشه کل مدل از صفر Train بشه. این متدولوژی شامل سه مرحلهست: Modality Alignment (هماهنگی صدا و متن)، Adaption Training و نهایتاً Multi-modal Finetuning.
نکته فنی مهم توی این پروژه استفاده از Batch Parallel Decoding هست. چون Reasoning روی مدالیته صدا سختتر از متنه، مدل میاد توی یه پروسه Batch، همزمان دو تا خروجی تولید میکنه: یکی برای لاجیک متنی و یکی برای تبدیل اون لاجیک به صدا. اینجوری قدرت استدلال متنی مدل حفظ میشه و صرفاً تبدیل به یه طوطی نمیشه.
به نظر من، اهمیت Mini-Omni توی وزنهای مدل نیست (چون 0.5B برای کارهای پیچیده خیلی کمه)، بلکه توی معماری و متدولوژی آموزششه. اینکه نشون دادن میشه بدون درگیر شدن با Latency وحشتناک سیستمهای Cascade، روی GPUهای معمولی هم Voice Assistant واقعی داشت، مسیر رو برای Local AI باز میکنه. دیتاست VoiceAssistant-400K که با GPT-4o تولید کردن هم برای Fine-tune کردن مدلهای دیگه روی لحن مکالمهای بسیار ارزشمنده.
محدودیت اصلی فعلیش اینه که فقط خروجی انگلیسی داره (هرچند ورودیهای دیگه رو با Whisper میفهمه) و کیفیت صداش هنوز به پای مدلهای تجاری نمیرسه، ولی به عنوان یه POC کاملاً قابل دفاعه.
برای تست لوکال نیاز به نصب
ffmpeg و PyAudio دارید و پیشنهاد میکنم روی محیط conda ایزوله تستش کنید چون Dependencyهای صوتی پایتون معمولا دردسر سازن.📑 گزارش فنی و معماری مدل:
https://arxiv.org/abs/2408.16725
📖 گیتهاب پروژه و کدها:
https://github.com/gpt-omni/mini-omni
🤗 دیتاست VoiceAssistant-400K:
https://huggingface.co/datasets/gpt-omni/VoiceAssistant-400K
🛠 Join @LLMEngineers Community