تصور کنید یک جریان کاری (Workflow) را در نظر بگیرید که در آن تایپ دستی جای خود را به فرمتبندی صوتی با سرعت بالا میدهد. این هسته اصلی Voicebox است؛ ابزاری که در ۱۶ ژوئیه ۲۰۲۶ منتشر شد و تکههای صوتی PCM را دریافت کرده و آنها را از طریق یک مدل زبانی بزرگ (LLM) عبور میدهد تا اطمینان حاصل شود که خروجی دقیقاً با زمینه (Context) پنجره فعال کاربر سازگار است.
بسیاری از ابزارهای تبدیل گفتار به متن، صرفاً به عنوان نرمافزارهای دیکته ساده عمل میکنند و نسخههای خامی از متن را تولید میکنند که نیاز به ویرایش دستی گسترده دارد. Voicebox این روند را با شکار «زمینه تمرکز» (Focus Context)—شامل نام اپلیکیشن، نقش المان (Element Role) و متن جایگزین (Placeholder)—تغییر میدهد. این قابلیت به LLM اجازه میدهد تا متن بازنویسی شده را به فرمتی صیقلخورده و آمادهی استفاده در آن برنامه خاص تبدیل کند، پیش از آنکه متن اصلاً به کلیپبورد منتقل شود.
بر اساس مستندات رسمی پروژه در گیتهاب، معماری سیستم بر پایه یک اپلیکیشن دسکتاپ ساخته شده با Wails (ترکیبی از زبان Go و React) است که از طریق وبساکتها (WebSockets) با یک Cloudflare Worker ارتباط برقرار میکند. در بخش بکاند، از Durable Objects برای تجمیع و انباشت دادههای صوتی استفاده شده است. خط لوله هوش مصنوعی (AI pipeline) نیز متشکل از مدل STT مدل Whisper-large-v3-turbo برای تبدیل صوت به متن و مدل Qwen3-30b-a3b-fp8 برای فرمتبندی نهایی است. این رویکرد در پردازش صوت، یادآور تلاشهای اخیر برای کاهش هزینههای تولید و پردازش صوت با استفاده از مدلهای زبانی است که به بهینهسازی مسیرهای پردازش سیگنال کمک میکند.
زمینه و جریان کاری (Context and Workflow)
تعامل کاربر برای ورودی بدون اصطکاک (Zero-friction) طراحی شده است. کاربر تنها با نگه داشتن کلید ترکیبی Ctrl+Cmd شروع به ضبط میکند. در این لحظه، اپلیکیشن زمینه تمرکز فعلی را شکار کرده، ضبط را فعال میکند و یک لایه شناور (Overlay) را در مرکز-بالای صفحه نمایش میدهد. یک نمایشگر سطح صدا (Voice level meter) ورودی فعال را بهصورت لحظهای نمایش میدهد. به محض رها کردن کلیدها، جریان صوتی به ابر ارسال میشود، جایی که Whisper آن را بازنویسی کرده و LLM متن را فرمت میکند. نتیجه نهایی در کلیپبورد کپی شده و از طریق یک دستور شبیهسازی شدهی Cmd+V بهطور خودکار در برنامه مبدأ چسبانده (Paste) میشود.
مشخصات فنی (Technical Specifications)
جزئیات فنی این سیستم نشاندهنده تمرکز بر سرعت و دقت در انتقال داده است:
- مشخصات صوتی: نرخ نمونهبرداری ۱۶ کیلوهرتز، مونو، فرمت PCM signed 16-bit LE.
- مدیریت داده: دادههای صوتی در تکههای (Chunks) حدود ۴۰۹۶ بایتی ارسال میشوند که هر تکه تقریباً ۱۲۸ میلیثانیه است.
- ظرفیت حداکثری: سیستم از ضبطهای تا ۲۵ مگابایت پشتیبانی میکند که تقریباً معادل ۱۳ دقیقه صوت است.
- یکپارچگی با macOS: این ابزار از AX API برای استخراج زمینه المانهای متمرکز و اجرای خودکار دستور Cmd+V استفاده میکند. برای دستیابی به چنین سرعت پاسخدهی در محیط مک، بهرهگیری از سختافزارهای تخصصی حیاتی است؛ برای مثال، فریمورک Espresso با دسترسی مستقیم به ANE توانسته است سرعت استنتاج مدلهای ترنسفورمر را در این سیستمعامل بهطور چشمگیری افزایش دهد.
معماری داخلی (Internal Architecture)
پروژه به گونهای ساختار یافته است که فرانتاند، لایه سازماندهی (Orchestration) مبتنی بر Go و بکاند Worker را از هم تفکیک کند:
- هسته دسکتاپ (Desktop Core): توسط فایلهای
main.goوapp.goبرای مدیریت چرخه حیات و سازماندهی خط لوله مدیریت میشود. مدیریت پنجرهها در macOS (شامل لایه شناور و تنظیمات) در فایلwindow_darwin.goهندل شده است. - ماژولهای داخلی: شامل بخش
audio(که از malgo/miniaudio برای محاسبه سطوح RMS استفاده میکند)، بخشpipelineبرای استریم وبساکت و بخشaccessibilityبرای تعاملات با AX API در macOS است. - رابط کاربری فرانتاند (Frontend UI): یک لایه با React و Tailwind CSS که توسط Vite ساخته شده است. فایل
App.tsxمسیرها را بین یک پنجره تنظیمات ۷۰۰×۴۵۰ در مرکز صفحه و یک لایه ضبط شناور ۱۶۰×۴۸ مدیریت میکند. - کلود ورکر (Cloud Worker): با زبان تایپاسکریپت (TypeScript) نوشته شده و دارای یک روتر برای نقاط انتهایی
/wsو/healthاست. همچنینsession.tsوظیفه مدیریت خط لوله هوش مصنوعی در Durable Object را بر عهره دارد.
پروتکل وبساکت (The WebSocket Protocol)
ارتباطات از یک توالی سختگیرانه پیروی میکنند تا فرمتبندی آگاه از زمینه (Context-aware) تضمین شود. کلاینت ابتدا از طریق GET /ws?token=<auth-token> متصل میشود. پس از دریافت پاسخ {"type":"ready"}، کلاینت یک پیام configure ارسال میکند که حاوی پارامترهای صوتی و متادیتای المان متمرکز است؛ این متادیتا شامل Bundle ID، نقش المان، عنوان، متن جایگزین و مقدار فعلی است. در ادامه، تکههای باینری PCM و سپس سیگنال {"type":"audio_end"} ارسال میشود و در نهایت سرور یک پاسخ {"type":"result"} را بازمیگرداند.
طراحی ماژولار این ابزار، ارائهدهندگان STT و فرمتبندر را از هم جدا میکند. در حالی که نسخه ابری از زیرساخت Cloudflare استفاده میکند، توسعهدهنده رابطهایی (Interfaces) در مسیرهای internal/stt/ و internal/formatter/ قرار داده است تا امکان استفاده از بکاند محلی با faster-whisper و Ollama فراهم شود؛ این موضوع نویدبخش یک حالت کاملاً خصوصی و آفلاین در مراحل آینده است.
برای کاربر، این سیستم مرحله «پرامپتنویسی» در تعامل با هوش مصنوعی را به حداقل میبرد. به جای اینکه به AI بگویید «این متن را به شکل یک تیکت جیرا فرمت کن»، ابزار تشخیص میدهد که کاربر در یک فیلد متنی در جیرا است و بر اساس متادیتای ارسال شده در پیام configure وبساکت، آن فرمتبندی را بهطور خودکار اعمال میکند.
این تغییر پارادایم نشان میدهد که عصر بعدی ابزارهای بهرهوری، از رابطهای چت مجزا به سمت «میانافزارهای نامرئی» (Invisible Middleware) حرکت خواهد کرد. با قرار دادن LLM بین روش ورود داده (صوت) و مقصد (اپلیکیشن)، اصطکاک فرمتبندی دستی کاملاً ناپدید میشود.
توسعهدهندگان میتوانند بکاند ابری را با تنظیم یک رمز مشترک از طریق دستور wrangler secret put VOICEBOX_TOKEN مستقر کنند و کلاینت را از طریق یک فایل TOML در مسیر ~/.config/voicebox/voicebox.toml پیکربندی نمایند. این فایل پیکربندی مواردی چون worker_url ،token و تنظیمات صوتی مانند sample_rate = 16000 را تعریف میکند. همچنین کاربران macOS باید دسترسی Accessibility را در مسیر System Settings → Privacy & Security فعال کنند تا قابلیت چسباندن خودکار فعال شود.
شما میتوانید کد کامل این پروژه را در گیتهاب بررسی کنید تا خط لوله تبدیل صوت به متن محلی خود را پیادهسازی نمایید.
گام بعدی شما
- اگر توسعهدهنده Go هستید، ساختار
internal/sttرا بررسی کنید تا متوجه شوید چگونه میتوان مدلهای محلی را جایگزین APIهای ابری کرد. - برای کاهش زمان تایپ در محیطهای تخصصی (مثل Jira یا GitHub)، این ابزار را با تنظیمات TOML شخصیسازی کنید.
- دسترسی AX API در macOS را بررسی کنید تا متوجه شوید ابزارها چگونه محیط گرافیکی شما را «میبینند».
این تنها آغاز ماجراست؛ اثر موجگونهی تبدیل رابطهای چت به میانافزارهای نامرئی را در گزارشهای بعدی بررسی خواهیم کرد.




گفتگو