تصور کنید یک اسباببازی قدیمی از دهه ۹۰ میلادی، حالا بتواند با شوخطبعی کامل با شما بحث کند و دقیقاً همزمان با کلماتش، لبهایش را تکان دهد. این دیگر یک اثر ویژه سینمایی نیست، بلکه نتیجه پیوند سختافزار ارزانقیمت و جدیدترین مدلهای چندوجهی است.
طبق مستندات منتشرشده در ۱۳ ژوئیه ۲۰۲۶، یک توسعهدهنده توانسته است ماهی مدل Big Mouth Billy Bass را به یک دستیار صوتی زنده تبدیل کند. این پروژه از مدل Amazon Nova 2 Sonic روی پلتفرم Amazon Bedrock استفاده میکند تا جریانی دوطرفه از صدا با کمترین تأخیر (Latency) ایجاد کند.
این اتفاق در حالی رخ میدهد که موج ادغام هوش مصنوعی در لبه (Edge AI) — یعنی آوردن پردازش به نزدیکی دنیای فیزیکی، شبیه به نصب یک مغز کوچک روی یک ماشین لباسشویی یا یخچال — در حال گسترش است. همانطور که در تحلیل قبلی ما دربارهی OpenClaw اشاره کردیم، رزبریپای نقش درگاه ورودی برای هوش مصنوعی را ایفا میکند، اما این پروژه تمرکز را به «آخرین اینچ» سختافزاری، یعنی حرکت فیزیکی یک اسباببازی منتقل کرده است. این پروژه ثابت میکند که مدلهای چندوجهی پیشرفته اکنون به قدری بهینه شدهاند که میتوانند رباتیک پیچیده را بدون نیاز به تخصص مهندسی حرفهای به حرکت درآورند. در واقع، این راهنما بر اساس تجربه سازندهای نوشته شده که پیش از این هرگز رزبریپای را لمس نکرده بود و تمام این مسیر را تنها در یک آخر هفته با کمک Claude Code طی کرد. او از یک استراتژی پرامپت گامبهگام برای رفع خطاها (Debug) و شناسایی پینهای سختافزاری از طریق عکسهای گرفته شده استفاده کرد.
لایههای سختافزاری
قلب تپنده این سیستم یک Raspberry Pi 5 با ۸ گیگابایت رم است — هرچند مدل ۴ گیگابایتی نیز کفایت میکند — که منطق محلی و ورودی/خروجی صدا را مدیریت میکند. برای جلوگیری از افت سرعت پردازشی (Thermal Throttling) در طول جلسات فعال هوش مصنوعی، استفاده از هیتسینک و فن خنککننده فعال (Active Cooler) رسمی رزبریپای الزامی است. تغذیه دستگاه نیز باید از طریق یک منبع جریان ۲۷ وات USB-C PD (مانند مدلهای رسمی Pi یا RasTech GaN) باشد؛ استفاده از شارژرهای استاندارد موبایل توصیه نمیشود زیرا رزبریپای در صورت نبود منبع تغذیه مناسب، توان ارائهشده به پورتهای USB را محدود میکند.
لیست دقیق قطعات مورد نیاز (قیمتهای ژانویه ۲۰۲۶ - مجموع حدود ۲۴۰ دلار):
- ماهی Big Mouth Billy Bass: نسخه فعلی شرکت "Gemmy" که دارای ۲ موتور است. (نکته: نسخههای کلاسیک سالهای ۱۹۹۹ تا ۲۰۰۵ دارای ۳ موتور هستند و نیاز به تغییر در ساختار پروژه دارند).
- حافظه: کارت MicroSD ظرفیت ۶۴ گیگابایت (مانند Transcend USD340).
- ورودی/خروجی صدا: بلندگوی USB کوچک (مانند HONKYOB) و یک میکروفون USB مدل CGS-M1 با پایه منعطف (Gooseneck).
- کنترل موتور: درایور موتور دوگانه MX1508 (که اغلب به عنوان جایگزین L298N فروخته میشود) و یک کیت ۱۲۰ عددی سیمهای جامپر DuPont.
- ابزارها: کیت لحیمکاری ۶۰ وات قابل تنظیم و یک مدل کاتر flush مدل KATA برای لایهبرداری سیمها.
- موارد اختیاری: کیت کانکتور JST XH برای مرتبتر شدن اتصالات و برشها.
برای پل زدن بین منطق ۳.۳ ولتی رزبریپای و موتورهای ماهی، از درایور MX1508 استفاده شده است. این قطعه به رزبریپای اجازه میدهد دو عملکرد اصلی را کنترل کند: باز و بسته شدن دهان و یک موتور مشترک که بین چرخش سر و تکان دادن دم تغییر وضعیت میدهد. اسمبل کردن این بخش نیازمند ۱۰ اتصال لحیمکاری است که برد درایور را از طریق سیمهای DuPont مادگی به رزبریپای متصل میکند.
جراحی و شناسایی قطعات
قبل از نصب «مغز»، باید جراحی ماهی انجام شود. این فرآیند شامل باز کردن حدود شش پیچ از صفحه پشتی و دور ریختن کامل مدارات اصلی قدیمی است. راهنمای پروژه یک دستورالعمل برای شناسایی قطعات داخلی ارائه میدهد:
- قطعاتی که باید حفظ شوند: استوانههای نقرهای به اندازه انگشت شست با گیربکسهای سیاه (موتورها) و سیمهای مربوط به دکمه فشار جلویی.
- قطعاتی که باید حذف شوند: برد کنترل اصلی، بازر (Buzzer) پیزو نقرهای تخت به اندازه سکه، بلندگوی دیسکی گرد با سوراخهای توری و سنسور حرکتی/چراغ جلویی.
یک نکته حیاتی در اینجا اعتماد نکردن به رنگ سیمهاست؛ چون در نسخههای مختلف متفاوتاند و باید با انگشت مسیر سیمها را دنبال کرد. در ساخت نسخه اول، موتور نزدیک دم در واقع موتور بدنه بود، در حالی که موتور دهان در عمق بیشتری نزدیک سر قرار داشت. برای کسانی که مدلهای «کلاسیک» (۱۹۹۹-۲۰۰۵) را دارند، ساختار باید تغییر کند تا ۳ موتور مجزا را پشتیبانی کند که مستلزم یک برد درایور اضافی و یک پین GPIO بیشتر است.
موتور هوش مصنوعی: Nova 2 Sonic
مغز این ماهی مدل Amazon Nova 2 Sonic (با شناسه amazon.nova-2-sonic-v1:0) است. برخلاف سیستمهای قدیمی تبدیل متن به گفتار (TTS) که تجربهای «نوبتی» و دارای وقفه ایجاد میکردند، این سیستم از عامل استریم دوطرفه Strands Agents (موسوم به BidiAgent) استفاده میکند تا یک حلقه صوتی زنده و تمامدوبلکس ایجاد کند.
- نرخ صدا: سیستم برای ورودی و خروجی روی ۱۶,۰۰۰ هرتز تنظیم شده تا با الزامات Nova Sonic سازگار باشد. این تنظیم از طریق یک فایل ALSA با نام
.asoundrcانجام میشود که میکروفون و بلندگوی USB را به عنوان پیشفرض سیستم تثبیت میکند. در این فایل باید از نام کارتها (مثلاً "UACDemoV10") به جای شماره کارتها استفاده شود، زیرا شمارهها ممکن است بعد از هر بار ریبوت تغییر کنند. - تأخیر: مدل بایتهای صوتی را بهصورت لحظهای استریم میکند، بنابراین هوش مصنوعی میتواند از طریق
BidiInterruptionEventدر میانه یک جمله توسط کاربر قطع شود. این مدل از نظارتی دقیق بر جریان داده بهره میبرد و در دنیای زیرساختی، ابزارهایی مانند تکنولوژی eBPF برای مشاهده ترافیک ایجنتهای هوش مصنوعی به توسعهدهندگان کمک میکنند تا چنین جریانهای دادهای پیچیده را تحلیل کنند. - هزینه: هر چند دقیقه مکالمه صوتی تنها حدود یک سنت هزینه دارد. حسابهای جدید AWS میتوانند از ۱۰۰ تا ۲۰۰ دلار اعتبار استفاده کنند که معادل بیش از ۱۰۰ ساعت گپ زدن با ماهی است.
دستیابی به لبخوانی (Lip-Sync) فیزیکی
دستیابی به هماهنگی دقیق دهان با صدا، پیچیدهترین بخش فنی این پروژه است. مدل Nova Sonic دادههای صوتی را سریعتر از سرعت پخش آنها ارسال میکند (مثلاً یک جمله ۱۰ ثانیهای در حدود ۱ ثانیه میرسد)، بنابراین کد نمیتواند صرفاً با رسیدن دادهها، دهان را تکان دهد. برای حل این مشکل، یک کلاس برنامه نویسی سفارشی به نام BillyBody طراحی شده است که از _BidiAudioOutput ارثبری میکند.
این کلاس، بلندی صدا (Root Mean Square یا RMS) بایتهای صوتی را که در لحظه به بلندگو میرسند، در بازخوانی (Callback) پخش اندازهگیری میکند. مکانیزم به این صورت عمل میکند:
- محاسبه: نمونههای
in_dataرا گرفته و فرمولmath.sqrt(sum(s * s for s in samples) / len(samples)) / 32768.0را محاسبه میکند. - آستانه: وقتی این حجم از صدا از یک کف مشخص برای باز شدن دهان (
MOUTH_OPENبا مقدار پیشفرض ۰.۰۴) عبور کند، دستگاه PWMOutputDevice موتور دهان را به حرکت در میآورد. - نرمسازی: یک تابع نرمکننده (
0.6 * smoothed + 0.4 * body.level) استفاده شده تا دهان ماهی در وقفههای بسیار کوتاه، بهصورت لرزشی و غیرطبیعی تکان نخورد.
این فرآیند تضمین میکند که دهان ماهی دقیقاً زمانی تکان بخورد که صدا شنیده شود، نه زمانی که بستهی داده دریافت شده است، و در نتیجه یک همگامسازی بصری باورپذیر ایجاد میکند.
منطق طراحی رفتار (Coreography)
رفتار ماهی توسط یک حلقه اختصاصی body_loop مدیریت میشود که به عنوان یک تسک Asynchronous اجرا میگردد. این حلقه، رویدادهای مدل و سطوح صوتی را به سه حالت فیزیکی متمایز ترجمه میکند:
۱. سخنگویی (Speaking): به محض شروع پخش صدا، سر ماهی (از طریق موتور بدنه) بالا میآید. سر ماهی تا رسیدن به آستانه سکوت (SILENCE) به مدت ۱.۵ ثانیه بالا میماند، زیرا در جلسات زنده، پایان دقیق یک پاسخ همیشه بهطور قابلاطمینان سیگنال داده نمیشود.
۲. تأکید (Emphasis): در نقاط اوج صدا (که توسط پیچ تنظیم EMPHASIS روی ۰.۳ تعریف شده) یا رویدادهای خاص مکالمه مانند BidiResponseStartEvent و BidiResponseCompleteEvent دم ماهی تکان میخورد. این حرکت توسط یک زمان استراحت (COOLDOWN) ۱.۲ ثانیهای محدود شده تا ماهی بیش از حد «لرزان» به نظر نرسد.
۳. شوخطبعی (Banter): از طریق پرامپت سیستمی (System Prompt)، هوش مصنوعی مجبور شده است شخصیتی «طناز و شوخ» داشته باشد. دستور صریح به مدل این است: «هرگز بیش از یک جمله کوتاه در هر بار نگو... بین ۵ تا ۱۲ کلمه، سپس متوقف شو. این یک گپوگفت سریع است، نه داستانسرایی. هرگز لیست نکن، هرگز توضیح نده و تکگویی نکن.» این کار مانع از سخنرانیهای طولانی میشود که روی یک اسباببازی کوچک، مصنوعی به نظر میرسد.
جزئیات پیادهسازی و «دامهای» فنی
ساخت این ماهی نیازمند عبور از چندین مانع سختافزاری و نرمافزاری است. راهنما به «دامهای کپی-پیست» (Paste Gotchas) هنگام استفاده از SSH و ویرایشگر nano اشاره میکند؛ جایی که تورفتگیهای اضافی (Indentation) باعث IndentationError در پایتون میشوند (که با دستور sed -i 's/^ //' yourfile.py اصلاح میشود) و همچنین علامتهای نقلقول هوشمند (Smart Quotes) میتوانند اسکریپتها را خراب کنند. برای مقابله با این مشکلات، از دستور python -m py_compile به عنوان تست نهایی پیش از اجرای کد استفاده شده است.
ظرافتهای نرمافزاری و سیستمعامل:
- انتخاب سیستمعامل: راهنما اکیداً توصیه میکند از نسخه Desktop سیستمعامل رزبریپای استفاده نکنید، زیرا پنل Wayfire در این نسخه، فایل
.asoundrcرا هنگام ورود بهصورت تهاجمی بازنویسی میکند. نسخه Raspberry Pi OS Lite (۶۴ بیتی) با پایتون ۳.۱۲+ (بر پایه Trixie) مورد نیاز است. کاربرانی که بهاشتباه نسخه دسکتاپ را نصب کردهاند، میتوانند با دستورsudo systemctl set-default multi-user.target && sudo systemctl disable lightdm.service && sudo rebootآن را اصلاح کنند. - وابستگیها: بستههای سیستمی ضروری شامل
python3-dev،portaudio19-dev،swigوgitباید نصب شوند. بهطور خاص،swigبرای ساخت کتابخانه GPIO لازم است و عدم نصب زودهنگام آن منجر به خطای رایج در زمان نصبlgpioمیشود. - تأیید صدا: راهنما یک «تست رفت و برگشت» (Round-trip test) را با دستور
arecord -d 3 -f S16_LE -r 16000 test.wav && aplay test.wavاجباری کرده است تا اطمینان حاصل شود نرخ ۱۶,۰۰۰ هرتز قبل از ادغام با هوش مصنوعی بهدرستی کار میکند.
چالشهای سختافزاری:
- عدم تقارن موتور: موتور دهان اغلب با یک فنر بازگشت میجنگد. اگر دهان ماهی ضعیف باز شود، راه حل این است که جای دو پلاگ کانال دهان در هدر رزبریپای (سفید $\leftrightarrow$ خاکستری) عوض شود تا جهت چرخش موتور معکوس گردد.
- دقت در سیمکشی: ۴۰ پین رزبریپای نیازمند شمارش دقیق از سمت کانکتور برق USB-C هستند. با استفاده از نقشه رنگی ارائه شده (زرد +، سیاه -، سفید IN1، خاکستری IN2، آبی IN4، بنفش IN3)، سیمها باید دقیقاً قرار گیرند. سیمهای زرد (+) و سیاه (-) باید روی پینهای ۴ و ۶ باشند؛ یک اشتباه در شمارش در اینجا منجر به اتصال کوتاه میشود زیرا پین ۴ حامل ۵ ولت است.
- کیفیت لحیمکاری: راهنما بر «تست کشش» (Tug test - کشیدن محکم سیم) و «بررسی پل» (Bridge check - بازرسی بصری برای نبود تودههای لحیم بین پینها) برای هر ۱۰ اتصال تأکید میکند. یک شکست رایج، «چسبندگی سطحی» است که در آن سیم روی توده لحیم مینشیند به جای اینکه از سوراخ عبور کند، که منجر به خرابیهای متناوب در داخل ماهی میشود.
استقرار و امنیت
برای ایمنسازی سیستم، راهنما بر ایجاد یک سیاست دسترسی «حداقلی» (Least Privilege) IAM در منطقه us-east-1 (ویرجینیا شمالی) تأکید میکند. ماهی فقط اجازه دسترسی به اکشن bedrock:InvokeModelWithBidirectionalStream برای مدل خاص arn:aws:bedrock:us-east-1::foundation-model/amazon.nova-2-sonic-v1:0 را دارد. این تضمین میکند که اگر کارت SD دزدیده شود، تنها ریسک موجود، هزینه اندکی برای گپ زدن با ماهی در حساب AWS باشد، نه به خطر افتادن کل حساب کاربری. همچنین یک هشدار پرداخت (Billing Alarm) ۱۰ دلاری در ماه به عنوان لایه حفاظتی نهایی توصیه شده است. برای کسانی که به دنبال بهینهسازی هزینههای عملیاتی در مقیاس بزرگتر هستند، ابزارهایی مانند Frugon با مسیریابی هوشمند میتوانند هزینههای API مدلهای زبانی را به شدت کاهش دهند.
برای امنیت در سطح تولید (Production-grade)، پروژه یک پیادهسازی AWS IoT Core را در پوشه iot-identity/ ارائه میدهد. این روش کلیدهای دسترسی بلندمدت را با گواهینامههای X.509 جایگزین میکند.
- مکانیزم: دستگاه به جای کلید دسترسی، یک هویت گواهینامه (Certificate Identity) دریافت میکند. هنگام بوت، دستگاه از طریق Mutual TLS با نقطه انتهایی (Endpoint) اعتبارنامههای IoT تماس میگیرد تا گواهینامه را با اعتبارنامههای موقت IAM مبادله کند.
- زیرساخت: قالب CloudFormation ارائه شده با نام
billy-iot.yamlساخت نقش (Role)، نام مستعار (Alias) و سیاست (Policy) را خودکار میکند. - ادغام: این اعتبارنامههای موقت از طریق
BidiNovaSonicModel(client_config={"boto_session": ...})به جلسهboto3تزریق میشوند. این روش برتری دارد زیرا هیچe secret بلندمدتی روی دستگاه ذخیره نمیشود و هر ماهی هویت قابل ابطال مخصوص به خود را دارد.
این تلفیق سختافزار و نرمافزار، این فرض را میشکند که واقعگرایی در رباتهای ساده نیاز به کنترلرهای گرانقیمت و اختصاصی است. با انتقال پردازش سنگین به یک مدل ابری چندوجهی و استفاده از تحلیل محلی صدا برای تحریک موتورها، یک کیت ۲۴۰ دلاری میتواند تعاملی شبیه به انسان ایجاد کند.
گام بعدی شما
- اگر به رباتیک علاقه دارید، با استفاده از مدلهای چندوجهی، سعی کنید یک شیء غیرالکترونیکی را به یک رابط صوتی تبدیل کنید.
- برای کاهش تأخیر در پروژههای خود، استریم دوطرفه (Bidirectional Streaming) را جایگزین مدلهای سنتی درخواست-پاسخ کنید.
- برای مدیریت هزینه، حتماً هشدار پرداخت (Billing Alarm) را در کنسول AWS فعال کنید.
اما تأثیر این مدلهای صوتی بر صنعت بازیسازی و شخصیتهای غیرقابلبازی (NPC) حتی شگفتانگیزتر است — به تحلیل ما دربارهی آینده مدلهای استدلالی در محیطهای مجازی مراجعه کنید.




گفتگو