macOS companion app
Голосове пробудження (macOS)
Голосове пробудження та «натисни й говори»
Вимоги
Для Голосового пробудження та режиму «натисни й говори» потрібна macOS 26 або новіша. У старіших версіях macOS елементи керування приховано зі сторінки налаштувань голосу, де показано вимогу macOS 26.
Режими
- Режим wake-word (типовий): постійно ввімкнений розпізнавач мовлення очікує тригерні токени (
swabbleTriggerWords). У разі збігу він починає захоплення, показує оверлей із частковим текстом і автоматично надсилає після тиші. - «Натисни й говори» (утримання правої Option): утримуйте праву клавішу Option, щоб одразу почати захоплення — тригер не потрібен. Оверлей з’являється під час утримання; відпускання завершує запис і пересилає після короткої затримки, щоб ви могли підправити текст.
Поведінка під час виконання (wake-word)
- Розпізнавач мовлення працює в
VoiceWakeRuntime. - Тригер спрацьовує лише тоді, коли між wake word і наступним словом є значуща пауза (проміжок приблизно 0,55 с). Оверлей/дзвінок може запуститися на паузі ще до початку команди.
- Вікна тиші: 2,0 с, коли мовлення триває, 5,0 с, якщо було почуто лише тригер.
- Жорстка зупинка: 120 с, щоб запобігти неконтрольованим сеансам.
- Debounce між сеансами: 350 мс.
- Оверлеєм керує
VoiceWakeOverlayControllerіз забарвленням committed/volatile. - Після надсилання розпізнавач чисто перезапускається, щоб слухати наступний тригер.
Інваріанти життєвого циклу
- Якщо Голосове пробудження ввімкнено й дозволи надано, розпізнавач wake-word має слухати (крім часу явного захоплення «натисни й говори»).
- Видимість оверлею (включно з ручним закриттям кнопкою X) ніколи не має перешкоджати відновленню роботи розпізнавача.
Режим збою із застряглим оверлеєм (раніше)
Раніше, якщо оверлей застрягав видимим і ви вручну його закривали, Голосове пробудження могло здаватися «мертвим», бо спробу перезапуску runtime могла заблокувати видимість оверлею, а подальший перезапуск не планувався.
Посилення:
- Перезапуск wake runtime більше не блокується видимістю оверлею.
- Завершення закриття оверлею запускає
VoiceWakeRuntime.refresh(...)черезVoiceSessionCoordinator, тому ручне закриття X завжди відновлює слухання.
Особливості «натисни й говори»
- Виявлення гарячої клавіші використовує глобальний монітор
.flagsChangedдля правої Option (keyCode 61+.option). Ми лише спостерігаємо події (без перехоплення). - Конвеєр захоплення працює в
VoicePushToTalk: негайно запускає Speech, транслює часткові результати в оверлей і викликаєVoiceWakeForwarderпід час відпускання. - Коли запускається «натисни й говори», ми призупиняємо wake-word runtime, щоб уникнути конкуруючих аудіовідводів; він автоматично перезапускається після відпускання.
- Дозволи: потрібні Microphone + Speech; для отримання подій потрібне схвалення Accessibility/Input Monitoring.
- Зовнішні клавіатури: деякі можуть не передавати праву Option очікуваним способом — запропонуйте резервне скорочення, якщо користувачі повідомляють про пропуски.
Налаштування для користувача
- Перемикач Voice Wake: вмикає wake-word runtime.
- Hold Right Option to talk: вмикає монітор «натисни й говори».
- Вибір мови й мікрофона, живий індикатор рівня, таблиця тригерних слів, тестер (лише локально; не пересилає).
- Вибір мікрофона зберігає останній вибір, якщо пристрій від’єднується, показує підказку про від’єднання й тимчасово повертається до системного типового пристрою, доки він не повернеться.
- Звуки: дзвінки під час виявлення тригера та надсилання; типово використовується системний звук macOS «Glass». Для кожної події можна вибрати будь-який файл, який завантажує
NSSound(наприклад, MP3/WAV/AIFF), або вибрати Без звуку.
Поведінка пересилання
- Коли Голосове пробудження ввімкнено, транскрипти пересилаються активному Gateway/агенту (той самий локальний чи віддалений режим, який використовує решта застосунку для Mac).
- Відповіді доставляються до останнього використаного основного провайдера (WhatsApp/Telegram/Discord/WebChat). Якщо доставка не вдається, помилка записується в журнал, а запуск усе одно видно через WebChat/журнали сеансу.
Корисне навантаження пересилання
VoiceWakeForwarder.prefixedTranscript(_:)додає підказку про машину перед надсиланням. Спільне для шляхів wake-word і «натисни й говори».
Швидка перевірка
- Увімкніть «натисни й говори», утримуйте праву Option, говоріть, відпустіть: оверлей має показати часткові результати, а потім надіслати.
- Під час утримання вуха в рядку меню мають залишатися збільшеними (використовує
triggerVoiceEars(ttl:nil)); вони зменшуються після відпускання.
Пов’язано
Was this useful?