macOS companion app

بیدارسازی صوتی (macOS)

بیدارباش صوتی و فشار برای صحبت

حالت‌ها

  • حالت واژهٔ بیدارباش (پیش‌فرض): تشخیص‌گر گفتار همیشه روشن منتظر توکن‌های محرک (swabbleTriggerWords) می‌ماند. در صورت تطابق، ضبط را شروع می‌کند، هم‌پوشانی را با متن جزئی نشان می‌دهد، و پس از سکوت به‌صورت خودکار ارسال می‌کند.
  • فشار برای صحبت (نگه‌داشتن Option راست): کلید Option راست را نگه دارید تا ضبط بلافاصله شروع شود، بدون نیاز به محرک. هم‌پوشانی هنگام نگه‌داشتن ظاهر می‌شود؛ رها کردن، متن را نهایی می‌کند و پس از تأخیری کوتاه آن را ارسال می‌کند تا بتوانید متن را کمی اصلاح کنید.

رفتار زمان اجرا (واژهٔ بیدارباش)

  • تشخیص‌گر گفتار در VoiceWakeRuntime قرار دارد.
  • محرک فقط وقتی فعال می‌شود که بین واژهٔ بیدارباش و واژهٔ بعدی یک مکث معنادار وجود داشته باشد (فاصلهٔ حدود 0.55 ثانیه). هم‌پوشانی/زنگ می‌تواند در زمان مکث، حتی پیش از شروع فرمان، آغاز شود.
  • پنجره‌های سکوت: 2.0 ثانیه وقتی گفتار در جریان است، 5.0 ثانیه اگر فقط محرک شنیده شده باشد.
  • توقف سخت: 120 ثانیه برای جلوگیری از نشست‌های مهارنشده.
  • حذف جهش بین نشست‌ها: 350 میلی‌ثانیه.
  • هم‌پوشانی از طریق VoiceWakeOverlayController با رنگ‌بندی ثبت‌شده/ناپایدار کنترل می‌شود.
  • پس از ارسال، تشخیص‌گر به‌صورت تمیز دوباره شروع می‌شود تا برای محرک بعدی گوش کند.

ناوردایی‌های چرخهٔ عمر

  • اگر بیدارباش صوتی فعال باشد و مجوزها داده شده باشند، تشخیص‌گر واژهٔ بیدارباش باید در حال گوش‌دادن باشد (به‌جز هنگام ضبط صریح فشار برای صحبت).
  • نمایان‌بودن هم‌پوشانی (از جمله بستن دستی با دکمهٔ X) هرگز نباید مانع از ازسرگیری تشخیص‌گر شود.

حالت خرابی هم‌پوشانی چسبیده (قبلی)

پیش‌تر، اگر هم‌پوشانی در حالت نمایان گیر می‌کرد و شما آن را دستی می‌بستید، بیدارباش صوتی ممکن بود «از کار افتاده» به نظر برسد، چون تلاش زمان اجرا برای راه‌اندازی مجدد می‌توانست به دلیل نمایان‌بودن هم‌پوشانی مسدود شود و راه‌اندازی مجدد بعدی هم زمان‌بندی نشده بود.

سخت‌سازی:

  • راه‌اندازی مجدد زمان اجرای بیدارباش دیگر با نمایان‌بودن هم‌پوشانی مسدود نمی‌شود.
  • تکمیل بستن هم‌پوشانی از طریق VoiceSessionCoordinator یک VoiceWakeRuntime.refresh(...) را فعال می‌کند، بنابراین بستن دستی با X همیشه گوش‌دادن را از سر می‌گیرد.

جزئیات فشار برای صحبت

  • تشخیص کلید میان‌بر از یک پایش‌گر سراسری .flagsChanged برای Option راست (keyCode 61 + .option) استفاده می‌کند. ما فقط رویدادها را مشاهده می‌کنیم (بدون بلعیدن آن‌ها).
  • خط لولهٔ ضبط در VoicePushToTalk قرار دارد: گفتار را بلافاصله شروع می‌کند، بخش‌های جزئی را به هم‌پوشانی جریان می‌دهد، و هنگام رها کردن VoiceWakeForwarder را فراخوانی می‌کند.
  • وقتی فشار برای صحبت شروع می‌شود، زمان اجرای واژهٔ بیدارباش را مکث می‌کنیم تا از رقابت tapهای صوتی جلوگیری شود؛ پس از رها کردن، به‌صورت خودکار دوباره شروع می‌شود.
  • مجوزها: به میکروفون + گفتار نیاز دارد؛ دیدن رویدادها به تأیید Accessibility/Input Monitoring نیاز دارد.
  • صفحه‌کلیدهای خارجی: برخی ممکن است Option راست را مطابق انتظار ارائه نکنند؛ اگر کاربران از از‌دست‌رفتن رویدادها گزارش دادند، یک میان‌بر جایگزین ارائه کنید.

تنظیمات روبه‌روی کاربر

  • کلید بیدارباش صوتی: زمان اجرای واژهٔ بیدارباش را فعال می‌کند.
  • برای صحبت، Cmd+Fn را نگه دارید: پایش‌گر فشار برای صحبت را فعال می‌کند. روی macOS < 26 غیرفعال است.
  • انتخاب‌گرهای زبان و میکروفون، سطح‌سنج زنده، جدول واژه‌های محرک، آزمایش‌گر (فقط محلی؛ ارسال نمی‌کند).
  • انتخاب‌گر میکروفون اگر دستگاهی قطع شود آخرین انتخاب را حفظ می‌کند، یک راهنمای قطع‌شده نشان می‌دهد، و تا زمان بازگشت دستگاه موقتاً به پیش‌فرض سیستم برمی‌گردد.
  • صداها: هنگام تشخیص محرک و هنگام ارسال زنگ می‌زند؛ پیش‌فرض، صدای سیستمی «Glass» در macOS است. برای هر رویداد می‌توانید هر فایل قابل بارگذاری با NSSound (مثلاً MP3/WAV/AIFF) را انتخاب کنید یا بدون صدا را برگزینید.

رفتار ارسال

  • وقتی بیدارباش صوتی فعال است، رونوشت‌ها به Gateway/عامل فعال ارسال می‌شوند (همان حالت محلی در برابر راه‌دور که بقیهٔ برنامهٔ مک استفاده می‌کند).
  • پاسخ‌ها به آخرین ارائه‌دهندهٔ اصلی استفاده‌شده (WhatsApp/Telegram/Discord/WebChat) تحویل داده می‌شوند. اگر تحویل ناموفق باشد، خطا ثبت می‌شود و اجرا همچنان از طریق WebChat/لاگ‌های نشست قابل مشاهده است.

محمولهٔ ارسال

  • VoiceWakeForwarder.prefixedTranscript(_:) پیش از ارسال، راهنمای ماشین را به ابتدای متن اضافه می‌کند. بین مسیرهای واژهٔ بیدارباش و فشار برای صحبت مشترک است.

راستی‌آزمایی سریع

  • فشار برای صحبت را روشن کنید، Cmd+Fn را نگه دارید، صحبت کنید، رها کنید: هم‌پوشانی باید بخش‌های جزئی را نشان دهد و سپس ارسال کند.
  • هنگام نگه‌داشتن، گوش‌های نوار منو باید بزرگ‌شده باقی بمانند (از triggerVoiceEars(ttl:nil) استفاده می‌کند)؛ پس از رها کردن پایین می‌آیند.

مرتبط