通过macOS中的命令行与Siri交互

时间:2016-09-28 23:41:13

标签: macos-sierra siri

我在手机上使用Siri并观察在旅途中创建提醒。当我在办公室时,我不想通过使用Siri打扰安静,因此我通常使用与Reminders应用程序集成的Alfred工作流程,或直接使用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是否会在macOS上向Siri公开任何类型的API,以便通过命令行,系统调用或其他可执行文件发出Siri请求?

注意:据我所知,这个问题可以在Ask Different,超级用户或Unix& amp; Linux操作系统。最后,我决定与API或SDK进行一些程序化集成是最可能的解决方案,因此Stack Overflow似乎是最适合发布的地方。如果mods不同意,请迁移到最适合的社区。

4 个答案:

答案 0 :(得分:8)

我今天想要同样的功能 - 我让它工作但可以改进:https://youtu.be/VRLGCRrReog

TLDR使用Rogue Amoeba的LoopBack并将Siri的输入Mic改为Loopback。然后在终端中使用Say命令。

答案 1 :(得分:2)

这不是命令行,但更接近......我还没有对它进行测试,但在High Sierra中,有一种方法可以使用辅助功能设置让您使用键盘来询问Siri问题

如何启用它:

  • 系统偏好设置>可访问性> Siri的。
  • 点击Enable Type to Siri旁边的框,以便显示勾号。
  • 现在,当您触发Siri时,会出现一个键盘,您可以在其中输入查询。

从这里抓住:https://www.macworld.co.uk/news/mac-software/how-use-siri-on-mac-3536158/

答案 2 :(得分:1)

Cliclick是一款很棒的(免费)工具,可通过命令行触发鼠标和键盘事件。安装Cliclick之后,我启用了“键入Siri”(系统偏好设置>可访问性> Siri)。我还将Siri的键盘快捷方式更改为“按Fn(功能)空格”(系统偏好设置> Siri)。其他键盘快捷键选项要求您“按住”键,虽然可以完成此操作,但这会使操作变得有些棘手。

完成所有操作后,我可以从终端调用Siri,如下所示:

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

再进一步一步,如果您熟悉terminal aliases and functions,则可以创建一个“ siricli”函数:

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

添加该功能后,打开一个新的终端窗口,现在您可以像这样从命令行调用Siri:

siricli "turn on the living room lights"

答案 3 :(得分:0)

如Brad Parks所述,您可以从“辅助功能”菜单中启用“键入Siri”。您可以使用它通过模拟按键与Siri进行交互。

我创建了一个简单的Python脚本,当从命令行调用该脚本时,其行为类似于您的问题中所要求的。

该脚本使用keyboard 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')