macOS companion app
بیدارباش صوتی (macOS)
فعالسازی صوتی و فشار برای صحبت
الزامات
فعالسازی صوتی و فشار برای صحبت به macOS 26 یا جدیدتر نیاز دارند. در نسخههای قدیمیتر macOS، کنترلها از صفحه تنظیمات صدا پنهان میشوند و بهجای آن الزام macOS 26 نمایش داده میشود.
فعالسازی صوتی مستلزم آن است که Apple Speech از تشخیص روی دستگاه برای زبان انتخابشده پشتیبانی کند. وقتی این قرارداد صرفاً محلی در دسترس نباشد، برنامه از شروع شنود غیرفعال واژه بیدارباش خودداری میکند و هرگز به تشخیص شبکهای بازنمیگردد. فشار برای صحبت، حالت مکالمه و دیکته گفتوگوی سریع، اقدامهای صریح کاربر هستند و ممکن است برای پوشش زبانی گستردهتر از سرویسهای شبکهای Apple Speech استفاده کنند.
حالتها
- حالت واژه بیدارباش (پیشفرض): یک تشخیصدهنده گفتار همیشهفعال و روی دستگاه، منتظر توکنهای فعالساز میماند (
swabbleTriggerWords). هنگام تطابق، ضبط را آغاز میکند، همپوشان را با متن جزئی نمایش میدهد و پس از سکوت بهطور خودکار ارسال میکند. - فشار برای صحبت (نگهداشتن Option راست): برای شروع فوری ضبط، کلید Option راست را نگه دارید؛ نیازی به فعالساز نیست. همپوشان تا زمانی که کلید نگه داشته شده باشد نمایش داده میشود؛ رها کردن کلید، ضبط را نهایی میکند و پس از مکثی کوتاه آن را ارسال میکند تا بتوانید متن را ویرایش کنید.
رفتار زمان اجرا (واژه بیدارباش)
- تشخیصدهنده در
VoiceWakeRuntimeقرار دارد. - فعالساز فقط زمانی عمل میکند که بین واژه بیدارباش و واژه بعدی مکث معناداری وجود داشته باشد (
triggerPauseWindow= 0.55s). همپوشان/صدای اعلان میتواند هنگام مکث، حتی پیش از شروع فرمان، فعال شود. - بازههای سکوت: هنگام جریان داشتن گفتار 2.0s (
silenceWindow) و اگر فقط فعالساز شنیده شده باشد 5.0s (triggerOnlySilenceWindow). - توقف قطعی: 120s (
captureHardStop) برای جلوگیری از ادامه مهارنشده نشستها. - فاصله جلوگیری از تکرار میان نشستها: 350ms (
debounceAfterSend) پس از ارسال. - همپوشان از طریق
VoiceWakeOverlayControllerکنترل میشود و متن قطعی/موقت را با رنگهای متفاوت نمایش میدهد. - پس از ارسال، تشخیصدهنده بهصورت پاک بازراهاندازی میشود تا به فعالساز بعدی گوش دهد.
ناورداهای چرخه حیات
- اگر فعالسازی صوتی روشن و مجوزها اعطا شده باشند، تشخیصدهنده واژه بیدارباش، بهجز هنگام ضبط فعال فشار برای صحبت، به شنود ادامه میدهد.
- بستن همپوشان، از جمله بستن دستی با دکمه X، همیشه تشخیصدهنده را از سر میگیرد:
VoiceSessionCoordinator.overlayDidDismissدر تمام مسیرهای بستن،VoiceWakeRuntime.refresh(state:)را فراخوانی میکند. برای مدل نشست/توکن، به همپوشان صوتی مراجعه کنید.
جزئیات فشار برای صحبت
- تشخیص کلید میانبر از یک پایشگر سراسری
.flagsChangedبرای Option راست (keyCode 61+.option) استفاده میکند. این پایشگر فقط رویدادها را مشاهده میکند و هرگز آنها را مسدود نمیکند. - ضبط در
VoicePushToTalkقرار دارد: Speech را بلافاصله آغاز میکند، نتایج جزئی را به همپوشان جریان میدهد و هنگام رهاسازی،VoiceWakeForwarderرا فراخوانی میکند. - شروع فشار برای صحبت، زمان اجرای واژه بیدارباش را متوقف میکند تا از تداخل دریافتهای صوتی جلوگیری شود؛ پس از رهاسازی، بهطور خودکار بازراهاندازی میشود.
- مجوزها: به Microphone + Speech نیاز دارد؛ دریافت رویدادهای کلید به تأیید Accessibility/Input Monitoring نیاز دارد.
- صفحهکلیدهای خارجی: برخی از آنها Option راست را مطابق انتظار ارائه نمیکنند. اگر کاربران از تشخیصندادن گزارش دادند، یک میانبر جایگزین ارائه کنید.
تنظیمات قابل مشاهده برای کاربر
- کلید فعالسازی صوتی: زمان اجرای واژه بیدارباش را فعال میکند.
- نگهداشتن Option راست برای صحبت: پایشگر فشار برای صحبت را فعال میکند.
- اگر زبان انتخابشده در این Mac از تشخیص روی دستگاه پشتیبانی نکند، فعالسازی صوتی غیرفعال میماند، اما فشار برای صحبت و حالت مکالمه همچنان در دسترس خواهند بود.
- انتخابگرهای زبان و میکروفون، سطحسنج زنده، جدول واژههای فعالساز و آزمایشگر (فقط محلی، هرگز ارسال نمیکند).
- اگر دستگاهی قطع شود، انتخابگر میکروفون آخرین انتخاب را حفظ میکند، راهنمای قطع اتصال را نمایش میدهد و تا زمان بازگشت دستگاه، موقتاً از پیشفرض سیستم استفاده میکند.
- صداها: هنگام تشخیص فعالساز و ارسال، صدای اعلان پخش میکند و بهطور پیشفرض از صدای سیستمی "Glass" در macOS استفاده میکند. برای هر رویداد، هر فایل قابلبارگیری با
NSSound(برای مثال MP3/WAV/AIFF) را انتخاب کنید یا بدون صدا را برگزینید.
رفتار ارسال
- هنگام ارسال، اگر کلید نشست فعال WebChat تنظیم شده باشد،
VoiceWakeForwarder.selectedSessionOptionsآن را انتخاب میکند؛ در غیر این صورت، کلید نشست اصلی Gateway را برمیگزیند. - آن نشست را از طریق
sessions.listپیدا میکند و کانال و مقصد تحویل را از زمینه تحویل نشست استخراج میکند (ابتدا با بازگشت به آخرین کانال/مقصد آن و سپس به کلید نشست تجزیهشده) و اگر هیچ موردی یافت نشود، WebChat را بهعنوان پیشفرض در نظر میگیرد. - اگر تحویل ناموفق باشد، خطا ثبت میشود (دسته
voicewake.forward) و اجرا همچنان از طریق گزارشهای WebChat/نشست قابل مشاهده است.
محتوای ارسالی
VoiceWakeForwarder.prefixedTranscript(_:)پیش از رونوشت، یک خط راهنمای دستگاه (نام میزبان شناساییشده، با بازگشت به "این Mac") اضافه میکند که میان مسیرهای واژه بیدارباش و فشار برای صحبت مشترک است.
بررسی سریع
- فشار برای صحبت را روشن کنید، Option راست را نگه دارید، صحبت کنید و سپس رها کنید: همپوشان باید نتایج جزئی را نمایش دهد و سپس ارسال کند.
- هنگام نگهداشتن کلید، گوشهای نوار منو باید بزرگ بمانند (
triggerVoiceEars(ttl: nil))؛ پس از رهاسازی کوچک میشوند.
مرتبط
Was this useful?