این روزها ساخت یه دستیار صوتی محاورهای که کاملاً روی دستگاه خودتون و حتی روی CPU اجرا بشه، شدنیه. یه ریپازیتوری جالب دیدم که دقیقاً همین کار رو با کنار هم گذاشتن چندتا مدل اپنسورس و چندتا تکنیک هوشمندانه انجام داده.
اصل داستان، ساخت یک پایپلاین Speech-to-Speech با کمترین Latency ممکن روی سختافزار معمولیه. معماری کلی سیستم به این شکله که صدا به صورت استریم پردازش میشه و از یک چرخه چندمرحلهای عبور میکنه:
۱. تشخیص فعالیت صوتی (VAD) با pyannote/segmentation-3.0
۲. تبدیل گفتار به متن (STT) با whisper-tiny.en
۳. پردازش توسط مدل زبان (LLM) از طریق Ollama با مدلی مثل qwen2.5:0.5b
۴. تبدیل متن به گفتار (TTS) با Kokoro-82M
اما بخش مهم ماجرا، تکنیکهایی هست که برای کاهش Latency استفاده شده، خصوصاً Perceived Latency یا تأخیری که کاربر حس میکنه.
اولین تکنیک، Priority-based Text Chunking هست. به جای اینکه منتظر بمونیم تا کل جواب LLM آماده بشه، خروجی مدل به صورت استریم گرفته میشه و به محض رسیدن اولین کلمات، پردازش شروع میشه. یک TextChunker سفارشی، این متن رو بر اساس اولویتبندی هوشمندانهای به قطعات کوچیکتر تقسیم میکنه. اولویت با علائم نگارشی مثل نقطه و علامت سواله، بعدش نوبت کلمات ربطی مثل "however" یا "and" و در نهایت کاما و خط تیره میرسه. اینطوری TTS میتونه اولین تیکه از جواب رو خیلی سریعتر به صوت تبدیل کنه، در حالی که بقیه جواب هنوز داره تولید میشه.
دومین تکنیک، یه حقه جالب توی پرامپتنویسیه. از LLM خواسته میشه که جوابش رو با کلمات پُرکننده (Filler Words) مثل "umm" یا "so" شروع کنه. این کلمات تکهجایی هستن و TTS در چند میلیثانیه اونها رو به صوت تبدیل میکنه. این باعث میشه کاربر تقریباً بلافاصله یه صدایی از سیستم بشنوه و حس کنه که سیستم داره فکر میکنه تا جواب بده. این مکث کوتاه و طبیعی، زمان لازم برای تولید بقیه جواب رو میخره و تأخیر واقعی سیستم رو از دید کاربر پنهان میکنه.
نتیجهی این رویکرد روی یک سیستم بدون GPU با پردازنده AMD Ryzen 5600G، رسیدن به Latency حدود ۲ ثانیه بوده. اما با این تکنیکها، زمان شنیدن اولین صوت از سیستم به ۰.۵ تا ۰.۷ ثانیه کاهش پیدا کرده که تجربه مکالمه رو خیلی طبیعیتر میکنه.
به نظر من، این پروژه یک مثال عالی از مهندسی سیستمه. به جای تمرکز روی ساخت مدلهای بزرگتر، با ترکیب هوشمندانه چند مدل سبک و بهینهسازی پایپلاین برای بهبود تجربه کاربری، به یک نتیجه خیلی کاربردی رسیده. این نشون میده که چطور میشه با منابع محدود، محصولات قابل استفاده ساخت.
📃 مشاهده پروژه در گیتهاب:
https://github.com/asiff00/On-Device-Speech-to-Speech-Conversational-AI
🛠 Join @LLMEngineers Community
Post #183
1.23K