
اسپیکرهای هوشمندی مانند Google Nest Hub یا Amazon Echo اگرچه راحت هستند، اما بهای آن را با از دست دادن کنترل، انعطافپذیری و اغلب حریم خصوصی میپردازید. نویسنده XDA پس از ورود به دنیای Home Assistant و آزمایش Home Assistant Voice Preview Edition، به این نتیجه رسیده که دیگر نیازی به سختافزار تجاری ندارد. او با ESPHome و سختافزارهایی مانند خانواده ReSpeaker و یک نمایشگر مبتنی بر ESP32، جایگزینهای متنباز خود را بدون مصالحه ساخته است.
به گفته او، این دستگاهها نهتنها امکان ساخت هر چیزی را میدهند، بلکه میتوان فرمانهای صوتی و یکپارچهسازیهای نرمافزاری اختصاصی نیز ساخت. مزیت دیگر قیمت کمتر است: ReSpeaker Lite حدود ۳۰ دلار، XVF3800 حدود ۵۵ دلار و نمایشگر ۷ اینچی Elecrow حدود ۴۰ دلار در زمان نگارش مقاله قیمت دارند.
ساخت دستیار صوتی با ESPHome و مدل زبانی محلی
قلب این راهاندازی، ESPHome است که به کاربر اجازه میدهد پیکربندیهای مبتنی بر YAML را روی دستگاههای مجهز به ESP32 مستقر کند. در بخش دستیارهای صوتی، کار با ReSpeaker Lite و ReSpeaker XVF3800 آغاز شد؛ حتی Home Assistant Voice Preview Edition نیز بهصورت تجاری با ESPHome توسعه یافته است.
همه این دستگاهها مانند Google Nest Mini یا Amazon Echo کار میکنند و خروجی صوتی، اسپیکرهای داخلی دلخواه (در صورت تمایل) و قابلیت شخصیسازی کامل دارند. آنها کاملاً روی شبکه محلی اجرا میشوند و به لطف Whisper که گفتار را به متن تبدیل میکند و نمونه Ollama روی سرور Proxmox، حتی پاسخها نیز بهصورت محلی تولید میشوند. دستیار صوتی اصلی او حتی صدای GLaDOS از بازی Portal را دارد و مانند او پاسخ میدهد.
او میگوید عشق به یادگیری عامل اصلی این علاقه بوده است؛ این دستگاهها راهی عالی برای شروع با فناوریهای گوناگون از شبکهسازی تا سیگنالدهی و سیمکشی هستند. برای نمونه، وقتی ReSpeaker Lite را آزمایش میکرد، پدرش یک TDK OutLoud CD Wallet به او داد؛ اسپیکری از نیمه دوم سال ۲۰۰۳ که به باتری نیاز داشت و روشن نمیشد. او آن را باز کرد و چند ساعت بعد یک دستیار صوتی قابل حمل در قالب همان کیف CD ساخته بود. این هنوز یکی از پروژههای محبوب او و نخستین تجربهاش در لحیمکاری است.
ESPHome پس از عبور از موانع اولیه اتصال به سختافزار، پیکربندی را نسبتاً ساده میکند. او با تجربه برنامهنویسی، دادهبرگهای رسمی (Datasheet) را میخواند و نرمافزار خود را مستقیماً با سختافزار واسطدهی میکند. با این حال در بیشتر موارد دیگران کار را انجام دادهاند و میتوان قطعهکدهای بیشتر دستگاهها را در GitHub یافت.
برخلاف دستیارهای اختصاصی، او کنترل همهچیز را دارد: میتواند حساسیت کلمه بیدارکننده (Wake Word) را تنظیم یا کلمه بیدارکننده خود را آموزش دهد، نحوه پخش پاسخها را تغییر دهد و آنها را به دستگاههای مختلف هدایت کند، و در صورت تمایل کل خط لوله (Pipeline) را محلی اجرا کند. این فقط موضوع حریم خصوصی نیست، بلکه مالکیت واقعی دستگاه است.
ساخت جایگزین Nest Hub با نمایشگر ESP32
این یکی از پیچیدهترین پروژههای او بوده است. چون سه دستگاه بهعنوان جایگزین Google Nest Mini داشت، گام بعدی جایگزینی Google Nest Hub آشپزخانه بود. با Elecrow CrowPanel Advance 7-inch HMI ESP32 AI Display این کار نسبتاً ممکن شد.
این نمایشگر میکروفون داخلی و خروجی اسپیکر JST PH 2.0mm دارد. او با شروع از پروژه آماده ESP32-S3-Box-3، عملکرد اصلی آن را به نمایشگر Elecrow منتقل کرد تا بازخورد بصری برای فرمانهای صوتی فراهم شود. در ابتدا از کتابخانههای استاندارد ترسیم نمایشگر ESPHome استفاده میکرد که کند بود اما میتوانست متن پرسش و پاسخ را نشان دهد. سپس به LVGL روی آورد که بسیار سریعتر است، هرچند فرصت نکرد متن را نیز منتقل کند.
با این پایه، افزودن قابلیتهای بیشتر ساده خواهد بود؛ مانند نمایشگر همیشهروشن با ساعت و تاریخ، یکپارچهسازی Google Calendar و سرویسهای دیگر. این دستگاه کاملاً با همه کارهای Google Nest Hub برابر نیست (و برخی موارد مانند پخش ویدئو احتمالاً ممکن نیست)، اما میتوان بیشتر قابلیتها را در کنار ویژگیهایی که هرگز روی Nest Hub کار نمیکردند یکپارچه کرد.
یکپارچگی نزدیک ESPHome با Home Assistant امکان کارهای زیادی را فراهم میکند و تنها محدودیت، توان برنامهنویسی و زمان اختصاصدادهشده است. او کل این پروژه را نیز در GitHub منتشر کرده است.
ESPHome و آزادی کنترل محلی
ESPHome جایی میان کدنویسی خام و پلاگاندپلی محض قرار میگیرد. برای شروع نیازی به نوشتن هزاران خط C++ یا دستوپنجه نرم کردن با درایورهای سطح پایین نیست، مگر اینکه خودتان بخواهید. معمولاً فقط رفتار سختافزار را در YAML توصیف میکنید؛ مانند پینهای متصل، حسگرهای موجود و نحوه نمایش یا گزارش دادهها، و ESPHome بقیه کار را انجام میدهد.
در نتیجه شروع با ESPHome بهطور فریبندهای ساده است. با پیشرفت کار میتواند بسیار دشوارتر شود، بهویژه هنگام نوشتن لامبداهای C++ داخل YAML، اما نتایج ارزش آن را دارد. خواندن دادهبرگها و ور رفتن با میکروفونهای I2S یا درایورهای نمایشگر سفارشی برای او شگفتآور و لذتبخش بوده است.
دستیارهای صوتی تجاری همیشه محدودیت دارند: دادهها در ابر میمانند، بهروزرسانی نرمافزار طبق برنامه شرکت انجام میشود و اگر شرکتی تصمیم به حذف یک قابلیت بگیرد، کاربر ضرر میکند. در اینجا او هنوز بهنوعی وابسته به بهروزرسانیهای ESPHome است، اما چون کل سیستم محلی اجرا میشود نگرانی کمتری دارد. همهچیز در اختیار اوست و حتی وقتی اینترنت قطع میشود، دستیارش کار میکند.
این دستگاهها او را ردیابی نمیکنند، تبلیغی ندارند و واقعاً متعلق به خودش هستند. او رفتار را کنترل میکند و وقتی دیگر از آن بهعنوان دستیار صوتی استفاده نکند، به کشو انداخته نمیشود؛ میتواند آن را به چیز دیگری مفید تبدیل کند.