Подтвердить что ты не робот

Перехват ввода из утилиты распознавания речи OS X

Этот вопрос следует из OS X Yosemite (10.10) API для непрерывного распознавания речи

OSX теперь имеет превосходное непрерывное распознавание речи. Но, похоже, он не показывает какой-либо API. Я создаю специальный набор HCI, и мне нужно поймать этот речевой ввод, чтобы обработать его.

Как перехватить его?

Моя первая мысль заключалась в том, что он может создать какое-то виртуальное клавиатурное устройство, с помощью которого он отправляет события key-down/key-up. Если бы это было так, я мог бы перехватить с помощью IOKit, но перечисляя свои клавиатурные устройства, он не появляется. Так что это должно быть что-то более высокоуровневое.

Обратите внимание: я добавляю тег "взломать", поскольку, как представляется, нет готового пути - очевидно, что Apple не собиралась предоставлять.

EDIT:
Как использовать DictationServices.framework
Могу ли я использовать распознавание/диктовку OS X 10.8 без графического интерфейса?

4b9b3361

Ответ 1

К сожалению, NSSpeechRecognizer только прослушивает массив команд (я упоминаю это, потому что вы подняли его в связанном вами вопросе). Я просмотрел несколько разных способов захвата ввода, но все они довольно гетто.

Самый популярный способ "перехватить" речь - вызвать команду диктата (fn + fn, если пользователь не изменил ее) и ввести продиктованный текст в текстовое поле. Не совсем элегантный, особенно для набора HCI.

Если вы чувствуете себя frisky, вы можете взглянуть на частную инфраструктуру, DictationServices, но применяются все стандартные предупреждения: отказ в App Store, "Здесь будут драконы" и т.д.