macOS companion app
Голосова активація (macOS)
Голосова активація та режим «натисни й говори»
Вимоги
Для голосової активації та режиму «натисни й говори» потрібна macOS 26 або новіша. У старіших версіях macOS елементи керування приховано зі сторінки налаштувань голосу, а замість них відображається вимога щодо macOS 26.
Режими
- Режим слова активації (типово): постійно активний розпізнавач мовлення очікує на слова активації (
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: розпізнавання мовлення запускається негайно, проміжні результати передаються до накладки, а після відпускання викликаєтьсяVoiceWakeForwarder. - Запуск режиму «натисни й говори» призупиняє середовище виконання слова активації, щоб уникнути одночасного захоплення аудіо; після відпускання воно автоматично перезапускається.
- Дозволи: потрібен доступ до мікрофона й розпізнавання мовлення; для отримання подій клавіатури потрібен дозвіл Accessibility/Input Monitoring.
- Зовнішні клавіатури: деякі з них не розпізнають праву клавішу Option належним чином. Якщо користувачі повідомляють про пропущені спрацьовування, запропонуйте резервне сполучення клавіш.
Налаштування для користувача
- Перемикач Голосова активація: вмикає середовище виконання слова активації.
- Утримуйте праву клавішу Option, щоб говорити: вмикає монітор режиму «натисни й говори».
- Засоби вибору мови й мікрофона, індикатор рівня в реальному часі, таблиця слів активації та засіб перевірки, який працює лише локально й ніколи нічого не пересилає.
- Засіб вибору мікрофона зберігає останній вибір після від’єднання пристрою, показує повідомлення про від’єднання й тимчасово використовує системний мікрофон за замовчуванням, доки пристрій не під’єднається знову.
- Звуки: звукові сигнали під час виявлення слова активації та надсилання; типово використовується системний звук macOS "Glass". Для кожної події можна вибрати будь-який файл, який завантажується через
NSSound(наприклад, MP3/WAV/AIFF), або вибрати Без звуку.
Поведінка пересилання
- Під час пересилання
VoiceWakeForwarder.selectedSessionOptionsвибирає ключ активного сеансу WebChat, якщо його задано, або головний ключ сеансу Gateway. - Система знаходить цей сеанс через
sessions.listі визначає канал та ціль доставки з контексту доставки сеансу, а якщо це неможливо — використовує останній канал і ціль, а потім розібраний ключ сеансу. Якщо нічого визначити не вдається, типово використовується WebChat. - Якщо доставка завершується помилкою, її записують у журнал (категорія
voicewake.forward), а виконання все одно можна переглянути в журналах WebChat або сеансу.
Корисне навантаження пересилання
VoiceWakeForwarder.prefixedTranscript(_:)додає перед транскриптом рядок-підказку для машини (визначене ім’я хоста або "цей Mac", якщо його не вдалося визначити); цей рядок спільний для шляхів слова активації та режиму «натисни й говори».
Швидка перевірка
- Увімкніть режим «натисни й говори», утримуйте праву клавішу Option, промовте фразу й відпустіть клавішу: накладка має показати проміжні результати, а потім надіслати текст.
- Під час утримання клавіші значок вух у рядку меню має залишатися збільшеним (
triggerVoiceEars(ttl: nil)); після відпускання він зменшується.
Пов’язані матеріали
Was this useful?