Взаимодействие с Siri через командную строку в macOS

Я использую Siri на своем телефоне и слежу за созданием напоминаний на ходу. Когда я нахожусь в офисе, я не хочу нарушать спокойствие, используя Siri, поэтому я обычно использую рабочий процесс Alfred, интегрированный с приложением Reminders, или напрямую использую приложение Reminders.

Однако оба имеют довольно неуклюжий интерфейс, и было бы намного проще, если бы я мог просто ввести в командной строке:

$ siri "remind me to check stack overflow for responses to my question in 15 minutes"

macOS Sierra представила Siri на рабочем столе, но до сих пор мне не удалось найти способ взаимодействовать с Siri каким-либо образом, кроме как в буквальном смысле слова, и Spotlight не соответствует Siri с естественным пониманием языка.

Apple объявила о выпуске Siri SDK, но, похоже, в основном это связано с добавлением функций Siri, а не для демонстрации Siri API.

Является ли Apple выставлять какой-либо API для Siri на macOS, чтобы можно было запросить Siri через командную строку, системный вызов или другой исполняемый файл?

Примечание. Я понимаю, что этот вопрос мог бы найти лучший дом в Ask Different, Super User или Unix & Linux.В конце концов, я решил, что наиболее вероятным решением является некоторая программная интеграция с API или SDK, и, таким образом, Qaru представляется наиболее подходящим местом для публикации.Если моды не согласны, пожалуйста, выполните миграцию в зависимости от того, какое сообщество лучше.

Ответ 1

Это не из командной строки, а ближе... и я ее не тестировал, но в High Sierra есть способ использовать настройки специальных возможностей, чтобы вы могли использовать клавиатуру, чтобы задать вопросы Siri.

Как включить его:

  • Системные настройки> Доступность> Siri.
  • Нажмите в поле рядом с " Enable Type to Siri чтобы появился галочка.
  • Теперь, когда вы запускаете Siri, появится клавиатура, в которую вы можете ввести свой запрос.

Застрял отсюда: https://www.macworld.co.uk/news/mac-software/how-use-siri-on-mac-3536158/

Ответ 2

Сегодня мне нужна такая же функция - я получил ее, но ее можно улучшить: https://youtu.be/VRLGCRrReog

TL;DR использует LoopBack от Rogue Amoeba и меняет вход Mic Mic на Loopback. Затем используйте команду Say в терминале, например.

Ответ 3

Как упомянул Брэд Паркс, вы можете включить "Type to Siri" из меню "Доступность". Вы можете использовать это для взаимодействия с Siri, используя симулированные нажатия клавиш.

Я создал простой скрипт на Python, который при вызове из командной строки ведет себя так, как запрашивается в вашем вопросе.

В скрипте используется клавиатурный модуль Python.

#!/usr/bin/python
import sys
import time
import keyboard

def trigger_siri():
    keyboard.press('command+space')
    time.sleep(0.3)
    keyboard.release('command+space')
    time.sleep(0.2)  # Wait for Siri to load

if __name__=='__main__':
    trigger_siri()
    keyboard.write(sys.argv[1])
    keyboard.send('enter')

Ответ 4

Клик - отличный (и бесплатный) инструмент для запуска событий мыши и клавиатуры через командную строку. После установки Cliclick я включил "Тип Siri" (Системные настройки> Специальные возможности> Siri). Я также изменил сочетание клавиш Siri на "Нажмите клавишу Fn (Функция)" (Системные настройки> Siri). Другие варианты сочетания клавиш требуют, чтобы вы "держали" клавишу, что можно сделать, но это несколько усложняет ситуацию.

После всего этого я могу вызвать Сири из терминала примерно так:

$ cliclick kd:fn kp:space ku:fn w:250 t:"turn on the living room lights" kp:return

Если пойти дальше, если вы знакомы с псевдонимами и функциями терминала, вы можете создать функцию "siricli":

siricli(){
    cliclick kd:fn kp:space ku:fn w:250 t:"$1" kp:return
}

Откройте новое окно терминала после добавления этой функции, и теперь вы можете вызывать Siri из командной строки следующим образом:

siricli "turn on the living room lights"