我在手机上使用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不同意,请迁移到最适合的社区。 sub>
答案 0 :(得分:8)
我今天想要同样的功能 - 我让它工作但可以改进:https://youtu.be/VRLGCRrReog
TLDR使用Rogue Amoeba的LoopBack并将Siri的输入Mic改为Loopback。然后在终端中使用Say命令。
答案 1 :(得分:2)
这不是命令行,但更接近......我还没有对它进行测试,但在High Sierra中,有一种方法可以使用辅助功能设置让您使用键盘来询问Siri问题
Enable Type to 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')