剪
SNIPS控制台由于Sonos的收购而不再可用。有关更多详细信息,请阅读在狙击论坛上公告。
这剪切语音平台允许用户在不妥协隐私的情况下向其Raspberry Pi设备添加强大的语音助手。它运行100%的设备,不需要互联网连接。它具有热词检测,自动语音识别(ASR),自然语言理解(NLU)和对话管理。
最新文档可以在这里找到:SNIPS平台文档。
剪裁语音平台
安装
可以通过SNIPS APT/DEBIAN存储库安装SNIPS平台。
Sudoapt-get更新Sudoapt-get安装-ydirmngrSudobash-C'echo“ echo” deb https://raspbian.snips.ai/$(lsb_release -cs)稳定的main”> /etc/apt/sources.list.d/snips.list.list'SudoAPT-KEY ADV-Fetch-Keyshttps://raspbian.snips.ai/531dd1a7b702b14d.pubSudoapt-get更新Sudoapt-get安装-ysnips-platform-voice
请注意,如果Keyserver PGP.MIT.EDU下降,请尝试在第四行中使用另一个,例如PGP.Surfnet.nl:
SudoAPT-KEY ADV- Keyserverpgp.surfnet.nl- recv-keysD4F50CDCA10A2849
创建助手
前往折磨控制台创建您的助手。通过单击“下载助手”按钮启动培训并下载。
下一步是让助手在您的设备上工作。解压缩并复制助手
您从Web控制台下载到路径的文件夹。假设您下载了助手
文件夹在您的桌面上,只需运行:
SCP-r〜/桌面/助手[电子邮件保护]:/home/pi/。
现在SSH进入您的Raspberry Pi:
SSH[电子邮件保护]
默认情况下,此命令是SSH[电子邮件保护]
,如果您使用默认的Raspberry Pi主机名。
然后,将助手移至正确的文件夹:
((pi)$Sudo MV/home/pi/pi/assips/usr/share/snips/助理
请注意,如果您已经安装了助手并希望替换它,请首先删除上一个,然后将新的移动移动到位置:
((pi)$sudo rm-r/usr/share/snips/助理((pi)$Sudo MV/home/pi/pi/assips/usr/share/snips/助理
跑步
确保将麦克风插入Raspberry Pi。如果您难以设置音频,我们已经写了一份指南覆盆子Pi麦克风。
通过启动剪辑语音平台狙击 - *
服务:
SudoSystemCTL启动“狙击 - *”
现在,Snips准备从麦克风中获取语音命令。为了触发聆听,只需说
嘿,剪
然后是命令,例如
将灯光放在客厅的绿色
随着STHIPS平台将此查询解析为意图,它将在MQTT上发布,爱马仕/intent/
话题。STHIPS Hom必威是什么e Assistant集成订阅了此主题,并根据定义的规则处理意图configuration.yaml
文件,如下所述。
可选:指定外部MQTT经纪人
默认情况下,Snips运行自己的MQTT经纪人。但是,我们还可以告诉Ships在启动狙击时指定此功能来使用外部经纪人。在这种情况下,我们需要在/etc/snips.toml
配置文件。有关配置此信息的更多信息,请参阅SNIPS平台配置文章。
必威是什么家庭助理配置
指定MQTT经纪人
狙击和家庭助理之间的消息通过MQTT传递。必威是什么如上所述,我们可以指向家庭助理使用的MQTT经纪人,或告诉家庭助理哪个必威是什么MQTT经纪人通过将以下条目添加到configuration.yaml
文件:
mqtt:经纪人:mqtt_broker_ip港口:mqtt_broker_port
默认情况下,SNIPS在端口9898上运行MQTT代理。因此,如果我们想使用此经纪人,并且如果Snips和Home Assistant在同一设备上运行,则该条目将如下:必威是什么
mqtt:经纪人:127.0.0.1港口:9898
另外,如果使用自定义MQTT代理,例如蚊子。
触发动作
在家庭必威是什么助理中,我们触发了基于Snips产生的意图的操作intent_script
零件。例如,以下块处理AActivatelightColor
意图改变浅色:
注意:如果您的狙击操作带有用户名(例如,约翰:游戏机
或者John__playmusic
),在家庭助理中进行的狙击集成将尝试剥离用户名。必威是什么如果有错误,请记住这一点收到未知的意图
即使您在MQTT总线上看到的东西看起来正确。在内部,狙击集成正试图匹配意图的非描述版本(即播放音乐
)。
剪:intent_script:ActivatelightColor:行动:-服务:light.turn_on目标:ENTITY_ID:'光。{{对象集|代替(”“,” _”)}}'数据:color_name:“{{{objectColor}}””
在里面数据
块,我们可以访问与意图的插槽名称相对应的特殊变量。在本案中,ActivatelightColor
有两个插槽,对象集
和objectColor
。
特殊插槽
插槽的几个特殊值siteID
意图起源于意图的概率值,SessionID
通过对话经理生成,slote_name
RAW将包含插槽值的原始,未解释的文本。
在上面的示例中,插槽是普通字符串。但是,SNIPS具有用于设置计时器的持续时间内置值,这将被解析为秒值。
在此示例中,如果我们的意图触发了“设置计时器五分钟”,期间:
将等于300和lisation_raw:
将设置为“五分钟”。该持续时间可以轻松用于触发家庭助理事件和必威是什么lisation_raw:
可以用来发送人类可读的响应或警报。
Settimer:演讲:类型:清楚的文本:“放一种计时器”行动:服务:script.set_timer数据:姓名:“{{{timer_name}}””期间:“{{{timer_duration}}””siteID:“{{{site_id}}””SessionID:“{{{session_id}}””lisation_raw:“{{{RAW_VALUE}}””可能性:“{{{可能性}}””
发送TTS通知
您可以使用TTS通知发送TTS通知snips.say
和snips.say_action
服务。say_action
开始一个会话,然后等待用户响应:“您要我关闭车库门吗?”,“是的,关闭车库门”。
服务片段
服务数据属性 | 选修的 | 描述 |
---|---|---|
文本 |
不 | 要说的文字。 |
site_id |
是的 | 用于开始会话的网站。 |
custom_data |
是的 | 本节中所有消息都包含的自定义数据。 |
服务示例
服务数据属性 | 选修的 | 描述 |
---|---|---|
文本 |
不 | 要说的文字。 |
site_id |
是的 | 用于开始会话的网站。 |
custom_data |
是的 | 本节中所有消息都包含的自定义数据。 |
can_be_enqueed |
是的 | 如果为true,则会等待开放会话结束,如果一个人正在运行,则删除了错误的会话。 |
intent_filter |
是的 | 字符串数组 - 将NLU分辨率限制为第一个查询的意图名称列表。 |
配置示例
打开灯
intent_script:打开灯:演讲:类型:清楚的文本:“好的,转在这光”行动:服务:light.turn_on
打开车库门
intent_script:Opengaragedoor:演讲:类型:清楚的文本:“好的,开场这车库门”行动:-服务:cover.open_cover目标:ENTITY_ID:Garage_door
直接查询
这是一个更复杂的示例。如果车库门打开超过10分钟,则会触发自动化。然后,Snips会问您是否要关闭它,如果您用“关闭车库门”之类的响应,它将这样做。不幸的是,没有内置的支持是,没有回应。
自动化:Garage_door_has_been_open:扳机:-平台:状态ENTITY_ID:binary_sensor.my_garage_door_sensor从:“离开”到:“在”为了:分钟:10顺序:服务:snips.say_action数据:文本:“车库门拥有到过打开10分钟,将你像我到关闭它?”intent_filter:-Closegaragedoor#如果用户在上述通知之后以适当的意图做出响应,则会发出此意图intent_script:Closegaragedoor:演讲:类型:清楚的文本:“好的,关闭这车库门”行动:-服务:script.garage_door_close
天气
因此,现在您可以打开并关闭车库门,让我们检查天气。通过SNIPS技能将天气添加到您的助手。在此示例中创建天气传感器黑暗SK和api_key
在里面Secrets.yaml
文件。
-平台:阴暗的天空姓名:“黑暗的天空天气”api_key:!秘密dark_sky_keyscan_interval:分钟:10监视_conditions:-概括-hourly_summary-温度-温度_max-温度_min
然后将其添加到您的配置文件中。
intent_script:SearchWeatherForecast:演讲:类型:清楚的文本:>天气目前是{{states('sensor.dark_sky_weather_temperature')|(0)}}}外部度和{{states('sensor.dark_sky_weather_summary')}}}。今天的高点将是{{states('sensor.dark_sky_weather_daily_high_high_temperature')|(0)}}}和{{states('sensor.dark_sky_weather_hourly_summary')}}}